Skip to content

Commit

Permalink
Reproduce bug INRIA#1213
Browse files Browse the repository at this point in the history
  • Loading branch information
surli committed Mar 10, 2017
1 parent 5472369 commit fb9fa7a
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
27 changes: 27 additions & 0 deletions src/test/java/spoon/test/field/FieldTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,17 @@

import org.junit.Test;

import spoon.reflect.code.CtExpression;
import spoon.reflect.code.CtFieldRead;
import spoon.reflect.code.CtReturn;
import spoon.reflect.declaration.CtClass;
import spoon.reflect.declaration.CtField;
import spoon.reflect.declaration.CtMethod;
import spoon.reflect.declaration.ModifierKind;
import spoon.reflect.factory.Factory;
import spoon.reflect.visitor.filter.TypeFilter;
import spoon.support.reflect.eval.VisitorPartialEvaluator;
import spoon.test.field.testclasses.A;
import spoon.test.field.testclasses.AddFieldAtTop;

public class FieldTest {
Expand Down Expand Up @@ -102,4 +107,26 @@ private CtField<Integer> createField(Factory factory, HashSet<ModifierKind> modi
first.setSimpleName(name);
return first;
}

@Test
public void testGetDefaultExpression() throws Exception {
final CtClass<A> aClass = (CtClass<A>) buildClass(A.class);

CtClass<A.ClassB> bClass = aClass.getFactory().Class().get(A.ClassB.class);
List<CtMethod<?>> methods = bClass.getMethodsByName("getKey");

assertEquals(1, methods.size());

CtReturn<?> returnExpression = methods.get(0).getBody().getStatement(0);

CtFieldRead field = (CtFieldRead) returnExpression.getReturnedExpression();

assertEquals("spoon.test.field.testclasses.A.BaseClass.PREFIX", field.toString());

VisitorPartialEvaluator visitorPartial = new VisitorPartialEvaluator();

Object retour = visitorPartial.evaluate(methods.get(0));

assertTrue(retour != null);
}
}
17 changes: 17 additions & 0 deletions src/test/java/spoon/test/field/testclasses/A.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package spoon.test.field.testclasses;

/**
* Created by urli on 10/03/2017.
*/
public class A {
public class BaseClass {
public final static String PREFIX = "BasePrefix";
}

public class ClassB {
public final static String PREFIX = BaseClass.PREFIX + ".b";
public String getKey() {
return BaseClass.PREFIX;
}
}
}

0 comments on commit fb9fa7a

Please sign in to comment.