From f84df8968c9547839b075fe29927de6db73fed7e Mon Sep 17 00:00:00 2001 From: Johannes Coetzee Date: Mon, 10 Feb 2025 15:02:14 +0100 Subject: [PATCH] [javasrc2cpg] Fix record accessor call receiver in pattern matches (#5301) --- .../expressions/AstForPatternExpressionsCreator.scala | 2 +- .../scala/io/joern/javasrc2cpg/querying/PatternExprTests.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/joern-cli/frontends/javasrc2cpg/src/main/scala/io/joern/javasrc2cpg/astcreation/expressions/AstForPatternExpressionsCreator.scala b/joern-cli/frontends/javasrc2cpg/src/main/scala/io/joern/javasrc2cpg/astcreation/expressions/AstForPatternExpressionsCreator.scala index 574e75463108..105ee7a2cc85 100644 --- a/joern-cli/frontends/javasrc2cpg/src/main/scala/io/joern/javasrc2cpg/astcreation/expressions/AstForPatternExpressionsCreator.scala +++ b/joern-cli/frontends/javasrc2cpg/src/main/scala/io/joern/javasrc2cpg/astcreation/expressions/AstForPatternExpressionsCreator.scala @@ -109,7 +109,7 @@ trait AstForPatternExpressionsCreator { this: AstCreator => fieldTypeFullName.orElse(Option(defaultTypeFallback())) ) - val fieldAccessorAst = callAst(fieldAccessorCall, lhsAst :: Nil) + val fieldAccessorAst = callAst(fieldAccessorCall, Nil, Option(lhsAst)) val patternInitWithRef = if (requiresTemporaryVariable) { val patternInitWithRef = initAndRefAstsForPatternInitializer(patternExpr, fieldAccessorAst) diff --git a/joern-cli/frontends/javasrc2cpg/src/test/scala/io/joern/javasrc2cpg/querying/PatternExprTests.scala b/joern-cli/frontends/javasrc2cpg/src/test/scala/io/joern/javasrc2cpg/querying/PatternExprTests.scala index bc215eab8afc..c20565e12e7a 100644 --- a/joern-cli/frontends/javasrc2cpg/src/test/scala/io/joern/javasrc2cpg/querying/PatternExprTests.scala +++ b/joern-cli/frontends/javasrc2cpg/src/test/scala/io/joern/javasrc2cpg/querying/PatternExprTests.scala @@ -1337,7 +1337,7 @@ class PatternExprTests extends JavaSrcCode2CpgFixture { valueCall.code shouldBe "((Box) o).value()" valueCall.typeFullName shouldBe "java.lang.String" - inside(valueCall.argument.l) { case List(boxCast: Call) => + inside(valueCall.receiver.l) { case List(boxCast: Call) => boxCast.name shouldBe Operators.cast boxCast.code shouldBe "(Box) o" boxCast.typeFullName shouldBe "box.Box"