diff --git a/platform/frontends/javasrc2cpg/src/test/scala/io/appthreat/javasrc2cpg/querying/TypeInferenceTests.scala b/platform/frontends/javasrc2cpg/src/test/scala/io/appthreat/javasrc2cpg/querying/TypeInferenceTests.scala index 35896fa6..2aaaf1dc 100644 --- a/platform/frontends/javasrc2cpg/src/test/scala/io/appthreat/javasrc2cpg/querying/TypeInferenceTests.scala +++ b/platform/frontends/javasrc2cpg/src/test/scala/io/appthreat/javasrc2cpg/querying/TypeInferenceTests.scala @@ -363,8 +363,8 @@ class JavaTypeRecoveryPassTests extends JavaSrcCode2CpgFixture(enableTypeRecover "hint that `transaction` may be of the null type" in { val Some(transaction) = cpg.identifier("transaction").headOption: @unchecked + transaction.dynamicTypeHintFullName.contains("null") transaction.typeFullName shouldBe "org.hibernate.Transaction" - transaction.dynamicTypeHintFullName.contains("null") } } diff --git a/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala b/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala index a20b0a11..aa58661f 100644 --- a/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala +++ b/platform/frontends/x2cpg/src/main/scala/io/appthreat/x2cpg/passes/frontend/XTypeRecovery.scala @@ -1239,7 +1239,7 @@ abstract class RecoverForXCompilationUnit[CompilationUnitType <: AstNode]( if types.size == 1 then builder.setNodeProperty(n, PropertyNames.TYPE_FULL_NAME, types.head) builder.setNodeProperty(n, PropertyNames.DYNAMIC_TYPE_HINT_FULL_NAME, Seq.empty) - else if types.size == 2 then + else if types.size == 2 && types.last.nonEmpty && types.last != "null" then builder.setNodeProperty(n, PropertyNames.TYPE_FULL_NAME, types.last) builder.setNodeProperty(n, PropertyNames.DYNAMIC_TYPE_HINT_FULL_NAME, Seq(types.head)) else builder.setNodeProperty(n, PropertyNames.DYNAMIC_TYPE_HINT_FULL_NAME, types)