diff options
Diffstat (limited to 'javatests/com/google/turbine/lower/LowerTest.java')
-rw-r--r-- | javatests/com/google/turbine/lower/LowerTest.java | 95 |
1 files changed, 85 insertions, 10 deletions
diff --git a/javatests/com/google/turbine/lower/LowerTest.java b/javatests/com/google/turbine/lower/LowerTest.java index a6410db..2de4650 100644 --- a/javatests/com/google/turbine/lower/LowerTest.java +++ b/javatests/com/google/turbine/lower/LowerTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import org.objectweb.asm.Opcodes; import com.google.turbine.binder.Binder; import com.google.turbine.binder.Binder.BindingResult; import com.google.turbine.binder.ClassPathBinder; @@ -232,7 +233,7 @@ public class LowerTest { Map<String, byte[]> bytes = Lower.lowerAll( - LanguageVersion.createDefault(), + Lower.LowerOptions.createDefault(), ImmutableMap.of( new ClassSymbol("test/Test"), c, new ClassSymbol("test/Test$Inner"), i), ImmutableList.of(), @@ -260,10 +261,10 @@ public class LowerTest { "}"))), ClassPathBinder.bindClasspath(ImmutableList.of()), TURBINE_BOOTCLASSPATH, - /* moduleVersion=*/ Optional.empty()); + /* moduleVersion= */ Optional.empty()); Map<String, byte[]> lowered = Lower.lowerAll( - LanguageVersion.createDefault(), + Lower.LowerOptions.createDefault(), bound.units(), bound.modules(), bound.classPathEnv()) @@ -340,10 +341,10 @@ public class LowerTest { "}"))), ClassPathBinder.bindClasspath(ImmutableList.of()), TURBINE_BOOTCLASSPATH, - /* moduleVersion=*/ Optional.empty()); + /* moduleVersion= */ Optional.empty()); Map<String, byte[]> lowered = Lower.lowerAll( - LanguageVersion.createDefault(), + Lower.LowerOptions.createDefault(), bound.units(), bound.modules(), bound.classPathEnv()) @@ -423,10 +424,10 @@ public class LowerTest { ImmutableList.of(Parser.parse("@Deprecated class Test {}")), ClassPathBinder.bindClasspath(ImmutableList.of()), TURBINE_BOOTCLASSPATH, - /* moduleVersion=*/ Optional.empty()); + /* moduleVersion= */ Optional.empty()); Map<String, byte[]> lowered = Lower.lowerAll( - LanguageVersion.createDefault(), + Lower.LowerOptions.createDefault(), bound.units(), bound.modules(), bound.classPathEnv()) @@ -544,7 +545,7 @@ public class LowerTest { .put( "Test.java", lines( - "public class Test extends B.BM {", // + "public class Test implements B.BM {", // " I i;", "}")) .build(); @@ -649,10 +650,14 @@ public class LowerTest { ImmutableList.of(Parser.parse("class Test {}")), ClassPathBinder.bindClasspath(ImmutableList.of()), TURBINE_BOOTCLASSPATH, - /* moduleVersion=*/ Optional.empty()); + /* moduleVersion= */ Optional.empty()); Map<String, byte[]> lowered = Lower.lowerAll( - LanguageVersion.fromJavacopts(ImmutableList.of("-source", "7", "-target", "7")), + Lower.LowerOptions.builder() + .languageVersion( + LanguageVersion.fromJavacopts( + ImmutableList.of("-source", "7", "-target", "7"))) + .build(), bound.units(), bound.modules(), bound.classPathEnv()) @@ -676,6 +681,76 @@ public class LowerTest { assertThat(major[0]).isEqualTo(Opcodes.V1_8); } + @Test + public void privateFields() throws Exception { + BindingResult bound = + Binder.bind( + ImmutableList.of( + Parser.parse( + "class Test {\n" // + + " private int x;\n" + + " int y;\n" + + "}")), + ClassPathBinder.bindClasspath(ImmutableList.of()), + TURBINE_BOOTCLASSPATH, + /* moduleVersion= */ Optional.empty()); + ImmutableMap<String, byte[]> lowered = + Lower.lowerAll( + Lower.LowerOptions.builder().emitPrivateFields(true).build(), + bound.units(), + bound.modules(), + bound.classPathEnv()) + .bytes(); + List<String> fields = new ArrayList<>(); + new ClassReader(lowered.get("Test")) + .accept( + new ClassVisitor(Opcodes.ASM9) { + @Override + public FieldVisitor visitField( + int access, String name, String descriptor, String signature, Object value) { + fields.add(name); + return null; + } + }, + 0); + assertThat(fields).containsExactly("x", "y"); + } + + @Test + public void noPrivateFields() throws Exception { + BindingResult bound = + Binder.bind( + ImmutableList.of( + Parser.parse( + "class Test {\n" // + + " private int x;\n" + + " int y;\n" + + "}")), + ClassPathBinder.bindClasspath(ImmutableList.of()), + TURBINE_BOOTCLASSPATH, + /* moduleVersion= */ Optional.empty()); + ImmutableMap<String, byte[]> lowered = + Lower.lowerAll( + Lower.LowerOptions.createDefault(), + bound.units(), + bound.modules(), + bound.classPathEnv()) + .bytes(); + List<String> fields = new ArrayList<>(); + new ClassReader(lowered.get("Test")) + .accept( + new ClassVisitor(Opcodes.ASM9) { + @Override + public FieldVisitor visitField( + int access, String name, String descriptor, String signature, Object value) { + fields.add(name); + return null; + } + }, + 0); + assertThat(fields).containsExactly("y"); + } + static String lines(String... lines) { return Joiner.on(System.lineSeparator()).join(lines); } |