Class VariableUsageResolver
- All Implemented Interfaces:
java.util.function.Consumer<TranslationResult>
public class VariableUsageResolver extends Pass
A field access is modeled with a MemberExpression. After AST building, its base and
member references are set to DeclaredReferenceExpression stubs. This pass resolves those
references and makes the member point to the appropriate FieldDeclaration and the base to
the "this" FieldDeclaration of the containing class. It is also capable of resolving
references to fields that are inherited from a superclass and thus not declared in the actual
base class. When base or member declarations are not found in the graph, a new "inferred" FieldDeclaration is being created that is then used to collect all usages to the same unknown
declaration. DeclaredReferenceExpression stubs are removed from the graph after being
resolved.
A local variable access is modeled directly with a DeclaredReferenceExpression. This
step of the pass doesn't remove the DeclaredReferenceExpression nodes like in the field
usage case but rather makes their "refersTo" point to the appropriate ValueDeclaration.
-
Field Summary
-
Constructor Summary
Constructors Constructor Description VariableUsageResolver() -
Method Summary
Modifier and Type Method Description voidaccept(TranslationResult result)voidcleanup()Methods inherited from class de.fraunhofer.aisec.cpg.passes.Pass
getLang, setLang, supportsLanguageFrontendMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.function.Consumer
andThen