diff --git a/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java b/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java index 5ee3f8f2302..4d4716a5337 100644 --- a/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java +++ b/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java @@ -768,7 +768,8 @@ private boolean isInitializeStaticFinalField(CtExpression targetExp) { && targetExp.equals(((CtFieldWrite) parent).getTarget()) && anonymousParent != null && ((CtFieldWrite) parent).getVariable() != null - && ((CtFieldWrite) parent).getVariable().getModifiers().contains(ModifierKind.STATIC)) { + && ((CtFieldWrite) parent).getVariable().getModifiers().contains(ModifierKind.STATIC) + && ((CtFieldWrite) parent).getVariable().getModifiers().contains(ModifierKind.FINAL)) { return true; } return false; diff --git a/src/test/java/spoon/test/fieldaccesses/FieldAccessTest.java b/src/test/java/spoon/test/fieldaccesses/FieldAccessTest.java index aa7795ba7c9..e8a8b3d4f22 100644 --- a/src/test/java/spoon/test/fieldaccesses/FieldAccessTest.java +++ b/src/test/java/spoon/test/fieldaccesses/FieldAccessTest.java @@ -15,6 +15,7 @@ import spoon.reflect.code.CtUnaryOperator; import spoon.reflect.code.CtVariableWrite; import spoon.reflect.code.UnaryOperatorKind; +import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtField; import spoon.reflect.declaration.CtMethod; import spoon.reflect.declaration.CtParameter; @@ -26,6 +27,7 @@ import spoon.reflect.visitor.Query; import spoon.reflect.visitor.filter.NameFilter; import spoon.reflect.visitor.filter.TypeFilter; +import spoon.test.fieldaccesses.testclasses.B; import spoon.test.fieldaccesses.testclasses.Kuu; import spoon.test.fieldaccesses.testclasses.Panini; import spoon.test.fieldaccesses.testclasses.Pozole; @@ -378,4 +380,12 @@ public void visitCtFieldWrite(CtFieldWrite fieldWrite) { assertEquals(1, scanner.visited); } + + @Test + public void testGetReference() throws Exception { + final CtClass aClass = (CtClass) ModelUtils.buildClass(B.class); + aClass.getFactory().getEnvironment().setAutoImports(true); + + assertEquals("A.myField", aClass.getElements(new TypeFilter<>(CtFieldWrite.class)).get(0).toString()); + } } diff --git a/src/test/java/spoon/test/fieldaccesses/testclasses/A.java b/src/test/java/spoon/test/fieldaccesses/testclasses/A.java new file mode 100644 index 00000000000..701f41d7430 --- /dev/null +++ b/src/test/java/spoon/test/fieldaccesses/testclasses/A.java @@ -0,0 +1,5 @@ +package spoon.test.fieldaccesses.testclasses; + +public class A { + public static int myField = 3; +} \ No newline at end of file diff --git a/src/test/java/spoon/test/fieldaccesses/testclasses/B.java b/src/test/java/spoon/test/fieldaccesses/testclasses/B.java new file mode 100644 index 00000000000..8f42e0e6d3f --- /dev/null +++ b/src/test/java/spoon/test/fieldaccesses/testclasses/B.java @@ -0,0 +1,7 @@ +package spoon.test.fieldaccesses.testclasses; + +public class B { + static { + A.myField = 5; + } +} \ No newline at end of file