From d83d4a6460f303be5ddd57a06a0d34de98062037 Mon Sep 17 00:00:00 2001 From: David Baker Effendi Date: Sun, 23 Jul 2023 04:17:47 +0200 Subject: [PATCH 1/2] Introduce `POSSIBLE_TYPES` property for approximate type recovery This new property provides no guantee of correctness and is the property to use for `may`-style type recovery. Resolves #1721 --- .../generated/Properties.java | 6 +- .../generated/PropertyNames.java | 6 +- .../generated/nodes/Block.scala | 63 ++- .../generated/nodes/Call.scala | 59 ++- .../generated/nodes/Identifier.scala | 125 +++-- .../generated/nodes/Literal.scala | 63 ++- .../generated/nodes/Local.scala | 65 ++- .../generated/nodes/Member.scala | 55 +- .../generated/nodes/MethodParameterIn.scala | 50 +- .../generated/nodes/MethodRef.scala | 121 +++-- .../generated/nodes/MethodReturn.scala | 61 ++- .../generated/nodes/NewNodes.scala | 484 +++++++++++------- .../generated/nodes/TypeRef.scala | 63 ++- .../generated/nodes/Unknown.scala | 49 +- .../generated/traversal/Block.scala | 4 + .../generated/traversal/Call.scala | 4 + .../generated/traversal/Identifier.scala | 4 + .../generated/traversal/Literal.scala | 4 + .../generated/traversal/Local.scala | 4 + .../generated/traversal/Member.scala | 4 + .../traversal/MethodParameterIn.scala | 4 + .../generated/traversal/MethodRef.scala | 4 + .../generated/traversal/MethodReturn.scala | 4 + .../generated/traversal/TypeRef.scala | 4 + .../generated/traversal/Unknown.scala | 4 + .../codepropertygraph/schema/Hidden.scala | 34 +- 26 files changed, 973 insertions(+), 375 deletions(-) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/Properties.java b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/Properties.java index 4f7ccc516..06b6e1caf 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/Properties.java +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/Properties.java @@ -89,7 +89,7 @@ runtime as it may depend on the type of an object (as is the case for virtual me calls) or calculation of an offset. */ public static final overflowdb.PropertyKey DISPATCH_TYPE = new overflowdb.PropertyKey<>("DISPATCH_TYPE"); -/** Type hint for the dynamic type */ +/** Type hint for the dynamic type. These are observed to be verifiable at runtime. */ public static final overflowdb.PropertyKey> DYNAMIC_TYPE_HINT_FULL_NAME = new overflowdb.PropertyKey<>("DYNAMIC_TYPE_HINT_FULL_NAME"); /** For formal method input parameters, output parameters, and return parameters, @@ -219,6 +219,9 @@ it is referenced but not defined in the code (applies both to insular /** AST node type name emitted by parser. */ public static final overflowdb.PropertyKey PARSER_TYPE_NAME = new overflowdb.PropertyKey<>("PARSER_TYPE_NAME"); +/** Similar to `DYNAMIC_TYPE_HINT_FULL_NAME`, but that this makes no guarantee that types within this property are correct. This property is used to capture observations between node interactions during a 'may-analysis'. */ +public static final overflowdb.PropertyKey> POSSIBLE_TYPES = new overflowdb.PropertyKey<>("POSSIBLE_TYPES"); + /** The path to the root directory of the source/binary this CPG is generated from. */ public static final overflowdb.PropertyKey ROOT = new overflowdb.PropertyKey<>("ROOT"); @@ -301,6 +304,7 @@ it is referenced but not defined in the code (applies both to insular add(OVERLAYS); add(PACKAGE_NAME); add(PARSER_TYPE_NAME); +add(POSSIBLE_TYPES); add(ROOT); add(SIGNATURE); add(SYMBOL); diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/PropertyNames.java b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/PropertyNames.java index 8273ff31a..84463fa73 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/PropertyNames.java +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/PropertyNames.java @@ -89,7 +89,7 @@ runtime as it may depend on the type of an object (as is the case for virtual me calls) or calculation of an offset. */ public static final String DISPATCH_TYPE = "DISPATCH_TYPE"; -/** Type hint for the dynamic type */ +/** Type hint for the dynamic type. These are observed to be verifiable at runtime. */ public static final String DYNAMIC_TYPE_HINT_FULL_NAME = "DYNAMIC_TYPE_HINT_FULL_NAME"; /** For formal method input parameters, output parameters, and return parameters, @@ -219,6 +219,9 @@ it is referenced but not defined in the code (applies both to insular /** AST node type name emitted by parser. */ public static final String PARSER_TYPE_NAME = "PARSER_TYPE_NAME"; +/** Similar to `DYNAMIC_TYPE_HINT_FULL_NAME`, but that this makes no guarantee that types within this property are correct. This property is used to capture observations between node interactions during a 'may-analysis'. */ +public static final String POSSIBLE_TYPES = "POSSIBLE_TYPES"; + /** The path to the root directory of the source/binary this CPG is generated from. */ public static final String ROOT = "ROOT"; @@ -301,6 +304,7 @@ it is referenced but not defined in the code (applies both to insular add(OVERLAYS); add(PACKAGE_NAME); add(PARSER_TYPE_NAME); +add(POSSIBLE_TYPES); add(ROOT); add(SIGNATURE); add(SYMBOL); diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Block.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Block.scala index a8f79055b..ec4cd38f0 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Block.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Block.scala @@ -16,9 +16,19 @@ object Block { val DynamicTypeHintFullName = "DYNAMIC_TYPE_HINT_FULL_NAME" val LineNumber = "LINE_NUMBER" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = - Set(ArgumentIndex, ArgumentName, Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Order, TypeFullName) + val all: Set[String] = Set( + ArgumentIndex, + ArgumentName, + Code, + ColumnNumber, + DynamicTypeHintFullName, + LineNumber, + Order, + PossibleTypes, + TypeFullName + ) val allAsJava: java.util.Set[String] = all.asJava } @@ -30,6 +40,7 @@ object Block { val DynamicTypeHintFullName = new overflowdb.PropertyKey[IndexedSeq[String]]("DYNAMIC_TYPE_HINT_FULL_NAME") val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -106,6 +117,7 @@ trait BlockBase extends AbstractNode with ExpressionBase { def dynamicTypeHintFullName: IndexedSeq[String] def lineNumber: Option[Integer] def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -122,6 +134,7 @@ class Block(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i override def dynamicTypeHintFullName: IndexedSeq[String] = get().dynamicTypeHintFullName override def lineNumber: Option[Integer] = get().lineNumber override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -652,7 +665,8 @@ class Block(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -665,11 +679,12 @@ class Block(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Block" - override def productArity = 9 + override def productArity = 10 } class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with BlockBase { @@ -690,6 +705,8 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp def lineNumber: Option[Integer] = Option(_lineNumber) private var _order: scala.Int = Block.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Block.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -705,6 +722,7 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp } lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -722,6 +740,7 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp } lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -930,7 +949,8 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -943,11 +963,12 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Block" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[BlockDb] @@ -960,6 +981,7 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp case "DYNAMIC_TYPE_HINT_FULL_NAME" => this._dynamicTypeHintFullName case "LINE_NUMBER" => this._lineNumber case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -990,8 +1012,26 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -1018,6 +1058,9 @@ class BlockDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Exp else collection.immutable.ArraySeq.empty this._lineNumber = newNode.asInstanceOf[NewBlock].lineNumber.orNull this._order = newNode.asInstanceOf[NewBlock].order + this._possibleTypes = + if (newNode.asInstanceOf[NewBlock].possibleTypes != null) newNode.asInstanceOf[NewBlock].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewBlock].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Call.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Call.scala index aeea04ec9..38106f0c0 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Call.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Call.scala @@ -19,6 +19,7 @@ object Call { val MethodFullName = "METHOD_FULL_NAME" val Name = "NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val Signature = "SIGNATURE" val TypeFullName = "TYPE_FULL_NAME" val all: Set[String] = Set( @@ -32,6 +33,7 @@ object Call { MethodFullName, Name, Order, + PossibleTypes, Signature, TypeFullName ) @@ -49,6 +51,7 @@ object Call { val MethodFullName = new overflowdb.PropertyKey[String]("METHOD_FULL_NAME") val Name = new overflowdb.PropertyKey[String]("NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val Signature = new overflowdb.PropertyKey[String]("SIGNATURE") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") @@ -150,6 +153,7 @@ trait CallBase extends AbstractNode with CallReprBase with ExpressionBase { def methodFullName: String def name: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def signature: String def typeFullName: String @@ -171,6 +175,7 @@ class Call(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/is override def methodFullName: String = get().methodFullName override def name: String = get().name override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def signature: String = get().signature override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = @@ -827,8 +832,9 @@ class Call(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/is case 8 => "methodFullName" case 9 => "name" case 10 => "order" - case 11 => "signature" - case 12 => "typeFullName" + case 11 => "possibleTypes" + case 12 => "signature" + case 13 => "typeFullName" } override def productElement(n: Int): Any = @@ -844,12 +850,13 @@ class Call(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/is case 8 => methodFullName case 9 => name case 10 => order - case 11 => signature - case 12 => typeFullName + case 11 => possibleTypes + case 12 => signature + case 13 => typeFullName } override def productPrefix = "Call" - override def productArity = 13 + override def productArity = 14 } class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with CallRepr with Expression with CallBase { @@ -876,6 +883,8 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call def name: String = _name private var _order: scala.Int = Call.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _signature: String = Call.PropertyDefaults.Signature def signature: String = _signature private var _typeFullName: String = Call.PropertyDefaults.TypeFullName @@ -896,6 +905,7 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call properties.put("METHOD_FULL_NAME", methodFullName) properties.put("NAME", name) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("SIGNATURE", signature) properties.put("TYPE_FULL_NAME", typeFullName) @@ -917,6 +927,7 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call if (!(("") == methodFullName)) { properties.put("METHOD_FULL_NAME", methodFullName) } if (!(("") == name)) { properties.put("NAME", name) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == signature)) { properties.put("SIGNATURE", signature) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } @@ -1165,8 +1176,9 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call case 8 => "methodFullName" case 9 => "name" case 10 => "order" - case 11 => "signature" - case 12 => "typeFullName" + case 11 => "possibleTypes" + case 12 => "signature" + case 13 => "typeFullName" } override def productElement(n: Int): Any = @@ -1182,12 +1194,13 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call case 8 => methodFullName case 9 => name case 10 => order - case 11 => signature - case 12 => typeFullName + case 11 => possibleTypes + case 12 => signature + case 13 => typeFullName } override def productPrefix = "Call" - override def productArity = 13 + override def productArity = 14 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[CallDb] @@ -1203,6 +1216,7 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call case "METHOD_FULL_NAME" => this._methodFullName case "NAME" => this._name case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "SIGNATURE" => this._signature case "TYPE_FULL_NAME" => this._typeFullName @@ -1239,8 +1253,26 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call case "METHOD_FULL_NAME" => this._methodFullName = value.asInstanceOf[String] case "NAME" => this._name = value.asInstanceOf[String] case "ORDER" => this._order = value.asInstanceOf[scala.Int] - case "SIGNATURE" => this._signature = value.asInstanceOf[String] - case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } + case "SIGNATURE" => this._signature = value.asInstanceOf[String] + case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) } @@ -1269,6 +1301,9 @@ class CallDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Call this._methodFullName = newNode.asInstanceOf[NewCall].methodFullName this._name = newNode.asInstanceOf[NewCall].name this._order = newNode.asInstanceOf[NewCall].order + this._possibleTypes = + if (newNode.asInstanceOf[NewCall].possibleTypes != null) newNode.asInstanceOf[NewCall].possibleTypes + else collection.immutable.ArraySeq.empty this._signature = newNode.asInstanceOf[NewCall].signature this._typeFullName = newNode.asInstanceOf[NewCall].typeFullName diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Identifier.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Identifier.scala index 7b573e979..e35216ba5 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Identifier.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Identifier.scala @@ -17,6 +17,7 @@ object Identifier { val LineNumber = "LINE_NUMBER" val Name = "NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" val all: Set[String] = Set( ArgumentIndex, @@ -27,6 +28,7 @@ object Identifier { LineNumber, Name, Order, + PossibleTypes, TypeFullName ) val allAsJava: java.util.Set[String] = all.asJava @@ -41,6 +43,7 @@ object Identifier { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Name = new overflowdb.PropertyKey[String]("NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -119,6 +122,7 @@ trait IdentifierBase extends AbstractNode with ExpressionBase { def lineNumber: Option[Integer] def name: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -136,6 +140,7 @@ class Identifier(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/ override def lineNumber: Option[Integer] = get().lineNumber override def name: String = get().name override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -652,34 +657,36 @@ class Identifier(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/ override def productElementName(n: Int): String = n match { - case 0 => "id" - case 1 => "argumentIndex" - case 2 => "argumentName" - case 3 => "code" - case 4 => "columnNumber" - case 5 => "dynamicTypeHintFullName" - case 6 => "lineNumber" - case 7 => "name" - case 8 => "order" - case 9 => "typeFullName" + case 0 => "id" + case 1 => "argumentIndex" + case 2 => "argumentName" + case 3 => "code" + case 4 => "columnNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "lineNumber" + case 7 => "name" + case 8 => "order" + case 9 => "possibleTypes" + case 10 => "typeFullName" } override def productElement(n: Int): Any = n match { - case 0 => id - case 1 => argumentIndex - case 2 => argumentName - case 3 => code - case 4 => columnNumber - case 5 => dynamicTypeHintFullName - case 6 => lineNumber - case 7 => name - case 8 => order - case 9 => typeFullName + case 0 => id + case 1 => argumentIndex + case 2 => argumentName + case 3 => code + case 4 => columnNumber + case 5 => dynamicTypeHintFullName + case 6 => lineNumber + case 7 => name + case 8 => order + case 9 => possibleTypes + case 10 => typeFullName } override def productPrefix = "Identifier" - override def productArity = 10 + override def productArity = 11 } class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with IdentifierBase { @@ -702,6 +709,8 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit def name: String = _name private var _order: scala.Int = Identifier.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Identifier.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -718,6 +727,7 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("NAME", name) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -736,6 +746,7 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!(("") == name)) { properties.put("NAME", name) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -923,34 +934,36 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit override def productElementName(n: Int): String = n match { - case 0 => "id" - case 1 => "argumentIndex" - case 2 => "argumentName" - case 3 => "code" - case 4 => "columnNumber" - case 5 => "dynamicTypeHintFullName" - case 6 => "lineNumber" - case 7 => "name" - case 8 => "order" - case 9 => "typeFullName" + case 0 => "id" + case 1 => "argumentIndex" + case 2 => "argumentName" + case 3 => "code" + case 4 => "columnNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "lineNumber" + case 7 => "name" + case 8 => "order" + case 9 => "possibleTypes" + case 10 => "typeFullName" } override def productElement(n: Int): Any = n match { - case 0 => id - case 1 => argumentIndex - case 2 => argumentName - case 3 => code - case 4 => columnNumber - case 5 => dynamicTypeHintFullName - case 6 => lineNumber - case 7 => name - case 8 => order - case 9 => typeFullName + case 0 => id + case 1 => argumentIndex + case 2 => argumentName + case 3 => code + case 4 => columnNumber + case 5 => dynamicTypeHintFullName + case 6 => lineNumber + case 7 => name + case 8 => order + case 9 => possibleTypes + case 10 => typeFullName } override def productPrefix = "Identifier" - override def productArity = 10 + override def productArity = 11 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[IdentifierDb] @@ -964,6 +977,7 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit case "LINE_NUMBER" => this._lineNumber case "NAME" => this._name case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -994,9 +1008,27 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "NAME" => this._name = value.asInstanceOf[String] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "NAME" => this._name = value.asInstanceOf[String] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -1024,6 +1056,9 @@ class IdentifierDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode wit this._lineNumber = newNode.asInstanceOf[NewIdentifier].lineNumber.orNull this._name = newNode.asInstanceOf[NewIdentifier].name this._order = newNode.asInstanceOf[NewIdentifier].order + this._possibleTypes = + if (newNode.asInstanceOf[NewIdentifier].possibleTypes != null) newNode.asInstanceOf[NewIdentifier].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewIdentifier].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Literal.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Literal.scala index d4c0cd3f3..661cdebc8 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Literal.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Literal.scala @@ -16,9 +16,19 @@ object Literal { val DynamicTypeHintFullName = "DYNAMIC_TYPE_HINT_FULL_NAME" val LineNumber = "LINE_NUMBER" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = - Set(ArgumentIndex, ArgumentName, Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Order, TypeFullName) + val all: Set[String] = Set( + ArgumentIndex, + ArgumentName, + Code, + ColumnNumber, + DynamicTypeHintFullName, + LineNumber, + Order, + PossibleTypes, + TypeFullName + ) val allAsJava: java.util.Set[String] = all.asJava } @@ -30,6 +40,7 @@ object Literal { val DynamicTypeHintFullName = new overflowdb.PropertyKey[IndexedSeq[String]]("DYNAMIC_TYPE_HINT_FULL_NAME") val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -105,6 +116,7 @@ trait LiteralBase extends AbstractNode with ExpressionBase { def dynamicTypeHintFullName: IndexedSeq[String] def lineNumber: Option[Integer] def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -121,6 +133,7 @@ class Literal(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug override def dynamicTypeHintFullName: IndexedSeq[String] = get().dynamicTypeHintFullName override def lineNumber: Option[Integer] = get().lineNumber override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -633,7 +646,8 @@ class Literal(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -646,11 +660,12 @@ class Literal(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Literal" - override def productArity = 9 + override def productArity = 10 } class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with LiteralBase { @@ -671,6 +686,8 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E def lineNumber: Option[Integer] = Option(_lineNumber) private var _order: scala.Int = Literal.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Literal.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -686,6 +703,7 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E } lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -703,6 +721,7 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E } lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -900,7 +919,8 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -913,11 +933,12 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Literal" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[LiteralDb] @@ -930,6 +951,7 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case "DYNAMIC_TYPE_HINT_FULL_NAME" => this._dynamicTypeHintFullName case "LINE_NUMBER" => this._lineNumber case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -960,8 +982,26 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -988,6 +1028,9 @@ class LiteralDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E else collection.immutable.ArraySeq.empty this._lineNumber = newNode.asInstanceOf[NewLiteral].lineNumber.orNull this._order = newNode.asInstanceOf[NewLiteral].order + this._possibleTypes = + if (newNode.asInstanceOf[NewLiteral].possibleTypes != null) newNode.asInstanceOf[NewLiteral].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewLiteral].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Local.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Local.scala index cdaae78c4..64c9f6d75 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Local.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Local.scala @@ -16,9 +16,19 @@ object Local { val LineNumber = "LINE_NUMBER" val Name = "NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = - Set(ClosureBindingId, Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Name, Order, TypeFullName) + val all: Set[String] = Set( + ClosureBindingId, + Code, + ColumnNumber, + DynamicTypeHintFullName, + LineNumber, + Name, + Order, + PossibleTypes, + TypeFullName + ) val allAsJava: java.util.Set[String] = all.asJava } @@ -30,6 +40,7 @@ object Local { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Name = new overflowdb.PropertyKey[String]("NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -80,6 +91,7 @@ trait LocalBase extends AbstractNode with AstNodeBase with DeclarationBase { def lineNumber: Option[Integer] def name: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -97,6 +109,7 @@ class Local(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i override def lineNumber: Option[Integer] = get().lineNumber override def name: String = get().name override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -191,7 +204,8 @@ class Local(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i case 5 => "lineNumber" case 6 => "name" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -204,11 +218,12 @@ class Local(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/i case 5 => lineNumber case 6 => name case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Local" - override def productArity = 9 + override def productArity = 10 } class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with AstNode with Declaration with LocalBase { @@ -229,6 +244,8 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast def name: String = _name private var _order: scala.Int = Local.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Local.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -244,6 +261,7 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("NAME", name) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -261,6 +279,7 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!(("") == name)) { properties.put("NAME", name) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -306,7 +325,8 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast case 5 => "lineNumber" case 6 => "name" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -319,11 +339,12 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast case 5 => lineNumber case 6 => name case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "Local" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[LocalDb] @@ -336,6 +357,7 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast case "LINE_NUMBER" => this._lineNumber case "NAME" => this._name case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -365,9 +387,27 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "NAME" => this._name = value.asInstanceOf[String] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "NAME" => this._name = value.asInstanceOf[String] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -394,6 +434,9 @@ class LocalDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Ast this._lineNumber = newNode.asInstanceOf[NewLocal].lineNumber.orNull this._name = newNode.asInstanceOf[NewLocal].name this._order = newNode.asInstanceOf[NewLocal].order + this._possibleTypes = + if (newNode.asInstanceOf[NewLocal].possibleTypes != null) newNode.asInstanceOf[NewLocal].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewLocal].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Member.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Member.scala index 047955fee..5329d5ba1 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Member.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Member.scala @@ -15,8 +15,10 @@ object Member { val LineNumber = "LINE_NUMBER" val Name = "NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = Set(Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Name, Order, TypeFullName) + val all: Set[String] = + Set(Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Name, Order, PossibleTypes, TypeFullName) val allAsJava: java.util.Set[String] = all.asJava } @@ -27,6 +29,7 @@ object Member { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Name = new overflowdb.PropertyKey[String]("NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -76,6 +79,7 @@ trait MemberBase extends AbstractNode with AstNodeBase with DeclarationBase { def lineNumber: Option[Integer] def name: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -92,6 +96,7 @@ class Member(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/ override def lineNumber: Option[Integer] = get().lineNumber override def name: String = get().name override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -174,7 +179,8 @@ class Member(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/ case 4 => "lineNumber" case 5 => "name" case 6 => "order" - case 7 => "typeFullName" + case 7 => "possibleTypes" + case 8 => "typeFullName" } override def productElement(n: Int): Any = @@ -186,11 +192,12 @@ class Member(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug/ case 4 => lineNumber case 5 => name case 6 => order - case 7 => typeFullName + case 7 => possibleTypes + case 8 => typeFullName } override def productPrefix = "Member" - override def productArity = 8 + override def productArity = 9 } class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with AstNode with Declaration with MemberBase { @@ -209,6 +216,8 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As def name: String = _name private var _order: scala.Int = Member.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Member.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -223,6 +232,7 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("NAME", name) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -239,6 +249,7 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!(("") == name)) { properties.put("NAME", name) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -287,7 +298,8 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As case 4 => "lineNumber" case 5 => "name" case 6 => "order" - case 7 => "typeFullName" + case 7 => "possibleTypes" + case 8 => "typeFullName" } override def productElement(n: Int): Any = @@ -299,11 +311,12 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As case 4 => lineNumber case 5 => name case 6 => order - case 7 => typeFullName + case 7 => possibleTypes + case 8 => typeFullName } override def productPrefix = "Member" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[MemberDb] @@ -315,6 +328,7 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As case "LINE_NUMBER" => this._lineNumber case "NAME" => this._name case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -343,9 +357,27 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "NAME" => this._name = value.asInstanceOf[String] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "NAME" => this._name = value.asInstanceOf[String] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -371,6 +403,9 @@ class MemberDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with As this._lineNumber = newNode.asInstanceOf[NewMember].lineNumber.orNull this._name = newNode.asInstanceOf[NewMember].name this._order = newNode.asInstanceOf[NewMember].order + this._possibleTypes = + if (newNode.asInstanceOf[NewMember].possibleTypes != null) newNode.asInstanceOf[NewMember].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewMember].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodParameterIn.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodParameterIn.scala index cd81043a8..8a30b794d 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodParameterIn.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodParameterIn.scala @@ -18,6 +18,7 @@ object MethodParameterIn { val LineNumber = "LINE_NUMBER" val Name = "NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" val all: Set[String] = Set( Code, @@ -29,6 +30,7 @@ object MethodParameterIn { LineNumber, Name, Order, + PossibleTypes, TypeFullName ) val allAsJava: java.util.Set[String] = all.asJava @@ -44,6 +46,7 @@ object MethodParameterIn { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Name = new overflowdb.PropertyKey[String]("NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -103,6 +106,7 @@ trait MethodParameterInBase extends AbstractNode with AstNodeBase with CfgNodeBa def lineNumber: Option[Integer] def name: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -123,6 +127,7 @@ class MethodParameterIn(graph_4762: Graph, id_4762: Long /*cf https://github.com override def lineNumber: Option[Integer] = get().lineNumber override def name: String = get().name override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -264,7 +269,8 @@ class MethodParameterIn(graph_4762: Graph, id_4762: Long /*cf https://github.com case 7 => "lineNumber" case 8 => "name" case 9 => "order" - case 10 => "typeFullName" + case 10 => "possibleTypes" + case 11 => "typeFullName" } override def productElement(n: Int): Any = @@ -279,11 +285,12 @@ class MethodParameterIn(graph_4762: Graph, id_4762: Long /*cf https://github.com case 7 => lineNumber case 8 => name case 9 => order - case 10 => typeFullName + case 10 => possibleTypes + case 11 => typeFullName } override def productPrefix = "MethodParameterIn" - override def productArity = 11 + override def productArity = 12 } class MethodParameterInDb(ref: NodeRef[NodeDb]) @@ -314,6 +321,8 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) def name: String = _name private var _order: scala.Int = MethodParameterIn.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = MethodParameterIn.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -331,6 +340,7 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("NAME", name) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -350,6 +360,7 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!(("") == name)) { properties.put("NAME", name) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -430,7 +441,8 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) case 7 => "lineNumber" case 8 => "name" case 9 => "order" - case 10 => "typeFullName" + case 10 => "possibleTypes" + case 11 => "typeFullName" } override def productElement(n: Int): Any = @@ -445,11 +457,12 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) case 7 => lineNumber case 8 => name case 9 => order - case 10 => typeFullName + case 10 => possibleTypes + case 11 => typeFullName } override def productPrefix = "MethodParameterIn" - override def productArity = 11 + override def productArity = 12 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[MethodParameterInDb] @@ -464,6 +477,7 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) case "LINE_NUMBER" => this._lineNumber case "NAME" => this._name case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -498,7 +512,25 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] case "NAME" => this._name = value.asInstanceOf[String] case "ORDER" => this._order = value.asInstanceOf[scala.Int] - case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } + case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) } @@ -526,6 +558,10 @@ class MethodParameterInDb(ref: NodeRef[NodeDb]) this._lineNumber = newNode.asInstanceOf[NewMethodParameterIn].lineNumber.orNull this._name = newNode.asInstanceOf[NewMethodParameterIn].name this._order = newNode.asInstanceOf[NewMethodParameterIn].order + this._possibleTypes = + if (newNode.asInstanceOf[NewMethodParameterIn].possibleTypes != null) + newNode.asInstanceOf[NewMethodParameterIn].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewMethodParameterIn].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodRef.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodRef.scala index 4fb538cf6..efe497ae4 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodRef.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodRef.scala @@ -17,6 +17,7 @@ object MethodRef { val LineNumber = "LINE_NUMBER" val MethodFullName = "METHOD_FULL_NAME" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" val all: Set[String] = Set( ArgumentIndex, @@ -27,6 +28,7 @@ object MethodRef { LineNumber, MethodFullName, Order, + PossibleTypes, TypeFullName ) val allAsJava: java.util.Set[String] = all.asJava @@ -41,6 +43,7 @@ object MethodRef { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val MethodFullName = new overflowdb.PropertyKey[String]("METHOD_FULL_NAME") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -130,6 +133,7 @@ trait MethodRefBase extends AbstractNode with ExpressionBase { def lineNumber: Option[Integer] def methodFullName: String def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -147,6 +151,7 @@ class MethodRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/b override def lineNumber: Option[Integer] = get().lineNumber override def methodFullName: String = get().methodFullName override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -668,34 +673,36 @@ class MethodRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/b override def productElementName(n: Int): String = n match { - case 0 => "id" - case 1 => "argumentIndex" - case 2 => "argumentName" - case 3 => "code" - case 4 => "columnNumber" - case 5 => "dynamicTypeHintFullName" - case 6 => "lineNumber" - case 7 => "methodFullName" - case 8 => "order" - case 9 => "typeFullName" + case 0 => "id" + case 1 => "argumentIndex" + case 2 => "argumentName" + case 3 => "code" + case 4 => "columnNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "lineNumber" + case 7 => "methodFullName" + case 8 => "order" + case 9 => "possibleTypes" + case 10 => "typeFullName" } override def productElement(n: Int): Any = n match { - case 0 => id - case 1 => argumentIndex - case 2 => argumentName - case 3 => code - case 4 => columnNumber - case 5 => dynamicTypeHintFullName - case 6 => lineNumber - case 7 => methodFullName - case 8 => order - case 9 => typeFullName + case 0 => id + case 1 => argumentIndex + case 2 => argumentName + case 3 => code + case 4 => columnNumber + case 5 => dynamicTypeHintFullName + case 6 => lineNumber + case 7 => methodFullName + case 8 => order + case 9 => possibleTypes + case 10 => typeFullName } override def productPrefix = "MethodRef" - override def productArity = 10 + override def productArity = 11 } class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with MethodRefBase { @@ -718,6 +725,8 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with def methodFullName: String = _methodFullName private var _order: scala.Int = MethodRef.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = MethodRef.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -734,6 +743,7 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("METHOD_FULL_NAME", methodFullName) properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -752,6 +762,7 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!(("") == methodFullName)) { properties.put("METHOD_FULL_NAME", methodFullName) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -957,34 +968,36 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with override def productElementName(n: Int): String = n match { - case 0 => "id" - case 1 => "argumentIndex" - case 2 => "argumentName" - case 3 => "code" - case 4 => "columnNumber" - case 5 => "dynamicTypeHintFullName" - case 6 => "lineNumber" - case 7 => "methodFullName" - case 8 => "order" - case 9 => "typeFullName" + case 0 => "id" + case 1 => "argumentIndex" + case 2 => "argumentName" + case 3 => "code" + case 4 => "columnNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "lineNumber" + case 7 => "methodFullName" + case 8 => "order" + case 9 => "possibleTypes" + case 10 => "typeFullName" } override def productElement(n: Int): Any = n match { - case 0 => id - case 1 => argumentIndex - case 2 => argumentName - case 3 => code - case 4 => columnNumber - case 5 => dynamicTypeHintFullName - case 6 => lineNumber - case 7 => methodFullName - case 8 => order - case 9 => typeFullName + case 0 => id + case 1 => argumentIndex + case 2 => argumentName + case 3 => code + case 4 => columnNumber + case 5 => dynamicTypeHintFullName + case 6 => lineNumber + case 7 => methodFullName + case 8 => order + case 9 => possibleTypes + case 10 => typeFullName } override def productPrefix = "MethodRef" - override def productArity = 10 + override def productArity = 11 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[MethodRefDb] @@ -998,6 +1011,7 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with case "LINE_NUMBER" => this._lineNumber case "METHOD_FULL_NAME" => this._methodFullName case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -1031,7 +1045,25 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] case "METHOD_FULL_NAME" => this._methodFullName = value.asInstanceOf[String] case "ORDER" => this._order = value.asInstanceOf[scala.Int] - case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } + case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) } @@ -1058,6 +1090,9 @@ class MethodRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with this._lineNumber = newNode.asInstanceOf[NewMethodRef].lineNumber.orNull this._methodFullName = newNode.asInstanceOf[NewMethodRef].methodFullName this._order = newNode.asInstanceOf[NewMethodRef].order + this._possibleTypes = + if (newNode.asInstanceOf[NewMethodRef].possibleTypes != null) newNode.asInstanceOf[NewMethodRef].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewMethodRef].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodReturn.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodReturn.scala index 4ed3725dd..9e1f1af9b 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodReturn.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/MethodReturn.scala @@ -15,9 +15,18 @@ object MethodReturn { val EvaluationStrategy = "EVALUATION_STRATEGY" val LineNumber = "LINE_NUMBER" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = - Set(Code, ColumnNumber, DynamicTypeHintFullName, EvaluationStrategy, LineNumber, Order, TypeFullName) + val all: Set[String] = Set( + Code, + ColumnNumber, + DynamicTypeHintFullName, + EvaluationStrategy, + LineNumber, + Order, + PossibleTypes, + TypeFullName + ) val allAsJava: java.util.Set[String] = all.asJava } @@ -28,6 +37,7 @@ object MethodReturn { val EvaluationStrategy = new overflowdb.PropertyKey[String]("EVALUATION_STRATEGY") val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -80,6 +90,7 @@ trait MethodReturnBase extends AbstractNode with CfgNodeBase { def evaluationStrategy: String def lineNumber: Option[Integer] def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -95,6 +106,7 @@ class MethodReturn(graph_4762: Graph, id_4762: Long /*cf https://github.com/scal override def evaluationStrategy: String = get().evaluationStrategy override def lineNumber: Option[Integer] = get().lineNumber override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -310,7 +322,8 @@ class MethodReturn(graph_4762: Graph, id_4762: Long /*cf https://github.com/scal case 4 => "evaluationStrategy" case 5 => "lineNumber" case 6 => "order" - case 7 => "typeFullName" + case 7 => "possibleTypes" + case 8 => "typeFullName" } override def productElement(n: Int): Any = @@ -322,11 +335,12 @@ class MethodReturn(graph_4762: Graph, id_4762: Long /*cf https://github.com/scal case 4 => evaluationStrategy case 5 => lineNumber case 6 => order - case 7 => typeFullName + case 7 => possibleTypes + case 8 => typeFullName } override def productPrefix = "MethodReturn" - override def productArity = 8 + override def productArity = 9 } class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with CfgNode with MethodReturnBase { @@ -345,6 +359,8 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w def lineNumber: Option[Integer] = Option(_lineNumber) private var _order: scala.Int = MethodReturn.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = MethodReturn.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -359,6 +375,7 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w properties.put("EVALUATION_STRATEGY", evaluationStrategy) lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -375,6 +392,7 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w if (!(("") == evaluationStrategy)) { properties.put("EVALUATION_STRATEGY", evaluationStrategy) } lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -467,7 +485,8 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w case 4 => "evaluationStrategy" case 5 => "lineNumber" case 6 => "order" - case 7 => "typeFullName" + case 7 => "possibleTypes" + case 8 => "typeFullName" } override def productElement(n: Int): Any = @@ -479,11 +498,12 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w case 4 => evaluationStrategy case 5 => lineNumber case 6 => order - case 7 => typeFullName + case 7 => possibleTypes + case 8 => typeFullName } override def productPrefix = "MethodReturn" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[MethodReturnDb] @@ -495,6 +515,7 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w case "EVALUATION_STRATEGY" => this._evaluationStrategy case "LINE_NUMBER" => this._lineNumber case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -526,7 +547,25 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w case "EVALUATION_STRATEGY" => this._evaluationStrategy = value.asInstanceOf[String] case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] case "ORDER" => this._order = value.asInstanceOf[scala.Int] - case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } + case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) } @@ -551,6 +590,10 @@ class MethodReturnDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode w this._evaluationStrategy = newNode.asInstanceOf[NewMethodReturn].evaluationStrategy this._lineNumber = newNode.asInstanceOf[NewMethodReturn].lineNumber.orNull this._order = newNode.asInstanceOf[NewMethodReturn].order + this._possibleTypes = + if (newNode.asInstanceOf[NewMethodReturn].possibleTypes != null) + newNode.asInstanceOf[NewMethodReturn].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewMethodReturn].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala index df6e059b1..7d3d362ec 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala @@ -582,6 +582,7 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { type StoredType = Block var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var lineNumber: Option[Integer] = None var dynamicTypeHintFullName: IndexedSeq[String] = collection.immutable.ArraySeq.empty @@ -601,6 +602,7 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { newInstance.dynamicTypeHintFullName = this.dynamicTypeHintFullName newInstance.lineNumber = this.lineNumber newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -646,6 +648,11 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -662,6 +669,7 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { } lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -669,31 +677,33 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.lineNumber - case 3 => this.dynamicTypeHintFullName - case 4 => this.columnNumber - case 5 => this.code - case 6 => this.argumentName - case 7 => this.argumentIndex + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.lineNumber + case 4 => this.dynamicTypeHintFullName + case 5 => this.columnNumber + case 6 => this.code + case 7 => this.argumentName + case 8 => this.argumentIndex case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "lineNumber" - case 3 => "dynamicTypeHintFullName" - case 4 => "columnNumber" - case 5 => "code" - case 6 => "argumentName" - case 7 => "argumentIndex" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "lineNumber" + case 4 => "dynamicTypeHintFullName" + case 5 => "columnNumber" + case 6 => "code" + case 7 => "argumentName" + case 8 => "argumentIndex" case _ => "" } override def productPrefix = "NewBlock" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewBlock] } @@ -707,6 +717,7 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew var typeFullName: String = "" var signature: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var name: String = "" var methodFullName: String = "" @@ -732,6 +743,7 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew newInstance.methodFullName = this.methodFullName newInstance.name = this.name newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.signature = this.signature newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] @@ -793,6 +805,11 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def signature(value: String): this.type = { this.signature = value this @@ -817,6 +834,7 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew if (!(("") == methodFullName)) { res += "METHOD_FULL_NAME" -> methodFullName } if (!(("") == name)) { res += "NAME" -> name } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == signature)) { res += "SIGNATURE" -> signature } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res @@ -826,16 +844,17 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew n match { case 0 => this.typeFullName case 1 => this.signature - case 2 => this.order - case 3 => this.name - case 4 => this.methodFullName - case 5 => this.lineNumber - case 6 => this.dynamicTypeHintFullName - case 7 => this.dispatchType - case 8 => this.columnNumber - case 9 => this.code - case 10 => this.argumentName - case 11 => this.argumentIndex + case 2 => this.possibleTypes + case 3 => this.order + case 4 => this.name + case 5 => this.methodFullName + case 6 => this.lineNumber + case 7 => this.dynamicTypeHintFullName + case 8 => this.dispatchType + case 9 => this.columnNumber + case 10 => this.code + case 11 => this.argumentName + case 12 => this.argumentIndex case _ => null } @@ -843,21 +862,22 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew n match { case 0 => "typeFullName" case 1 => "signature" - case 2 => "order" - case 3 => "name" - case 4 => "methodFullName" - case 5 => "lineNumber" - case 6 => "dynamicTypeHintFullName" - case 7 => "dispatchType" - case 8 => "columnNumber" - case 9 => "code" - case 10 => "argumentName" - case 11 => "argumentIndex" + case 2 => "possibleTypes" + case 3 => "order" + case 4 => "name" + case 5 => "methodFullName" + case 6 => "lineNumber" + case 7 => "dynamicTypeHintFullName" + case 8 => "dispatchType" + case 9 => "columnNumber" + case 10 => "code" + case 11 => "argumentName" + case 12 => "argumentIndex" case _ => "" } override def productPrefix = "NewCall" - override def productArity = 12 + override def productArity = 13 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewCall] } @@ -1546,6 +1566,7 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { type StoredType = Identifier var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var name: String = "" var lineNumber: Option[Integer] = None @@ -1567,6 +1588,7 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { newInstance.lineNumber = this.lineNumber newInstance.name = this.name newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -1617,6 +1639,11 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -1634,6 +1661,7 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!(("") == name)) { res += "NAME" -> name } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -1641,33 +1669,35 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.name - case 3 => this.lineNumber - case 4 => this.dynamicTypeHintFullName - case 5 => this.columnNumber - case 6 => this.code - case 7 => this.argumentName - case 8 => this.argumentIndex + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.name + case 4 => this.lineNumber + case 5 => this.dynamicTypeHintFullName + case 6 => this.columnNumber + case 7 => this.code + case 8 => this.argumentName + case 9 => this.argumentIndex case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "name" - case 3 => "lineNumber" - case 4 => "dynamicTypeHintFullName" - case 5 => "columnNumber" - case 6 => "code" - case 7 => "argumentName" - case 8 => "argumentIndex" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "name" + case 4 => "lineNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "columnNumber" + case 7 => "code" + case 8 => "argumentName" + case 9 => "argumentIndex" case _ => "" } override def productPrefix = "NewIdentifier" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewIdentifier] } @@ -2086,6 +2116,7 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { type StoredType = Literal var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var lineNumber: Option[Integer] = None var dynamicTypeHintFullName: IndexedSeq[String] = collection.immutable.ArraySeq.empty @@ -2105,6 +2136,7 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { newInstance.dynamicTypeHintFullName = this.dynamicTypeHintFullName newInstance.lineNumber = this.lineNumber newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -2150,6 +2182,11 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -2166,6 +2203,7 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { } lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -2173,31 +2211,33 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.lineNumber - case 3 => this.dynamicTypeHintFullName - case 4 => this.columnNumber - case 5 => this.code - case 6 => this.argumentName - case 7 => this.argumentIndex + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.lineNumber + case 4 => this.dynamicTypeHintFullName + case 5 => this.columnNumber + case 6 => this.code + case 7 => this.argumentName + case 8 => this.argumentIndex case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "lineNumber" - case 3 => "dynamicTypeHintFullName" - case 4 => "columnNumber" - case 5 => "code" - case 6 => "argumentName" - case 7 => "argumentIndex" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "lineNumber" + case 4 => "dynamicTypeHintFullName" + case 5 => "columnNumber" + case 6 => "code" + case 7 => "argumentName" + case 8 => "argumentIndex" case _ => "" } override def productPrefix = "NewLiteral" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewLiteral] } @@ -2210,6 +2250,7 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe type StoredType = Local var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var name: String = "" var lineNumber: Option[Integer] = None @@ -2229,6 +2270,7 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe newInstance.lineNumber = this.lineNumber newInstance.name = this.name newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -2274,6 +2316,11 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -2290,6 +2337,7 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!(("") == name)) { res += "NAME" -> name } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -2297,31 +2345,33 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.name - case 3 => this.lineNumber - case 4 => this.dynamicTypeHintFullName - case 5 => this.columnNumber - case 6 => this.code - case 7 => this.closureBindingId + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.name + case 4 => this.lineNumber + case 5 => this.dynamicTypeHintFullName + case 6 => this.columnNumber + case 7 => this.code + case 8 => this.closureBindingId case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "name" - case 3 => "lineNumber" - case 4 => "dynamicTypeHintFullName" - case 5 => "columnNumber" - case 6 => "code" - case 7 => "closureBindingId" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "name" + case 4 => "lineNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "columnNumber" + case 7 => "code" + case 8 => "closureBindingId" case _ => "" } override def productPrefix = "NewLocal" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewLocal] } @@ -2474,6 +2524,7 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration type StoredType = Member var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var name: String = "" var lineNumber: Option[Integer] = None @@ -2491,6 +2542,7 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration newInstance.lineNumber = this.lineNumber newInstance.name = this.name newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -2529,6 +2581,11 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -2544,6 +2601,7 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!(("") == name)) { res += "NAME" -> name } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -2551,29 +2609,31 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.name - case 3 => this.lineNumber - case 4 => this.dynamicTypeHintFullName - case 5 => this.columnNumber - case 6 => this.code + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.name + case 4 => this.lineNumber + case 5 => this.dynamicTypeHintFullName + case 6 => this.columnNumber + case 7 => this.code case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "name" - case 3 => "lineNumber" - case 4 => "dynamicTypeHintFullName" - case 5 => "columnNumber" - case 6 => "code" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "name" + case 4 => "lineNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "columnNumber" + case 7 => "code" case _ => "" } override def productPrefix = "NewMember" - override def productArity = 7 + override def productArity = 8 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewMember] } @@ -2865,6 +2925,7 @@ class NewMethodParameterIn type StoredType = MethodParameterIn var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var name: String = "" var lineNumber: Option[Integer] = None @@ -2888,6 +2949,7 @@ class NewMethodParameterIn newInstance.lineNumber = this.lineNumber newInstance.name = this.name newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -2941,6 +3003,11 @@ class NewMethodParameterIn this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -2959,42 +3026,45 @@ class NewMethodParameterIn lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!(("") == name)) { res += "NAME" -> name } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } override def productElement(n: Int): Any = n match { - case 0 => this.typeFullName - case 1 => this.order - case 2 => this.name - case 3 => this.lineNumber - case 4 => this.isVariadic - case 5 => this.index - case 6 => this.evaluationStrategy - case 7 => this.dynamicTypeHintFullName - case 8 => this.columnNumber - case 9 => this.code - case _ => null + case 0 => this.typeFullName + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.name + case 4 => this.lineNumber + case 5 => this.isVariadic + case 6 => this.index + case 7 => this.evaluationStrategy + case 8 => this.dynamicTypeHintFullName + case 9 => this.columnNumber + case 10 => this.code + case _ => null } override def productElementName(n: Int): String = n match { - case 0 => "typeFullName" - case 1 => "order" - case 2 => "name" - case 3 => "lineNumber" - case 4 => "isVariadic" - case 5 => "index" - case 6 => "evaluationStrategy" - case 7 => "dynamicTypeHintFullName" - case 8 => "columnNumber" - case 9 => "code" - case _ => "" + case 0 => "typeFullName" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "name" + case 4 => "lineNumber" + case 5 => "isVariadic" + case 6 => "index" + case 7 => "evaluationStrategy" + case 8 => "dynamicTypeHintFullName" + case 9 => "columnNumber" + case 10 => "code" + case _ => "" } override def productPrefix = "NewMethodParameterIn" - override def productArity = 10 + override def productArity = 11 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewMethodParameterIn] } @@ -3142,6 +3212,7 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { type StoredType = MethodRef var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var methodFullName: String = "" var lineNumber: Option[Integer] = None @@ -3163,6 +3234,7 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { newInstance.lineNumber = this.lineNumber newInstance.methodFullName = this.methodFullName newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -3213,6 +3285,11 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -3230,6 +3307,7 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!(("") == methodFullName)) { res += "METHOD_FULL_NAME" -> methodFullName } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -3237,33 +3315,35 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.methodFullName - case 3 => this.lineNumber - case 4 => this.dynamicTypeHintFullName - case 5 => this.columnNumber - case 6 => this.code - case 7 => this.argumentName - case 8 => this.argumentIndex + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.methodFullName + case 4 => this.lineNumber + case 5 => this.dynamicTypeHintFullName + case 6 => this.columnNumber + case 7 => this.code + case 8 => this.argumentName + case 9 => this.argumentIndex case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "methodFullName" - case 3 => "lineNumber" - case 4 => "dynamicTypeHintFullName" - case 5 => "columnNumber" - case 6 => "code" - case 7 => "argumentName" - case 8 => "argumentIndex" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "methodFullName" + case 4 => "lineNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "columnNumber" + case 7 => "code" + case 8 => "argumentName" + case 9 => "argumentIndex" case _ => "" } override def productPrefix = "NewMethodRef" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewMethodRef] } @@ -3276,6 +3356,7 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { type StoredType = MethodReturn var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var lineNumber: Option[Integer] = None var evaluationStrategy: String = "" @@ -3293,6 +3374,7 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { newInstance.evaluationStrategy = this.evaluationStrategy newInstance.lineNumber = this.lineNumber newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -3331,6 +3413,11 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -3346,6 +3433,7 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { if (!(("") == evaluationStrategy)) { res += "EVALUATION_STRATEGY" -> evaluationStrategy } lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -3353,29 +3441,31 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.lineNumber - case 3 => this.evaluationStrategy - case 4 => this.dynamicTypeHintFullName - case 5 => this.columnNumber - case 6 => this.code + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.lineNumber + case 4 => this.evaluationStrategy + case 5 => this.dynamicTypeHintFullName + case 6 => this.columnNumber + case 7 => this.code case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "lineNumber" - case 3 => "evaluationStrategy" - case 4 => "dynamicTypeHintFullName" - case 5 => "columnNumber" - case 6 => "code" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "lineNumber" + case 4 => "evaluationStrategy" + case 5 => "dynamicTypeHintFullName" + case 6 => "columnNumber" + case 7 => "code" case _ => "" } override def productPrefix = "NewMethodReturn" - override def productArity = 7 + override def productArity = 8 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewMethodReturn] } @@ -4404,6 +4494,7 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { type StoredType = TypeRef var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var order: scala.Int = -1: Int var lineNumber: Option[Integer] = None var dynamicTypeHintFullName: IndexedSeq[String] = collection.immutable.ArraySeq.empty @@ -4423,6 +4514,7 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { newInstance.dynamicTypeHintFullName = this.dynamicTypeHintFullName newInstance.lineNumber = this.lineNumber newInstance.order = this.order + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -4468,6 +4560,11 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -4484,6 +4581,7 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { } lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!((-1: Int) == order)) { res += "ORDER" -> order } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } @@ -4491,31 +4589,33 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { override def productElement(n: Int): Any = n match { case 0 => this.typeFullName - case 1 => this.order - case 2 => this.lineNumber - case 3 => this.dynamicTypeHintFullName - case 4 => this.columnNumber - case 5 => this.code - case 6 => this.argumentName - case 7 => this.argumentIndex + case 1 => this.possibleTypes + case 2 => this.order + case 3 => this.lineNumber + case 4 => this.dynamicTypeHintFullName + case 5 => this.columnNumber + case 6 => this.code + case 7 => this.argumentName + case 8 => this.argumentIndex case _ => null } override def productElementName(n: Int): String = n match { case 0 => "typeFullName" - case 1 => "order" - case 2 => "lineNumber" - case 3 => "dynamicTypeHintFullName" - case 4 => "columnNumber" - case 5 => "code" - case 6 => "argumentName" - case 7 => "argumentIndex" + case 1 => "possibleTypes" + case 2 => "order" + case 3 => "lineNumber" + case 4 => "dynamicTypeHintFullName" + case 5 => "columnNumber" + case 6 => "code" + case 7 => "argumentName" + case 8 => "argumentIndex" case _ => "" } override def productPrefix = "NewTypeRef" - override def productArity = 8 + override def productArity = 9 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewTypeRef] } @@ -4528,6 +4628,7 @@ class NewUnknown extends NewNode with UnknownBase with ExpressionNew { type StoredType = Unknown var typeFullName: String = "" + var possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty var parserTypeName: String = "" var order: scala.Int = -1: Int var lineNumber: Option[Integer] = None @@ -4551,6 +4652,7 @@ class NewUnknown extends NewNode with UnknownBase with ExpressionNew { newInstance.lineNumber = this.lineNumber newInstance.order = this.order newInstance.parserTypeName = this.parserTypeName + newInstance.possibleTypes = this.possibleTypes newInstance.typeFullName = this.typeFullName newInstance.asInstanceOf[this.type] } @@ -4606,6 +4708,11 @@ class NewUnknown extends NewNode with UnknownBase with ExpressionNew { this } + def possibleTypes(value: IterableOnce[String]): this.type = { + this.possibleTypes = value.iterator.to(collection.immutable.ArraySeq) + this + } + def typeFullName(value: String): this.type = { this.typeFullName = value this @@ -4624,42 +4731,45 @@ class NewUnknown extends NewNode with UnknownBase with ExpressionNew { lineNumber.map { value => res += "LINE_NUMBER" -> value } if (!((-1: Int) == order)) { res += "ORDER" -> order } if (!(("") == parserTypeName)) { res += "PARSER_TYPE_NAME" -> parserTypeName } + if (possibleTypes != null && possibleTypes.nonEmpty) { res += "POSSIBLE_TYPES" -> possibleTypes } if (!(("") == typeFullName)) { res += "TYPE_FULL_NAME" -> typeFullName } res } override def productElement(n: Int): Any = n match { - case 0 => this.typeFullName - case 1 => this.parserTypeName - case 2 => this.order - case 3 => this.lineNumber - case 4 => this.dynamicTypeHintFullName - case 5 => this.containedRef - case 6 => this.columnNumber - case 7 => this.code - case 8 => this.argumentName - case 9 => this.argumentIndex - case _ => null + case 0 => this.typeFullName + case 1 => this.possibleTypes + case 2 => this.parserTypeName + case 3 => this.order + case 4 => this.lineNumber + case 5 => this.dynamicTypeHintFullName + case 6 => this.containedRef + case 7 => this.columnNumber + case 8 => this.code + case 9 => this.argumentName + case 10 => this.argumentIndex + case _ => null } override def productElementName(n: Int): String = n match { - case 0 => "typeFullName" - case 1 => "parserTypeName" - case 2 => "order" - case 3 => "lineNumber" - case 4 => "dynamicTypeHintFullName" - case 5 => "containedRef" - case 6 => "columnNumber" - case 7 => "code" - case 8 => "argumentName" - case 9 => "argumentIndex" - case _ => "" + case 0 => "typeFullName" + case 1 => "possibleTypes" + case 2 => "parserTypeName" + case 3 => "order" + case 4 => "lineNumber" + case 5 => "dynamicTypeHintFullName" + case 6 => "containedRef" + case 7 => "columnNumber" + case 8 => "code" + case 9 => "argumentName" + case 10 => "argumentIndex" + case _ => "" } override def productPrefix = "NewUnknown" - override def productArity = 10 + override def productArity = 11 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[NewUnknown] } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/TypeRef.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/TypeRef.scala index 72fd139b2..f19d30a45 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/TypeRef.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/TypeRef.scala @@ -16,9 +16,19 @@ object TypeRef { val DynamicTypeHintFullName = "DYNAMIC_TYPE_HINT_FULL_NAME" val LineNumber = "LINE_NUMBER" val Order = "ORDER" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" - val all: Set[String] = - Set(ArgumentIndex, ArgumentName, Code, ColumnNumber, DynamicTypeHintFullName, LineNumber, Order, TypeFullName) + val all: Set[String] = Set( + ArgumentIndex, + ArgumentName, + Code, + ColumnNumber, + DynamicTypeHintFullName, + LineNumber, + Order, + PossibleTypes, + TypeFullName + ) val allAsJava: java.util.Set[String] = all.asJava } @@ -30,6 +40,7 @@ object TypeRef { val DynamicTypeHintFullName = new overflowdb.PropertyKey[IndexedSeq[String]]("DYNAMIC_TYPE_HINT_FULL_NAME") val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -106,6 +117,7 @@ trait TypeRefBase extends AbstractNode with ExpressionBase { def dynamicTypeHintFullName: IndexedSeq[String] def lineNumber: Option[Integer] def order: scala.Int + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -122,6 +134,7 @@ class TypeRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug override def dynamicTypeHintFullName: IndexedSeq[String] = get().dynamicTypeHintFullName override def lineNumber: Option[Integer] = get().lineNumber override def order: scala.Int = get().order + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -641,7 +654,8 @@ class TypeRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -654,11 +668,12 @@ class TypeRef(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "TypeRef" - override def productArity = 9 + override def productArity = 10 } class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with TypeRefBase { @@ -679,6 +694,8 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E def lineNumber: Option[Integer] = Option(_lineNumber) private var _order: scala.Int = TypeRef.PropertyDefaults.Order def order: scala.Int = _order + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = TypeRef.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -694,6 +711,7 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E } lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("ORDER", order) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -711,6 +729,7 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E } lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -906,7 +925,8 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 5 => "dynamicTypeHintFullName" case 6 => "lineNumber" case 7 => "order" - case 8 => "typeFullName" + case 8 => "possibleTypes" + case 9 => "typeFullName" } override def productElement(n: Int): Any = @@ -919,11 +939,12 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 5 => dynamicTypeHintFullName case 6 => lineNumber case 7 => order - case 8 => typeFullName + case 8 => possibleTypes + case 9 => typeFullName } override def productPrefix = "TypeRef" - override def productArity = 9 + override def productArity = 10 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[TypeRefDb] @@ -936,6 +957,7 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case "DYNAMIC_TYPE_HINT_FULL_NAME" => this._dynamicTypeHintFullName case "LINE_NUMBER" => this._lineNumber case "ORDER" => this._order + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -966,8 +988,26 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) } else collection.immutable.ArraySeq.empty } - case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] - case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] + case "ORDER" => this._order = value.asInstanceOf[scala.Int] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) @@ -994,6 +1034,9 @@ class TypeRefDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E else collection.immutable.ArraySeq.empty this._lineNumber = newNode.asInstanceOf[NewTypeRef].lineNumber.orNull this._order = newNode.asInstanceOf[NewTypeRef].order + this._possibleTypes = + if (newNode.asInstanceOf[NewTypeRef].possibleTypes != null) newNode.asInstanceOf[NewTypeRef].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewTypeRef].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Unknown.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Unknown.scala index 97447980b..aba9d9903 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Unknown.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/Unknown.scala @@ -18,6 +18,7 @@ object Unknown { val LineNumber = "LINE_NUMBER" val Order = "ORDER" val ParserTypeName = "PARSER_TYPE_NAME" + val PossibleTypes = "POSSIBLE_TYPES" val TypeFullName = "TYPE_FULL_NAME" val all: Set[String] = Set( ArgumentIndex, @@ -29,6 +30,7 @@ object Unknown { LineNumber, Order, ParserTypeName, + PossibleTypes, TypeFullName ) val allAsJava: java.util.Set[String] = all.asJava @@ -44,6 +46,7 @@ object Unknown { val LineNumber = new overflowdb.PropertyKey[Integer]("LINE_NUMBER") val Order = new overflowdb.PropertyKey[scala.Int]("ORDER") val ParserTypeName = new overflowdb.PropertyKey[String]("PARSER_TYPE_NAME") + val PossibleTypes = new overflowdb.PropertyKey[IndexedSeq[String]]("POSSIBLE_TYPES") val TypeFullName = new overflowdb.PropertyKey[String]("TYPE_FULL_NAME") } @@ -124,6 +127,7 @@ trait UnknownBase extends AbstractNode with ExpressionBase { def lineNumber: Option[Integer] def order: scala.Int def parserTypeName: String + def possibleTypes: IndexedSeq[String] def typeFullName: String } @@ -142,6 +146,7 @@ class Unknown(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug override def lineNumber: Option[Integer] = get().lineNumber override def order: scala.Int = get().order override def parserTypeName: String = get().parserTypeName + override def possibleTypes: IndexedSeq[String] = get().possibleTypes override def typeFullName: String = get().typeFullName override def propertyDefaultValue(propertyKey: String) = propertyKey match { @@ -658,7 +663,8 @@ class Unknown(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 7 => "lineNumber" case 8 => "order" case 9 => "parserTypeName" - case 10 => "typeFullName" + case 10 => "possibleTypes" + case 11 => "typeFullName" } override def productElement(n: Int): Any = @@ -673,11 +679,12 @@ class Unknown(graph_4762: Graph, id_4762: Long /*cf https://github.com/scala/bug case 7 => lineNumber case 8 => order case 9 => parserTypeName - case 10 => typeFullName + case 10 => possibleTypes + case 11 => typeFullName } override def productPrefix = "Unknown" - override def productArity = 11 + override def productArity = 12 } class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with Expression with UnknownBase { @@ -702,6 +709,8 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E def order: scala.Int = _order private var _parserTypeName: String = Unknown.PropertyDefaults.ParserTypeName def parserTypeName: String = _parserTypeName + private var _possibleTypes: IndexedSeq[String] = collection.immutable.ArraySeq.empty + def possibleTypes: IndexedSeq[String] = _possibleTypes private var _typeFullName: String = Unknown.PropertyDefaults.TypeFullName def typeFullName: String = _typeFullName @@ -719,6 +728,7 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E lineNumber.map { value => properties.put("LINE_NUMBER", value) } properties.put("ORDER", order) properties.put("PARSER_TYPE_NAME", parserTypeName) + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } properties.put("TYPE_FULL_NAME", typeFullName) properties @@ -738,6 +748,7 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E lineNumber.map { value => properties.put("LINE_NUMBER", value) } if (!((-1: Int) == order)) { properties.put("ORDER", order) } if (!(("") == parserTypeName)) { properties.put("PARSER_TYPE_NAME", parserTypeName) } + if (this._possibleTypes != null && this._possibleTypes.nonEmpty) { properties.put("POSSIBLE_TYPES", possibleTypes) } if (!(("") == typeFullName)) { properties.put("TYPE_FULL_NAME", typeFullName) } properties @@ -931,7 +942,8 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 7 => "lineNumber" case 8 => "order" case 9 => "parserTypeName" - case 10 => "typeFullName" + case 10 => "possibleTypes" + case 11 => "typeFullName" } override def productElement(n: Int): Any = @@ -946,11 +958,12 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case 7 => lineNumber case 8 => order case 9 => parserTypeName - case 10 => typeFullName + case 10 => possibleTypes + case 11 => typeFullName } override def productPrefix = "Unknown" - override def productArity = 11 + override def productArity = 12 override def canEqual(that: Any): Boolean = that != null && that.isInstanceOf[UnknownDb] @@ -965,6 +978,7 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case "LINE_NUMBER" => this._lineNumber case "ORDER" => this._order case "PARSER_TYPE_NAME" => this._parserTypeName + case "POSSIBLE_TYPES" => this._possibleTypes case "TYPE_FULL_NAME" => this._typeFullName case _ => null @@ -999,7 +1013,25 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E case "LINE_NUMBER" => this._lineNumber = value.asInstanceOf[Integer] case "ORDER" => this._order = value.asInstanceOf[scala.Int] case "PARSER_TYPE_NAME" => this._parserTypeName = value.asInstanceOf[String] - case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] + case "POSSIBLE_TYPES" => + this._possibleTypes = value match { + case null => collection.immutable.ArraySeq.empty + case singleValue: String => collection.immutable.ArraySeq(singleValue) + case coll: IterableOnce[Any] if coll.iterator.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] if arr.isEmpty => collection.immutable.ArraySeq.empty + case arr: Array[_] => collection.immutable.ArraySeq.unsafeWrapArray(arr).asInstanceOf[IndexedSeq[String]] + case jCollection: java.lang.Iterable[_] => + if (jCollection.iterator.hasNext) { + collection.immutable.ArraySeq.unsafeWrapArray( + jCollection.asInstanceOf[java.util.Collection[String]].iterator.asScala.toArray + ) + } else collection.immutable.ArraySeq.empty + case iter: Iterable[_] => + if (iter.nonEmpty) { + collection.immutable.ArraySeq.unsafeWrapArray(iter.asInstanceOf[Iterable[String]].toArray) + } else collection.immutable.ArraySeq.empty + } + case "TYPE_FULL_NAME" => this._typeFullName = value.asInstanceOf[String] case _ => PropertyErrorRegister.logPropertyErrorIfFirst(getClass, key) } @@ -1027,6 +1059,9 @@ class UnknownDb(ref: NodeRef[NodeDb]) extends NodeDb(ref) with StoredNode with E this._lineNumber = newNode.asInstanceOf[NewUnknown].lineNumber.orNull this._order = newNode.asInstanceOf[NewUnknown].order this._parserTypeName = newNode.asInstanceOf[NewUnknown].parserTypeName + this._possibleTypes = + if (newNode.asInstanceOf[NewUnknown].possibleTypes != null) newNode.asInstanceOf[NewUnknown].possibleTypes + else collection.immutable.ArraySeq.empty this._typeFullName = newNode.asInstanceOf[NewUnknown].typeFullName } diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Block.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Block.scala index 3dc68e43e..fa0700aff 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Block.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Block.scala @@ -320,6 +320,10 @@ class BlockTraversalExtGen[NodeType <: Block](val traversal: Iterator[NodeType]) traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Call.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Call.scala index 941c48909..e4ab539c4 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Call.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Call.scala @@ -490,6 +490,10 @@ class CallTraversalExtGen[NodeType <: Call](val traversal: Iterator[NodeType]) e traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to signature property */ def signature: Iterator[String] = traversal.map(_.signature) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Identifier.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Identifier.scala index 87f91b3ca..5a02f349e 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Identifier.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Identifier.scala @@ -369,6 +369,10 @@ class IdentifierTraversalExtGen[NodeType <: Identifier](val traversal: Iterator[ traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Literal.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Literal.scala index bcf38b145..dfa9770ef 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Literal.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Literal.scala @@ -313,6 +313,10 @@ class LiteralTraversalExtGen[NodeType <: Literal](val traversal: Iterator[NodeTy traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Local.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Local.scala index 493ad1e1e..cadf4e55f 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Local.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Local.scala @@ -342,6 +342,10 @@ class LocalTraversalExtGen[NodeType <: Local](val traversal: Iterator[NodeType]) traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Member.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Member.scala index f90d80f7c..f2d8ffd71 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Member.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Member.scala @@ -280,6 +280,10 @@ class MemberTraversalExtGen[NodeType <: Member](val traversal: Iterator[NodeType traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodParameterIn.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodParameterIn.scala index e8b2248df..f8eaf491a 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodParameterIn.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodParameterIn.scala @@ -418,6 +418,10 @@ class MethodParameterInTraversalExtGen[NodeType <: MethodParameterIn](val traver traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodRef.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodRef.scala index 52e6e2f53..dd45372da 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodRef.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodRef.scala @@ -377,6 +377,10 @@ class MethodRefTraversalExtGen[NodeType <: MethodRef](val traversal: Iterator[No traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodReturn.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodReturn.scala index 38f84b881..7e169c8a8 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodReturn.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/MethodReturn.scala @@ -276,6 +276,10 @@ class MethodReturnTraversalExtGen[NodeType <: MethodReturn](val traversal: Itera traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/TypeRef.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/TypeRef.scala index bbe6b0bc7..0bb8423e7 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/TypeRef.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/TypeRef.scala @@ -313,6 +313,10 @@ class TypeRefTraversalExtGen[NodeType <: TypeRef](val traversal: Iterator[NodeTy traversal.filter { node => !vset.contains(node.order) } } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Unknown.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Unknown.scala index 5487fd432..3a59d7c30 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Unknown.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversal/Unknown.scala @@ -427,6 +427,10 @@ class UnknownTraversalExtGen[NodeType <: Unknown](val traversal: Iterator[NodeTy overflowdb.traversal.filter.StringPropertyFilter.regexpNotMultiple(traversal)(_.parserTypeName, patterns) } + /** Traverse to possibleTypes property */ + def possibleTypes: Iterator[String] = + traversal.flatMap(_.possibleTypes) + /** Traverse to typeFullName property */ def typeFullName: Iterator[String] = traversal.map(_.typeFullName) diff --git a/schema/src/main/scala/io/shiftleft/codepropertygraph/schema/Hidden.scala b/schema/src/main/scala/io/shiftleft/codepropertygraph/schema/Hidden.scala index 7f04b4eb8..6a6be8a44 100644 --- a/schema/src/main/scala/io/shiftleft/codepropertygraph/schema/Hidden.scala +++ b/schema/src/main/scala/io/shiftleft/codepropertygraph/schema/Hidden.scala @@ -155,22 +155,32 @@ object Hidden extends SchemaBase { .addProperty( name = "DYNAMIC_TYPE_HINT_FULL_NAME", valueType = ValueType.String, - comment = "Type hint for the dynamic type" + comment = "Type hint for the dynamic type. These are observed to be verifiable at runtime." ) .asList() .protoId(1591) - callNode.addProperties(dynamicTypeHintFullName) - methodParameterIn.addProperties(dynamicTypeHintFullName) - methodReturn.addProperties(dynamicTypeHintFullName) - methodRef.addProperties(dynamicTypeHintFullName) - typeRef.addProperties(dynamicTypeHintFullName) - local.addProperties(dynamicTypeHintFullName) - block.addProperties(dynamicTypeHintFullName) - unknown.addProperties(dynamicTypeHintFullName) - literal.addProperties(dynamicTypeHintFullName) - identifier.addProperties(dynamicTypeHintFullName) - member.addProperties(dynamicTypeHintFullName) + val possibleTypes = builder + .addProperty( + name = "POSSIBLE_TYPES", + valueType = ValueType.String, + comment = + "Similar to `DYNAMIC_TYPE_HINT_FULL_NAME`, but that this makes no guarantee that types within this property are correct. This property is used to capture observations between node interactions during a 'may-analysis'." + ) + .asList() + .protoId(1592) + + callNode.addProperties(dynamicTypeHintFullName, possibleTypes) + methodParameterIn.addProperties(dynamicTypeHintFullName, possibleTypes) + methodReturn.addProperties(dynamicTypeHintFullName, possibleTypes) + methodRef.addProperties(dynamicTypeHintFullName, possibleTypes) + typeRef.addProperties(dynamicTypeHintFullName, possibleTypes) + local.addProperties(dynamicTypeHintFullName, possibleTypes) + block.addProperties(dynamicTypeHintFullName, possibleTypes) + unknown.addProperties(dynamicTypeHintFullName, possibleTypes) + literal.addProperties(dynamicTypeHintFullName, possibleTypes) + identifier.addProperties(dynamicTypeHintFullName, possibleTypes) + member.addProperties(dynamicTypeHintFullName, possibleTypes) /* * Declarative imports From 4ee586a9c14ad0f7239994211be59e3409ce97c5 Mon Sep 17 00:00:00 2001 From: David Baker Effendi Date: Fri, 11 Aug 2023 12:40:25 +0200 Subject: [PATCH 2/2] Update ODB Codegen to v2.100 --- build.sbt | 2 +- .../generated/nodes/NewNodes.scala | 41198 ++++++++++++++++ 2 files changed, 41199 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 9c8afe8ad..d2fe07125 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,7 @@ name := "codepropertygraph" // parsed by project/Versions.scala, updated by updateDependencies.sh val overflowdbVersion = "1.180" -val overflowdbCodegenVersion = "2.99" +val overflowdbCodegenVersion = "2.100" inThisBuild( List( diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala index 7d3d362ec..ab099b2ac 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/nodes/NewNodes.scala @@ -10,10 +10,1247 @@ abstract class NewNode extends AbstractNode with overflowdb.DetachedNodeData wit override def setRefOrId(r: Object): Unit = { this.refOrId = r } def stored: Option[StoredType] = if (refOrId != null && refOrId.isInstanceOf[StoredNode]) Some(refOrId).asInstanceOf[Option[StoredType]] else None + def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean + def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean } object NewAnnotation { def apply(): NewAnnotation = new NewAnnotation + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewAnnotation extends NewNode with AnnotationBase with ExpressionNew { @@ -102,6 +1339,14 @@ class NewAnnotation extends NewNode with AnnotationBase with ExpressionNew { res } + import NewAnnotation.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -136,6 +1381,1241 @@ class NewAnnotation extends NewNode with AnnotationBase with ExpressionNew { object NewAnnotationLiteral { def apply(): NewAnnotationLiteral = new NewAnnotationLiteral + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewAnnotationLiteral extends NewNode with AnnotationLiteralBase with ExpressionNew { @@ -216,6 +2696,14 @@ class NewAnnotationLiteral extends NewNode with AnnotationLiteralBase with Expre res } + import NewAnnotationLiteral.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -248,6 +2736,1241 @@ class NewAnnotationLiteral extends NewNode with AnnotationLiteralBase with Expre object NewAnnotationParameter { def apply(): NewAnnotationParameter = new NewAnnotationParameter + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewAnnotationParameter extends NewNode with AnnotationParameterBase with AstNodeNew { @@ -302,6 +4025,14 @@ class NewAnnotationParameter extends NewNode with AnnotationParameterBase with A res } + import NewAnnotationParameter.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -328,6 +4059,1241 @@ class NewAnnotationParameter extends NewNode with AnnotationParameterBase with A object NewAnnotationParameterAssign { def apply(): NewAnnotationParameterAssign = new NewAnnotationParameterAssign + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewAnnotationParameterAssign extends NewNode with AnnotationParameterAssignBase with AstNodeNew { @@ -382,6 +5348,14 @@ class NewAnnotationParameterAssign extends NewNode with AnnotationParameterAssig res } + import NewAnnotationParameterAssign.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -408,6 +5382,1241 @@ class NewAnnotationParameterAssign extends NewNode with AnnotationParameterAssig object NewArrayInitializer { def apply(): NewArrayInitializer = new NewArrayInitializer + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewArrayInitializer extends NewNode with ArrayInitializerBase with AstNodeNew with ExpressionNew { @@ -480,6 +6689,14 @@ class NewArrayInitializer extends NewNode with ArrayInitializerBase with AstNode res } + import NewArrayInitializer.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -510,6 +6727,10 @@ class NewArrayInitializer extends NewNode with ArrayInitializerBase with AstNode object NewBinding { def apply(): NewBinding = new NewBinding + + private val outNeighbors: Map[String, Set[String]] = Map("REF" -> Set("METHOD")) + private val inNeighbors: Map[String, Set[String]] = Map("BINDS" -> Set("TYPE_DECL")) + } class NewBinding extends NewNode with BindingBase { @@ -552,6 +6773,14 @@ class NewBinding extends NewNode with BindingBase { res } + import NewBinding.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.signature @@ -576,6 +6805,1241 @@ class NewBinding extends NewNode with BindingBase { object NewBlock { def apply(): NewBlock = new NewBlock + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewBlock extends NewNode with BlockBase with ExpressionNew { @@ -674,6 +8138,14 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { res } + import NewBlock.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -710,6 +8182,1241 @@ class NewBlock extends NewNode with BlockBase with ExpressionNew { object NewCall { def apply(): NewCall = new NewCall + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew { @@ -840,6 +9547,14 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew res } + import NewCall.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -884,6 +9599,11 @@ class NewCall extends NewNode with CallBase with CallReprNew with ExpressionNew object NewClosureBinding { def apply(): NewClosureBinding = new NewClosureBinding + + private val outNeighbors: Map[String, Set[String]] = Map("REF" -> Set("METHOD_PARAMETER_IN", "LOCAL")) + private val inNeighbors: Map[String, Set[String]] = + Map("CAPTURE" -> Set("TYPE_REF", "METHOD_REF"), "CAPTURED_BY" -> Set("LOCAL")) + } class NewClosureBinding extends NewNode with ClosureBindingBase { @@ -930,6 +9650,14 @@ class NewClosureBinding extends NewNode with ClosureBindingBase { res } + import NewClosureBinding.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.evaluationStrategy @@ -954,6 +9682,1241 @@ class NewClosureBinding extends NewNode with ClosureBindingBase { object NewComment { def apply(): NewComment = new NewComment + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewComment extends NewNode with CommentBase with AstNodeNew { @@ -1016,6 +10979,14 @@ class NewComment extends NewNode with CommentBase with AstNodeNew { res } + import NewComment.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -1044,6 +11015,10 @@ class NewComment extends NewNode with CommentBase with AstNodeNew { object NewConfigFile { def apply(): NewConfigFile = new NewConfigFile + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewConfigFile extends NewNode with ConfigFileBase { @@ -1078,6 +11053,14 @@ class NewConfigFile extends NewNode with ConfigFileBase { res } + import NewConfigFile.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.name @@ -1100,6 +11083,1241 @@ class NewConfigFile extends NewNode with ConfigFileBase { object NewControlStructure { def apply(): NewControlStructure = new NewControlStructure + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewControlStructure extends NewNode with ControlStructureBase with ExpressionNew { @@ -1188,6 +12406,14 @@ class NewControlStructure extends NewNode with ControlStructureBase with Express res } + import NewControlStructure.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.parserTypeName @@ -1222,6 +12448,10 @@ class NewControlStructure extends NewNode with ControlStructureBase with Express object NewDependency { def apply(): NewDependency = new NewDependency + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map("IMPORTS" -> Set("IMPORT")) + } class NewDependency extends NewNode with DependencyBase { @@ -1266,6 +12496,14 @@ class NewDependency extends NewNode with DependencyBase { res } + import NewDependency.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.version @@ -1290,6 +12528,1241 @@ class NewDependency extends NewNode with DependencyBase { object NewFieldIdentifier { def apply(): NewFieldIdentifier = new NewFieldIdentifier + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewFieldIdentifier extends NewNode with FieldIdentifierBase with ExpressionNew { @@ -1370,6 +13843,14 @@ class NewFieldIdentifier extends NewNode with FieldIdentifierBase with Expressio res } + import NewFieldIdentifier.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -1402,6 +13883,1241 @@ class NewFieldIdentifier extends NewNode with FieldIdentifierBase with Expressio object NewFile { def apply(): NewFile = new NewFile + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewFile extends NewNode with FileBase with AstNodeNew { @@ -1474,6 +15190,14 @@ class NewFile extends NewNode with FileBase with AstNodeNew { res } + import NewFile.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -1504,6 +15228,10 @@ class NewFile extends NewNode with FileBase with AstNodeNew { object NewFinding { def apply(): NewFinding = new NewFinding + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewFinding extends NewNode with FindingBase { @@ -1538,6 +15266,14 @@ class NewFinding extends NewNode with FindingBase { res } + import NewFinding.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.keyValuePairs @@ -1560,6 +15296,1241 @@ class NewFinding extends NewNode with FindingBase { object NewIdentifier { def apply(): NewIdentifier = new NewIdentifier + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { @@ -1666,6 +16637,14 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { res } + import NewIdentifier.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -1704,6 +16683,1241 @@ class NewIdentifier extends NewNode with IdentifierBase with ExpressionNew { object NewImport { def apply(): NewImport = new NewImport + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewImport extends NewNode with ImportBase with AstNodeNew { @@ -1808,6 +18022,14 @@ class NewImport extends NewNode with ImportBase with AstNodeNew { res } + import NewImport.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -1844,6 +18066,1241 @@ class NewImport extends NewNode with ImportBase with AstNodeNew { object NewJumpLabel { def apply(): NewJumpLabel = new NewJumpLabel + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewJumpLabel extends NewNode with JumpLabelBase with AstNodeNew { @@ -1914,6 +19371,14 @@ class NewJumpLabel extends NewNode with JumpLabelBase with AstNodeNew { res } + import NewJumpLabel.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.parserTypeName @@ -1944,6 +19409,1241 @@ class NewJumpLabel extends NewNode with JumpLabelBase with AstNodeNew { object NewJumpTarget { def apply(): NewJumpTarget = new NewJumpTarget + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewJumpTarget extends NewNode with JumpTargetBase with AstNodeNew with CfgNodeNew { @@ -2022,6 +20722,14 @@ class NewJumpTarget extends NewNode with JumpTargetBase with AstNodeNew with Cfg res } + import NewJumpTarget.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.parserTypeName @@ -2054,6 +20762,10 @@ class NewJumpTarget extends NewNode with JumpTargetBase with AstNodeNew with Cfg object NewKeyValuePair { def apply(): NewKeyValuePair = new NewKeyValuePair + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewKeyValuePair extends NewNode with KeyValuePairBase { @@ -2088,6 +20800,14 @@ class NewKeyValuePair extends NewNode with KeyValuePairBase { res } + import NewKeyValuePair.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.value @@ -2110,6 +20830,1241 @@ class NewKeyValuePair extends NewNode with KeyValuePairBase { object NewLiteral { def apply(): NewLiteral = new NewLiteral + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewLiteral extends NewNode with LiteralBase with ExpressionNew { @@ -2208,6 +22163,14 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { res } + import NewLiteral.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -2244,6 +22207,1241 @@ class NewLiteral extends NewNode with LiteralBase with ExpressionNew { object NewLocal { def apply(): NewLocal = new NewLocal + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNew { @@ -2342,6 +23540,14 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe res } + import NewLocal.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -2378,6 +23584,10 @@ class NewLocal extends NewNode with LocalBase with AstNodeNew with DeclarationNe object NewLocation { def apply(): NewLocation = new NewLocation + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewLocation extends NewNode with LocationBase { @@ -2480,6 +23690,14 @@ class NewLocation extends NewNode with LocationBase { res } + import NewLocation.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.node @@ -2518,6 +23736,1241 @@ class NewLocation extends NewNode with LocationBase { object NewMember { def apply(): NewMember = new NewMember + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMember extends NewNode with MemberBase with AstNodeNew with DeclarationNew { @@ -2606,6 +25059,14 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration res } + import NewMember.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -2640,6 +25101,10 @@ class NewMember extends NewNode with MemberBase with AstNodeNew with Declaration object NewMetaData { def apply(): NewMetaData = new NewMetaData + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewMetaData extends NewNode with MetaDataBase { @@ -2700,6 +25165,14 @@ class NewMetaData extends NewNode with MetaDataBase { res } + import NewMetaData.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.version @@ -2728,6 +25201,1241 @@ class NewMetaData extends NewNode with MetaDataBase { object NewMethod { def apply(): NewMethod = new NewMethod + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMethod extends NewNode with MethodBase with AstNodeNew with CfgNodeNew with DeclarationNew { @@ -2868,6 +26576,14 @@ class NewMethod extends NewNode with MethodBase with AstNodeNew with CfgNodeNew res } + import NewMethod.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.signature @@ -2914,6 +26630,1241 @@ class NewMethod extends NewNode with MethodBase with AstNodeNew with CfgNodeNew object NewMethodParameterIn { def apply(): NewMethodParameterIn = new NewMethodParameterIn + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMethodParameterIn @@ -3031,6 +27982,14 @@ class NewMethodParameterIn res } + import NewMethodParameterIn.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -3071,6 +28030,1241 @@ class NewMethodParameterIn object NewMethodParameterOut { def apply(): NewMethodParameterOut = new NewMethodParameterOut + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMethodParameterOut @@ -3170,6 +29364,14 @@ class NewMethodParameterOut res } + import NewMethodParameterOut.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -3206,6 +29408,1241 @@ class NewMethodParameterOut object NewMethodRef { def apply(): NewMethodRef = new NewMethodRef + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { @@ -3312,6 +30749,14 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { res } + import NewMethodRef.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -3350,6 +30795,1241 @@ class NewMethodRef extends NewNode with MethodRefBase with ExpressionNew { object NewMethodReturn { def apply(): NewMethodReturn = new NewMethodReturn + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { @@ -3438,6 +32118,14 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { res } + import NewMethodReturn.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -3472,6 +32160,1241 @@ class NewMethodReturn extends NewNode with MethodReturnBase with CfgNodeNew { object NewModifier { def apply(): NewModifier = new NewModifier + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewModifier extends NewNode with ModifierBase with AstNodeNew { @@ -3534,6 +33457,14 @@ class NewModifier extends NewNode with ModifierBase with AstNodeNew { res } + import NewModifier.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -3562,6 +33493,1241 @@ class NewModifier extends NewNode with ModifierBase with AstNodeNew { object NewNamespace { def apply(): NewNamespace = new NewNamespace + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewNamespace extends NewNode with NamespaceBase with AstNodeNew { @@ -3624,6 +34790,14 @@ class NewNamespace extends NewNode with NamespaceBase with AstNodeNew { res } + import NewNamespace.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -3652,6 +34826,1241 @@ class NewNamespace extends NewNode with NamespaceBase with AstNodeNew { object NewNamespaceBlock { def apply(): NewNamespaceBlock = new NewNamespaceBlock + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewNamespaceBlock extends NewNode with NamespaceBlockBase with AstNodeNew { @@ -3730,6 +36139,14 @@ class NewNamespaceBlock extends NewNode with NamespaceBlockBase with AstNodeNew res } + import NewNamespaceBlock.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -3762,6 +36179,1241 @@ class NewNamespaceBlock extends NewNode with NamespaceBlockBase with AstNodeNew object NewReturn { def apply(): NewReturn = new NewReturn + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewReturn extends NewNode with ReturnBase with ExpressionNew { @@ -3834,6 +37486,14 @@ class NewReturn extends NewNode with ReturnBase with ExpressionNew { res } + import NewReturn.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -3864,6 +37524,34 @@ class NewReturn extends NewNode with ReturnBase with ExpressionNew { object NewTag { def apply(): NewTag = new NewTag + + private val outNeighbors: Map[String, Set[String]] = Map("TAGGED_BY" -> Set("TAG")) + private val inNeighbors: Map[String, Set[String]] = Map( + "TAGGED_BY" -> Set( + "METHOD_REF", + "RETURN", + "METHOD_PARAMETER_OUT", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "METHOD", + "MEMBER", + "IDENTIFIER", + "TEMPLATE_DOM", + "FILE", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "BLOCK", + "FIELD_IDENTIFIER", + "IMPORT", + "LOCAL", + "TAG", + "METHOD_RETURN", + "CALL" + ) + ) + } class NewTag extends NewNode with TagBase { @@ -3898,6 +37586,14 @@ class NewTag extends NewNode with TagBase { res } + import NewTag.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.value @@ -3920,6 +37616,10 @@ class NewTag extends NewNode with TagBase { object NewTagNodePair { def apply(): NewTagNodePair = new NewTagNodePair + + private val outNeighbors: Map[String, Set[String]] = Map() + private val inNeighbors: Map[String, Set[String]] = Map() + } class NewTagNodePair extends NewNode with TagNodePairBase { @@ -3954,6 +37654,14 @@ class NewTagNodePair extends NewNode with TagNodePairBase { res } + import NewTagNodePair.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.tag @@ -3976,6 +37684,1241 @@ class NewTagNodePair extends NewNode with TagNodePairBase { object NewTemplateDom { def apply(): NewTemplateDom = new NewTemplateDom + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewTemplateDom extends NewNode with TemplateDomBase with ExpressionNew { @@ -4056,6 +38999,14 @@ class NewTemplateDom extends NewNode with TemplateDomBase with ExpressionNew { res } + import NewTemplateDom.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -4088,6 +39039,30 @@ class NewTemplateDom extends NewNode with TemplateDomBase with ExpressionNew { object NewType { def apply(): NewType = new NewType + + private val outNeighbors: Map[String, Set[String]] = Map("AST" -> Set("TYPE_ARGUMENT"), "REF" -> Set("TYPE_DECL")) + private val inNeighbors: Map[String, Set[String]] = Map( + "INHERITS_FROM" -> Set("TYPE_DECL"), + "EVAL_TYPE" -> Set( + "METHOD_REF", + "METHOD_PARAMETER_OUT", + "LITERAL", + "TYPE_REF", + "ARRAY_INITIALIZER", + "MEMBER", + "LOCAL", + "IDENTIFIER", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "BLOCK", + "METHOD_RETURN", + "CALL" + ), + "ALIAS_OF" -> Set("TYPE_DECL"), + "REF" -> Set("TYPE_ARGUMENT") + ) + } class NewType extends NewNode with TypeBase { @@ -4130,6 +39105,14 @@ class NewType extends NewNode with TypeBase { res } + import NewType.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeDeclFullName @@ -4154,6 +39137,1241 @@ class NewType extends NewNode with TypeBase { object NewTypeArgument { def apply(): NewTypeArgument = new NewTypeArgument + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewTypeArgument extends NewNode with TypeArgumentBase with AstNodeNew { @@ -4208,6 +40426,14 @@ class NewTypeArgument extends NewNode with TypeArgumentBase with AstNodeNew { res } + import NewTypeArgument.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -4234,6 +40460,1241 @@ class NewTypeArgument extends NewNode with TypeArgumentBase with AstNodeNew { object NewTypeDecl { def apply(): NewTypeDecl = new NewTypeDecl + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewTypeDecl extends NewNode with TypeDeclBase with AstNodeNew { @@ -4356,6 +41817,14 @@ class NewTypeDecl extends NewNode with TypeDeclBase with AstNodeNew { res } + import NewTypeDecl.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -4398,6 +41867,1241 @@ class NewTypeDecl extends NewNode with TypeDeclBase with AstNodeNew { object NewTypeParameter { def apply(): NewTypeParameter = new NewTypeParameter + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewTypeParameter extends NewNode with TypeParameterBase with AstNodeNew { @@ -4460,6 +43164,14 @@ class NewTypeParameter extends NewNode with TypeParameterBase with AstNodeNew { res } + import NewTypeParameter.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.order @@ -4488,6 +43200,1241 @@ class NewTypeParameter extends NewNode with TypeParameterBase with AstNodeNew { object NewTypeRef { def apply(): NewTypeRef = new NewTypeRef + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { @@ -4586,6 +44533,14 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { res } + import NewTypeRef.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName @@ -4622,6 +44577,1241 @@ class NewTypeRef extends NewNode with TypeRefBase with ExpressionNew { object NewUnknown { def apply(): NewUnknown = new NewUnknown + + private val outNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CAPTURE" -> Set("CLOSURE_BINDING"), + "IMPORTS" -> Set("DEPENDENCY"), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "INHERITS_FROM" -> Set("TYPE"), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "TAGGED_BY" -> Set("TAG"), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "BINDS" -> Set("BINDING"), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "EVAL_TYPE" -> Set("TYPE"), + "CAPTURED_BY" -> Set("CLOSURE_BINDING"), + "ALIAS_OF" -> Set("TYPE") + ) + private val inNeighbors: Map[String, Set[String]] = Map( + "BINDS_TO" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CDG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CFG" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "POST_DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REACHING_DEF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "DOMINATE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "AST" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "PARAMETER_LINK" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "RECEIVER" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "SOURCE_FILE" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONDITION" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "ARGUMENT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CALL" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "REF" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "TYPE", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "ANNOTATION_PARAMETER_ASSIGN", + "BINDING", + "LOCAL", + "CLOSURE_BINDING", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "CONTAINS" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ), + "IS_CALL_FOR_IMPORT" -> Set( + "CFG_NODE", + "ANNOTATION_LITERAL", + "LITERAL", + "TYPE_REF", + "JUMP_TARGET", + "ARRAY_INITIALIZER", + "METHOD", + "MEMBER", + "ANNOTATION_PARAMETER_ASSIGN", + "LOCAL", + "JUMP_LABEL", + "ANNOTATION_PARAMETER", + "TYPE_ARGUMENT", + "TYPE_DECL", + "METHOD_REF", + "NAMESPACE_BLOCK", + "COMMENT", + "METHOD_PARAMETER_IN", + "CONTROL_STRUCTURE", + "UNKNOWN", + "NAMESPACE", + "BLOCK", + "TYPE_PARAMETER", + "RETURN", + "EXPRESSION", + "METHOD_PARAMETER_OUT", + "FIELD_IDENTIFIER", + "IMPORT", + "IDENTIFIER", + "MODIFIER", + "METHOD_RETURN", + "CALL", + "TEMPLATE_DOM", + "CALL_REPR", + "ANNOTATION", + "FILE" + ) + ) + } class NewUnknown extends NewNode with UnknownBase with ExpressionNew { @@ -4736,6 +45926,14 @@ class NewUnknown extends NewNode with UnknownBase with ExpressionNew { res } + import NewUnknown.{outNeighbors, inNeighbors} + + override def isValidOutNeighbor(edgeLabel: String, n: NewNode): Boolean = + outNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + + override def isValidInNeighbor(edgeLabel: String, n: NewNode): Boolean = + inNeighbors.getOrElse(edgeLabel, Set.empty).contains(n.label) + override def productElement(n: Int): Any = n match { case 0 => this.typeFullName