summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGoogler <noreply@google.com>2017-10-06 23:31:07 +0200
committerColin Cross <ccross@android.com>2017-10-24 12:21:01 -0700
commit687ddfa84472eb5c5a4744cee5a208338afae9cf (patch)
tree616c35b85801b209c92523949101c539e29baf65 /test
parent06bf81d78481f54e0449331ba869b9644910712d (diff)
downloaddesugar-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')
-rw-r--r--test/java/com/google/devtools/build/android/desugar/DesugarJava8FunctionalTest.java6
-rw-r--r--test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java6
-rw-r--r--test/java/com/google/devtools/build/android/desugar/class_with_lambdas_in_implemented_interface_disassembled_golden.txt1
-rw-r--r--test/java/com/google/devtools/build/android/desugar/interface_with_desugared_method_bodies_disassembled_golden.txt1
-rw-r--r--test/java/com/google/devtools/build/android/desugar/testdata/java8/InterfaceMethod.java5
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());
}