diff options
author | Googler <noreply@google.com> | 2017-10-06 23:31:07 +0200 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-10-24 12:21:01 -0700 |
commit | 687ddfa84472eb5c5a4744cee5a208338afae9cf (patch) | |
tree | 616c35b85801b209c92523949101c539e29baf65 /test | |
parent | 06bf81d78481f54e0449331ba869b9644910712d (diff) | |
download | desugar-687ddfa84472eb5c5a4744cee5a208338afae9cf.tar.gz |
Do not rewrite static interface method invocations from bootclasspath
RELNOTES: n/a
PiperOrigin-RevId: 171344856
GitOrigin-RevId: 38da0c2e6e082964e32e8646439cdec7cd50808f
Change-Id: Ice56501cd04133409dacde89318abac85b1828b9
Diffstat (limited to 'test')
5 files changed, 16 insertions, 3 deletions
diff --git a/test/java/com/google/devtools/build/android/desugar/DesugarJava8FunctionalTest.java b/test/java/com/google/devtools/build/android/desugar/DesugarJava8FunctionalTest.java index 63d8d27..20e6028 100644 --- a/test/java/com/google/devtools/build/android/desugar/DesugarJava8FunctionalTest.java +++ b/test/java/com/google/devtools/build/android/desugar/DesugarJava8FunctionalTest.java @@ -114,6 +114,12 @@ public class DesugarJava8FunctionalTest extends DesugarFunctionalTest { } @Test + public void testBootclasspathMethodInvocations() { + InterfaceMethod concrete = new InterfaceMethod.Concrete(); + assertThat(concrete.defaultInvokingBootclasspathMethods("Larry")).isEqualTo("Larry"); + } + + @Test public void testStaticMethodsInInterface_explicitAndLambdaBody() { List<Long> result = FunctionWithDefaultMethod.DoubleInts.add(ImmutableList.of(7, 39, 8), 3); assertThat(result).containsExactly(10L, 42L, 11L).inOrder(); diff --git a/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java b/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java index b8c8b54..2eab943 100644 --- a/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java +++ b/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java @@ -31,7 +31,7 @@ public class Java7CompatibilityTest { public void testJava7CompatibleInterface() throws Exception { ClassReader reader = new ClassReader(ExtendsDefault.class.getName()); ClassTester tester = new ClassTester(); - reader.accept(new Java7Compatibility(tester, null), 0); + reader.accept(new Java7Compatibility(tester, null, null), 0); assertThat(tester.version).isEqualTo(Opcodes.V1_7); assertThat(tester.bridgeMethods).isEqualTo(0); // make sure we strip bridge methods assertThat(tester.clinitMethods).isEqualTo(1); // make sure we don't strip <clinit> @@ -41,7 +41,7 @@ public class Java7CompatibilityTest { public void testDefaultMethodFails() throws Exception { ClassReader reader = new ClassReader(WithDefault.class.getName()); try { - reader.accept(new Java7Compatibility(null, null), 0); + reader.accept(new Java7Compatibility(null, null, null), 0); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException expected) { assertThat(expected).hasMessageThat().contains("getVersion()I"); @@ -56,7 +56,7 @@ public class Java7CompatibilityTest { public void testConcreteClassRedeclaresBridges() throws Exception { ClassReader reader = new ClassReader(Impl.class.getName()); ClassTester tester = new ClassTester(); - reader.accept(new Java7Compatibility(tester, null), 0); + reader.accept(new Java7Compatibility(tester, null, null), 0); assertThat(tester.version).isEqualTo(Opcodes.V1_7); assertThat(tester.bridgeMethods).isEqualTo(2); } diff --git a/test/java/com/google/devtools/build/android/desugar/class_with_lambdas_in_implemented_interface_disassembled_golden.txt b/test/java/com/google/devtools/build/android/desugar/class_with_lambdas_in_implemented_interface_disassembled_golden.txt index 48a8632..73a563a 100644 --- a/test/java/com/google/devtools/build/android/desugar/class_with_lambdas_in_implemented_interface_disassembled_golden.txt +++ b/test/java/com/google/devtools/build/android/desugar/class_with_lambdas_in_implemented_interface_disassembled_golden.txt @@ -2,6 +2,7 @@ Compiled from "InterfaceMethod.java" public class com.google.devtools.build.android.desugar.testdata.java8.InterfaceMethod$Concrete implements com.google.devtools.build.android.desugar.testdata.java8.InterfaceMethod { public com.google.devtools.build.android.desugar.testdata.java8.InterfaceMethod$Concrete(); public java.util.List defaultMethodReference(java.util.List); + public java.lang.String defaultInvokingBootclasspathMethods(java.lang.String); public java.util.List staticMethodReference(java.util.List); public java.util.List lambdaCallsDefaultMethod(java.util.List); public boolean startsWithS(java.lang.String); diff --git a/test/java/com/google/devtools/build/android/desugar/interface_with_desugared_method_bodies_disassembled_golden.txt b/test/java/com/google/devtools/build/android/desugar/interface_with_desugared_method_bodies_disassembled_golden.txt index 828cee4..2d993a6 100644 --- a/test/java/com/google/devtools/build/android/desugar/interface_with_desugared_method_bodies_disassembled_golden.txt +++ b/test/java/com/google/devtools/build/android/desugar/interface_with_desugared_method_bodies_disassembled_golden.txt @@ -1,6 +1,7 @@ Compiled from "InterfaceMethod.java" public interface com.google.devtools.build.android.desugar.testdata.java8.InterfaceMethod { public abstract java.util.List<java.lang.String> defaultMethodReference(java.util.List<java.lang.String>); + public abstract java.lang.String defaultInvokingBootclasspathMethods(java.lang.String); public abstract java.util.List<java.lang.String> staticMethodReference(java.util.List<java.lang.String>); public abstract java.util.List<java.lang.String> lambdaCallsDefaultMethod(java.util.List<java.lang.String>); public abstract boolean startsWithS(java.lang.String); diff --git a/test/java/com/google/devtools/build/android/desugar/testdata/java8/InterfaceMethod.java b/test/java/com/google/devtools/build/android/desugar/testdata/java8/InterfaceMethod.java index 622e6e5..ae2b6e1 100644 --- a/test/java/com/google/devtools/build/android/desugar/testdata/java8/InterfaceMethod.java +++ b/test/java/com/google/devtools/build/android/desugar/testdata/java8/InterfaceMethod.java @@ -15,6 +15,7 @@ package com.google.devtools.build.android.desugar.testdata.java8; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * Desugar test input interface that declares lambdas and method references in default and static @@ -25,6 +26,10 @@ public interface InterfaceMethod { return names.stream().filter(this::startsWithS).collect(Collectors.toList()); } + public default String defaultInvokingBootclasspathMethods(String expectedValue) { + return Stream.of(expectedValue).findFirst().orElse("unexpected"); + } + public default List<String> staticMethodReference(List<String> names) { return names.stream().filter(InterfaceMethod::startsWithA).collect(Collectors.toList()); } |