Skip to content

Commit

Permalink
++
Browse files Browse the repository at this point in the history
  • Loading branch information
oxisto committed Nov 21, 2024
1 parent cbf373f commit 69e2d04
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@
*/
package de.fraunhofer.aisec.cpg.frontends.java

import com.github.javaparser.Range
import com.github.javaparser.TokenRange
import com.github.javaparser.ast.Node
import com.github.javaparser.ast.body.VariableDeclarator
import com.github.javaparser.ast.expr.*
import com.github.javaparser.ast.expr.Expression
Expand Down Expand Up @@ -377,7 +374,9 @@ class ExpressionHandler(lang: JavaLanguageFrontend) :
// nameExpr.getNameAsString(), new Type(UNKNOWN_TYPE), nameExpr.toString());
// }
val name = this.parseName(nameExpr.nameAsString)
return try {

return newReference(name, rawNode = expr)
/*return try {
val symbol = nameExpr.resolve()
if (symbol.isField) {
val field = symbol.asField()
Expand Down Expand Up @@ -462,7 +461,7 @@ class ExpressionHandler(lang: JavaLanguageFrontend) :
val t = unknownType()
log.info("Unresolved symbol: {}", nameExpr.nameAsString)
newReference(nameExpr.nameAsString, t, rawNode = nameExpr)
}
}*/
}

private fun handleInstanceOfExpression(expr: Expression): BinaryOperator {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ import de.fraunhofer.aisec.cpg.graph.statements.expressions.Expression
import de.fraunhofer.aisec.cpg.helpers.Benchmark
import de.fraunhofer.aisec.cpg.helpers.CommonPath
import de.fraunhofer.aisec.cpg.passes.JavaExternalTypeHierarchyResolver
import de.fraunhofer.aisec.cpg.passes.JavaFixStaticPass
import de.fraunhofer.aisec.cpg.passes.JavaExtraPass
import de.fraunhofer.aisec.cpg.passes.JavaImportResolver
import de.fraunhofer.aisec.cpg.passes.configuration.RegisterExtraPass
import de.fraunhofer.aisec.cpg.sarif.PhysicalLocation
Expand All @@ -79,7 +79,7 @@ import kotlin.jvm.optionals.getOrNull
JavaExternalTypeHierarchyResolver::class
) // this pass is always required for Java
@RegisterExtraPass(JavaImportResolver::class)
@RegisterExtraPass(JavaFixStaticPass::class)
@RegisterExtraPass(JavaExtraPass::class)
open class JavaLanguageFrontend(language: Language<JavaLanguageFrontend>, ctx: TranslationContext) :
LanguageFrontend<Node, Type>(language, ctx) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import de.fraunhofer.aisec.cpg.passes.configuration.ExecuteBefore

@DependsOn(TypeResolver::class)
@ExecuteBefore(SymbolResolver::class)
class JavaFixStaticPass(ctx: TranslationContext) : TranslationUnitPass(ctx) {
class JavaExtraPass(ctx: TranslationContext) : TranslationUnitPass(ctx) {
private lateinit var walker: SubgraphWalker.ScopedWalker

override fun accept(tu: TranslationUnitDeclaration) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,16 @@ internal class SuperCallTest : BaseTest() {
val methods = subClass.methods
val field = findByUniqueName(subClass.fields, "field")
val getField = findByUniqueName(methods, "getField")
var refs = getField.allChildren<MemberExpression>()
var refs = getField.refs
val fieldRef = findByUniquePredicate(refs) { "field" == it.code }
val getSuperField = findByUniqueName(methods, "getSuperField")
refs = getSuperField.allChildren<MemberExpression>()
val superFieldRef = findByUniquePredicate(refs) { "super.field" == it.code }
assertTrue(fieldRef.base is Reference)
assertRefersTo(fieldRef.base, getField.receiver)
// See https://github.com/Fraunhofer-AISEC/cpg/issues/1863.
// We only have a regular call expression here, if we do not resolve anything else in the
// frontend
/*assertTrue(fieldRef.base is Reference)
assertRefersTo(fieldRef.base, getField.receiver)*/
assertEquals(field, fieldRef.refersTo)
assertTrue(superFieldRef.base is Reference)
assertRefersTo(superFieldRef.base, getSuperField.receiver)
Expand Down

0 comments on commit 69e2d04

Please sign in to comment.