Skip to content

Commit

Permalink
schema: allow ANNOTATIONs attached to METHOD_REFs (#1731)
Browse files Browse the repository at this point in the history
  • Loading branch information
ursachec authored Aug 16, 2023
1 parent 09fe047 commit f68a818
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ class Annotation(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/
*/
def _methodParameterInViaAstIn: overflowdb.traversal.Traversal[MethodParameterIn] = get()._methodParameterInViaAstIn

/** Traverse to METHOD_REF via AST IN edge.
*/
def _methodRefViaAstIn: overflowdb.traversal.Traversal[MethodRef] = get()._methodRefViaAstIn

/** Traverse to TYPE_DECL via AST IN edge.
*/
def _typeDeclViaAstIn: overflowdb.traversal.Traversal[TypeDecl] = get()._typeDeclViaAstIn
Expand Down Expand Up @@ -273,7 +277,8 @@ class AnnotationDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit
def _methodViaAstIn: overflowdb.traversal.Traversal[Method] = astIn.collectAll[Method]
def _methodParameterInViaAstIn: overflowdb.traversal.Traversal[MethodParameterIn] =
astIn.collectAll[MethodParameterIn]
def _typeDeclViaAstIn: overflowdb.traversal.Traversal[TypeDecl] = astIn.collectAll[TypeDecl]
def _methodRefViaAstIn: overflowdb.traversal.Traversal[MethodRef] = astIn.collectAll[MethodRef]
def _typeDeclViaAstIn: overflowdb.traversal.Traversal[TypeDecl] = astIn.collectAll[TypeDecl]

def cfgIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](3)
override def _cfgIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](3)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ object MethodRef {
PropertyNames.allAsJava,
List(
io.shiftleft.codepropertygraph.generated.edges.Argument.layoutInformation,
io.shiftleft.codepropertygraph.generated.edges.Ast.layoutInformation,
io.shiftleft.codepropertygraph.generated.edges.Capture.layoutInformation,
io.shiftleft.codepropertygraph.generated.edges.Cdg.layoutInformation,
io.shiftleft.codepropertygraph.generated.edges.Cfg.layoutInformation,
Expand Down Expand Up @@ -88,6 +89,7 @@ object MethodRef {
object Edges {
val Out: Array[String] = Array(
"ARGUMENT",
"AST",
"CAPTURE",
"CDG",
"CFG",
Expand Down Expand Up @@ -166,6 +168,13 @@ class MethodRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/b
def argumentOut: Iterator[TemplateDom] = get().argumentOut
override def _argumentOut = get()._argumentOut

def astOut: Iterator[Annotation] = get().astOut
override def _astOut = get()._astOut

/** Traverse to ANNOTATION via AST OUT edge.
*/
def _annotationViaAstOut: overflowdb.traversal.Traversal[Annotation] = get()._annotationViaAstOut

def captureOut: Iterator[ClosureBinding] = get().captureOut
override def _captureOut = get()._captureOut

Expand Down Expand Up @@ -772,13 +781,17 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def argumentOut: Iterator[TemplateDom] = createAdjacentNodeScalaIteratorByOffSet[TemplateDom](0)
override def _argumentOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](0)

def captureOut: Iterator[ClosureBinding] = createAdjacentNodeScalaIteratorByOffSet[ClosureBinding](1)
override def _captureOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](1)
def astOut: Iterator[Annotation] = createAdjacentNodeScalaIteratorByOffSet[Annotation](1)
override def _astOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](1)
def _annotationViaAstOut: overflowdb.traversal.Traversal[Annotation] = astOut.collectAll[Annotation]

def captureOut: Iterator[ClosureBinding] = createAdjacentNodeScalaIteratorByOffSet[ClosureBinding](2)
override def _captureOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](2)
def _closureBindingViaCaptureOut: overflowdb.traversal.Traversal[ClosureBinding] =
captureOut.collectAll[ClosureBinding]

def cdgOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](2)
override def _cdgOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](2)
def cdgOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](3)
override def _cdgOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](3)
def _blockViaCdgOut: overflowdb.traversal.Traversal[Block] = cdgOut.collectAll[Block]
def _callViaCdgOut: overflowdb.traversal.Traversal[Call] = cdgOut.collectAll[Call]
def _controlStructureViaCdgOut: overflowdb.traversal.Traversal[ControlStructure] = cdgOut.collectAll[ControlStructure]
Expand All @@ -792,13 +805,13 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaCdgOut: overflowdb.traversal.Traversal[TypeRef] = cdgOut.collectAll[TypeRef]
def _unknownViaCdgOut: overflowdb.traversal.Traversal[Unknown] = cdgOut.collectAll[Unknown]

def cfgOut: Iterator[AstNode] = createAdjacentNodeScalaIteratorByOffSet[AstNode](3)
override def _cfgOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](3)
def cfgOut: Iterator[AstNode] = createAdjacentNodeScalaIteratorByOffSet[AstNode](4)
override def _cfgOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](4)
def _cfgNodeViaCfgOut: overflowdb.traversal.Traversal[CfgNode] = cfgOut.collectAll[CfgNode]
def _methodReturnViaCfgOut: overflowdb.traversal.Traversal[MethodReturn] = cfgOut.collectAll[MethodReturn]

def dominateOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](4)
override def _dominateOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](4)
def dominateOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](5)
override def _dominateOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](5)
def _blockViaDominateOut: overflowdb.traversal.Traversal[Block] = dominateOut.collectAll[Block]
def _callViaDominateOut: overflowdb.traversal.Traversal[Call] = dominateOut.collectAll[Call]
def _controlStructureViaDominateOut: overflowdb.traversal.Traversal[ControlStructure] =
Expand All @@ -814,12 +827,12 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaDominateOut: overflowdb.traversal.Traversal[TypeRef] = dominateOut.collectAll[TypeRef]
def _unknownViaDominateOut: overflowdb.traversal.Traversal[Unknown] = dominateOut.collectAll[Unknown]

def evalTypeOut: Iterator[Type] = createAdjacentNodeScalaIteratorByOffSet[Type](5)
override def _evalTypeOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](5)
def evalTypeOut: Iterator[Type] = createAdjacentNodeScalaIteratorByOffSet[Type](6)
override def _evalTypeOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](6)
def _typeViaEvalTypeOut: overflowdb.traversal.Traversal[Type] = evalTypeOut.collectAll[Type]

def postDominateOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](6)
override def _postDominateOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](6)
def postDominateOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](7)
override def _postDominateOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](7)
def _blockViaPostDominateOut: overflowdb.traversal.Traversal[Block] = postDominateOut.collectAll[Block]
def _callViaPostDominateOut: overflowdb.traversal.Traversal[Call] = postDominateOut.collectAll[Call]
def _controlStructureViaPostDominateOut: overflowdb.traversal.Traversal[ControlStructure] =
Expand All @@ -835,8 +848,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaPostDominateOut: overflowdb.traversal.Traversal[TypeRef] = postDominateOut.collectAll[TypeRef]
def _unknownViaPostDominateOut: overflowdb.traversal.Traversal[Unknown] = postDominateOut.collectAll[Unknown]

def reachingDefOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](7)
override def _reachingDefOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](7)
def reachingDefOut: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](8)
override def _reachingDefOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](8)
def _callViaReachingDefOut: overflowdb.traversal.Traversal[Call] = reachingDefOut.collectAll[Call]
def _identifierViaReachingDefOut: overflowdb.traversal.Traversal[Identifier] = reachingDefOut.collectAll[Identifier]
def _literalViaReachingDefOut: overflowdb.traversal.Traversal[Literal] = reachingDefOut.collectAll[Literal]
Expand All @@ -846,8 +859,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _returnViaReachingDefOut: overflowdb.traversal.Traversal[Return] = reachingDefOut.collectAll[Return]
def _typeRefViaReachingDefOut: overflowdb.traversal.Traversal[TypeRef] = reachingDefOut.collectAll[TypeRef]

def refOut: Iterator[Method] = createAdjacentNodeScalaIteratorByOffSet[Method](8)
override def _refOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](8)
def refOut: Iterator[Method] = createAdjacentNodeScalaIteratorByOffSet[Method](9)
override def _refOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](9)
def referencedMethod: Method = try { refOut.collectAll[Method].next() }
catch {
case e: java.util.NoSuchElementException =>
Expand All @@ -857,17 +870,17 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
)
}

def taggedByOut: Iterator[Tag] = createAdjacentNodeScalaIteratorByOffSet[Tag](9)
override def _taggedByOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](9)
def taggedByOut: Iterator[Tag] = createAdjacentNodeScalaIteratorByOffSet[Tag](10)
override def _taggedByOut = createAdjacentNodeScalaIteratorByOffSet[StoredNode](10)
def _tagViaTaggedByOut: overflowdb.traversal.Traversal[Tag] = taggedByOut.collectAll[Tag]

def argumentIn: Iterator[Expression] = createAdjacentNodeScalaIteratorByOffSet[Expression](10)
override def _argumentIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](10)
def argumentIn: Iterator[Expression] = createAdjacentNodeScalaIteratorByOffSet[Expression](11)
override def _argumentIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](11)
def _callViaArgumentIn: Option[Call] = argumentIn.collectAll[Call].nextOption()
def _returnViaArgumentIn: Option[Return] = argumentIn.collectAll[Return].nextOption()

def astIn: Iterator[Expression] = createAdjacentNodeScalaIteratorByOffSet[Expression](11)
override def _astIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](11)
def astIn: Iterator[Expression] = createAdjacentNodeScalaIteratorByOffSet[Expression](12)
override def _astIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](12)
def _blockViaAstIn: overflowdb.traversal.Traversal[Block] = astIn.collectAll[Block]
def _callViaAstIn: overflowdb.traversal.Traversal[Call] = astIn.collectAll[Call]
def _controlStructureViaAstIn: ControlStructure = try { astIn.collectAll[ControlStructure].next() }
Expand All @@ -880,8 +893,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
}
def _returnViaAstIn: overflowdb.traversal.Traversal[Return] = astIn.collectAll[Return]

def cdgIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](12)
override def _cdgIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](12)
def cdgIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](13)
override def _cdgIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](13)
def _blockViaCdgIn: overflowdb.traversal.Traversal[Block] = cdgIn.collectAll[Block]
def _callViaCdgIn: overflowdb.traversal.Traversal[Call] = cdgIn.collectAll[Call]
def _controlStructureViaCdgIn: overflowdb.traversal.Traversal[ControlStructure] = cdgIn.collectAll[ControlStructure]
Expand All @@ -893,20 +906,20 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaCdgIn: overflowdb.traversal.Traversal[TypeRef] = cdgIn.collectAll[TypeRef]
def _unknownViaCdgIn: overflowdb.traversal.Traversal[Unknown] = cdgIn.collectAll[Unknown]

def cfgIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](13)
override def _cfgIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](13)
def cfgIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](14)
override def _cfgIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](14)

def conditionIn: Iterator[ControlStructure] = createAdjacentNodeScalaIteratorByOffSet[ControlStructure](14)
override def _conditionIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](14)
def conditionIn: Iterator[ControlStructure] = createAdjacentNodeScalaIteratorByOffSet[ControlStructure](15)
override def _conditionIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](15)
def _controlStructureViaConditionIn: overflowdb.traversal.Traversal[ControlStructure] =
conditionIn.collectAll[ControlStructure]

def containsIn: Iterator[Method] = createAdjacentNodeScalaIteratorByOffSet[Method](15)
override def _containsIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](15)
def containsIn: Iterator[Method] = createAdjacentNodeScalaIteratorByOffSet[Method](16)
override def _containsIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](16)
def _methodViaContainsIn: overflowdb.traversal.Traversal[Method] = containsIn.collectAll[Method]

def dominateIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](16)
override def _dominateIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](16)
def dominateIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](17)
override def _dominateIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](17)
def _blockViaDominateIn: overflowdb.traversal.Traversal[Block] = dominateIn.collectAll[Block]
def _callViaDominateIn: overflowdb.traversal.Traversal[Call] = dominateIn.collectAll[Call]
def _controlStructureViaDominateIn: overflowdb.traversal.Traversal[ControlStructure] =
Expand All @@ -922,8 +935,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaDominateIn: overflowdb.traversal.Traversal[TypeRef] = dominateIn.collectAll[TypeRef]
def _unknownViaDominateIn: overflowdb.traversal.Traversal[Unknown] = dominateIn.collectAll[Unknown]

def postDominateIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](17)
override def _postDominateIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](17)
def postDominateIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](18)
override def _postDominateIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](18)
def _blockViaPostDominateIn: overflowdb.traversal.Traversal[Block] = postDominateIn.collectAll[Block]
def _callViaPostDominateIn: overflowdb.traversal.Traversal[Call] = postDominateIn.collectAll[Call]
def _controlStructureViaPostDominateIn: overflowdb.traversal.Traversal[ControlStructure] =
Expand All @@ -940,8 +953,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaPostDominateIn: overflowdb.traversal.Traversal[TypeRef] = postDominateIn.collectAll[TypeRef]
def _unknownViaPostDominateIn: overflowdb.traversal.Traversal[Unknown] = postDominateIn.collectAll[Unknown]

def reachingDefIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](18)
override def _reachingDefIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](18)
def reachingDefIn: Iterator[CfgNode] = createAdjacentNodeScalaIteratorByOffSet[CfgNode](19)
override def _reachingDefIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](19)
def _blockViaReachingDefIn: overflowdb.traversal.Traversal[Block] = reachingDefIn.collectAll[Block]
def _callViaReachingDefIn: overflowdb.traversal.Traversal[Call] = reachingDefIn.collectAll[Call]
def _controlStructureViaReachingDefIn: overflowdb.traversal.Traversal[ControlStructure] =
Expand All @@ -958,8 +971,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with
def _typeRefViaReachingDefIn: overflowdb.traversal.Traversal[TypeRef] = reachingDefIn.collectAll[TypeRef]
def _unknownViaReachingDefIn: overflowdb.traversal.Traversal[Unknown] = reachingDefIn.collectAll[Unknown]

def receiverIn: Iterator[Call] = createAdjacentNodeScalaIteratorByOffSet[Call](19)
override def _receiverIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](19)
def receiverIn: Iterator[Call] = createAdjacentNodeScalaIteratorByOffSet[Call](20)
override def _receiverIn = createAdjacentNodeScalaIteratorByOffSet[StoredNode](20)
def _callViaReceiverIn: Option[Call] = receiverIn.collectAll[Call].nextOption()

override def label: String = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ object Annotation extends SchemaBase {
methodParameterIn
.addOutEdge(edge = ast, inNode = annotation)

methodRef
.addOutEdge(edge = ast, inNode = annotation)

typeDecl
.addOutEdge(edge = ast, inNode = annotation)

Expand Down

0 comments on commit f68a818

Please sign in to comment.