diff --git a/java-frontend/src/test/java/org/sonar/java/model/JTypeSymbolTest.java b/java-frontend/src/test/java/org/sonar/java/model/JTypeSymbolTest.java index 35da7717d9a..05296276bc4 100644 --- a/java-frontend/src/test/java/org/sonar/java/model/JTypeSymbolTest.java +++ b/java-frontend/src/test/java/org/sonar/java/model/JTypeSymbolTest.java @@ -22,6 +22,7 @@ import org.sonar.java.model.declaration.ClassTreeImpl; import org.sonar.java.model.declaration.MethodTreeImpl; import org.sonar.java.model.declaration.VariableTreeImpl; +import org.sonar.plugins.java.api.semantic.Type; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; @@ -60,6 +61,17 @@ void superClass() { ); } + @Test + void testSuperClassWhenSemanticCanNotResolveObjectType() { + var cu = test("interface I{}"); + var i = (ClassTreeImpl) cu.types().get(0); + + JSema sematicThatCanNotResolveObjectType = spy(cu.sema); + when(sematicThatCanNotResolveObjectType.resolveType("java.lang.Object")).thenReturn(null); + var typeSymbol = new JTypeSymbol(sematicThatCanNotResolveObjectType, i.typeBinding); + assertThat(typeSymbol.superClass()).isSameAs(Type.UNKNOWN); + } + @Test void interfaces() { JavaTree.CompilationUnitTreeImpl cu = test("interface I { } class C implements I { }");