diff --git a/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java b/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java index e666806bba8..e3d74063d71 100644 --- a/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java +++ b/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java @@ -2742,7 +2742,7 @@ public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) { field.setSimpleName(new String(fieldDeclaration.name)); field.setModifiers(getModifiers(fieldDeclaration.modifiers)); - field.setDocComment(getJavaDoc(fieldDeclaration.javadoc, scope.referenceCompilationUnit())); + field.setDocComment(getJavaDoc(fieldDeclaration.javadoc, context.compilationunitdeclaration)); if (fieldDeclaration.annotations != null) { int annotationsLength = fieldDeclaration.annotations.length; diff --git a/src/test/java/spoon/test/reference/TypeReferenceTest.java b/src/test/java/spoon/test/reference/TypeReferenceTest.java index 1a571feb449..1b5ec6775a3 100644 --- a/src/test/java/spoon/test/reference/TypeReferenceTest.java +++ b/src/test/java/spoon/test/reference/TypeReferenceTest.java @@ -5,6 +5,7 @@ import spoon.compiler.SpoonCompiler; import spoon.compiler.SpoonResource; import spoon.compiler.SpoonResourceHelper; +import spoon.reflect.code.CtConstructorCall; import spoon.reflect.code.CtFieldRead; import spoon.reflect.code.CtInvocation; import spoon.reflect.code.CtNewClass; @@ -446,6 +447,22 @@ public void testAnonymousClassesHaveAnEmptyStringForItsNameInNoClasspath() throw assertEquals(7, aClass.getReferencedTypes().size()); } + @Test + public void testConstructorCallInNoClasspath() throws Exception { + final Launcher launcher = new Launcher(); + launcher.addInputResource("./src/test/resources/noclasspath/Demo5.java"); + launcher.setSourceOutputDirectory("./target/trash"); + launcher.getEnvironment().setNoClasspath(true); + launcher.run(); + + final CtClass demo5 = launcher.getFactory().Class().get("Demo5"); + final CtMethod foo = demo5.getMethod("foo"); + final List elements = foo.getElements(new TypeFilter<>(CtConstructorCall.class)); + + assertEquals("A.B", elements.get(0).getType().toString()); + assertEquals("D", elements.get(1).getType().toString()); + } + @Test public void testShortTypeReference() throws Exception { diff --git a/src/test/resources/noclasspath/Demo5.java b/src/test/resources/noclasspath/Demo5.java new file mode 100644 index 00000000000..2d5f1ae0af7 --- /dev/null +++ b/src/test/resources/noclasspath/Demo5.java @@ -0,0 +1,7 @@ +public class Demo5 { + public void foo() { + A.B b = new A.B() { + D d = new D(); + }; + } +} \ No newline at end of file