- NODE PROPERTIES:
â–¸ ArgumentIndex (Int); Cardinality one
(mandatory with default value -1
); AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return expression of a BLOCK expression. If the PARAMETER_NAME
field is set, then the ARGUMENT_INDEX
field is ignored. It is suggested to set it to -1.
â–¸ ArgumentName (String); Cardinality ZeroOrOne
(optional); For calls involving named parameters, the ARGUMENT_NAME
field holds the name of the parameter initialized by the expression. For all other calls, this field is unset.
â–¸ Code (String); Cardinality one
(mandatory with default value <empty>
); This field holds the code snippet that the node represents.
â–¸ ColumnNumber (Int); Cardinality ZeroOrOne
(optional); This optional fields provides the column number of the program construct represented by the node.
â–¸ DispatchType (String); Cardinality one
(mandatory with default value <empty>
); This field holds the dispatch type of a call, which is either STATIC_DISPATCH
or DYNAMIC_DISPATCH
. For statically dispatched method calls, the call target is known at compile time while for dynamically dispatched calls, it can only be determined at runtime as it may depend on the type of an object (as is the case for virtual method calls) or calculation of an offset.
â–¸ DynamicTypeHintFullName (String); Cardinality List
(many); Type hint for the dynamic type. These are observed to be verifiable at runtime.
â–¸ LineNumber (Int); Cardinality ZeroOrOne
(optional); This optional field provides the line number of the program construct represented by the node.
â–¸ MethodFullName (String); Cardinality one
(mandatory with default value <empty>
); The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME
â–¸ Name (String); Cardinality one
(mandatory with default value <empty>
); Name of represented object, e.g., method name (e.g. "run")
â–¸ Offset (Int); Cardinality ZeroOrOne
(optional); Start offset into the CONTENT property of the corresponding FILE node. The offset is such that parts of the content can easily be accessed via content.substring(offset, offsetEnd)
. This means that the offset must be measured in utf16 encoding (i.e. neither in characters/codeunits nor in byte-offsets into a utf8 encoding). E.g. for METHOD nodes this start offset points to the start of the methods source code in the string holding the source code of the entire file.
â–¸ OffsetEnd (Int); Cardinality ZeroOrOne
(optional); End offset (exclusive) into the CONTENT property of the corresponding FILE node. See OFFSET documentation for finer details. E.g. for METHOD nodes this end offset points to the first code position which is not part of the method.
â–¸ Order (Int); Cardinality one
(mandatory with default value -1
); This integer indicates the position of the node among its siblings in the AST. The left-most child has an order of 0.
â–¸ PossibleTypes (String); Cardinality List
(many); 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'.
â–¸ Signature (String); Cardinality one
(mandatory with default value ``); The method signature encodes the types of parameters in a string. The string SHOULD be human readable and suitable for differentiating methods with different parameter types sufficiently to allow for resolving of function overloading. The present specification does not enforce a strict format for the signature, that is, it can be chosen by the frontend implementor to fit the source language.
â–¸ TypeFullName (String); Cardinality one
(mandatory with default value <empty>
); This field contains the fully-qualified static type name of the program construct represented by a node. It is the name of an instantiated type, e.g., java.util.List<Integer>
, rather than java.util.List[T]
. If the type cannot be determined, this field should be set to the empty string.
Attributes
- Companion
- object
- Graph
-
- Supertypes
-
trait Expressiontrait CallReprtrait CfgNodetrait AstNodetrait CallBasetrait ExpressionBasetrait CallReprBasetrait CfgNodeBasetrait AstNodeBaseclass StoredNodetrait AbstractNodetrait Producttrait Equalstrait StaticType[CallEMT]class GNodetrait DNodeOrNodeclass Objecttrait Matchableclass Any