Fixed
Status Update
Comments
mk...@google.com <mk...@google.com>
mk...@google.com <mk...@google.com> #2
Thank you for posting an issue. I am not familiar with Kodein, however we should be able to solve this bug regardless. Can I ask for the build APK to see the compiled result of Crashlytics - or better, a small reproduction?
ey...@gmail.com <ey...@gmail.com> #3
I will try to repro in a vanilla project later today.
Otherwise I will look into getting you an apk.
Otherwise I will look into getting you an apk.
ey...@gmail.com <ey...@gmail.com> #4
I cannot repro in a vanilla project.
Is there somewhere private that I can upload an APK to?
Is there somewhere private that I can upload an APK to?
ze...@google.com <ze...@google.com> #5
Sure, you can share it with mkroghj@google.com and/or zerny@google.com
ey...@gmail.com <ey...@gmail.com> #6
I was able to repro in a vanilla project. Attached the project as a zip.
mk...@google.com <mk...@google.com> #7
Great - will take a look
mk...@google.com <mk...@google.com> #8
The problem is that we merge the interface KitGroup into CrashLytics and rewrite the signature such that it looks like a class is implementing itself. I will make a bug-fix to ensure that we will not do that going forward. As you also point to, a quick fix will be to add a keep rule for it, such that we do not merge the interface down. Will notify when I have a fix ready.
ap...@google.com <ap...@google.com> #9
Project: r8
Branch: master
commit 764a38a860e8bc7d4a65a625d3d7be43eaf800f7
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Mon Jan 13 13:18:29 2020
Do not rewrite generic signatures in target of merged classes
When merging an interface into it's super type, we rewrite the generic
signature from the source to the target, making it look like a class
is implement itself as an interface. This CL will remove the entry in
the generic signature instead.
Bug: 147386014
Change-Id: I9532104f14b4099ddfea336d153bb996a7fc3cf6
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
https://r8-review.googlesource.com/47224
Branch: master
commit 764a38a860e8bc7d4a65a625d3d7be43eaf800f7
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Mon Jan 13 13:18:29 2020
Do not rewrite generic signatures in target of merged classes
When merging an interface into it's super type, we rewrite the generic
signature from the source to the target, making it look like a class
is implement itself as an interface. This CL will remove the entry in
the generic signature instead.
Bug: 147386014
Change-Id: I9532104f14b4099ddfea336d153bb996a7fc3cf6
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
sg...@google.com <sg...@google.com> #10
This change seems to result in the following warnings when compiling R8 itself:
> Task :buildR8LibCfTestDeps
Running R8 version master with assertions enabled.
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidNTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidNTest<TB;>.TestRunner;' for method com.android.tools.r8.RunExamplesAndroidNTest$TestRunner com.android.tools.r8.RunExamplesAndroidNTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidNTest<TB;>.TestRunner;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidOTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidOTest<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesAndroidOTest$TestRunner com.android.tools.r8.RunExamplesAndroidOTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidOTest<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidPTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidPTest<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesAndroidPTest$TestRunner com.android.tools.r8.RunExamplesAndroidPTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidPTest<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesJava9Test.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesJava9Test<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesJava9Test$TestRunner com.android.tools.r8.RunExamplesJava9Test.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 99
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesJava9Test<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ThrowingBiFunction.class:
Invalid signature '<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingBiFunction<TFormal1;TFormal2;TReturn;TT;>;' for method com.android.tools.r8.ThrowingBiFunction com.android.tools.r8.ThrowingBiFunction.withHandler(java.util.function.Function).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 107
<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingBiFunction<TFormal1;TFormal2;TReturn;TT;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ThrowingFunction.class:
Invalid signature '<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingFunction<TFormal;TReturn;TT;>;' for method com.android.tools.r8.ThrowingFunction com.android.tools.r8.ThrowingFunction.withHandler(java.util.function.Function).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 105
<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingFunction<TFormal;TReturn;TT;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder.class:
Invalid signature '(TF;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;' for method com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder.setFirst(java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
(TF;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder.class:
Invalid signature '(TS;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;' for method com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder.setSecond(java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
(TS;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/b132460884/TestMap.class:
Invalid signature '<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Lcom/android/tools/r8/naming/b132460884/TestMap<TK;TV;>;' for method com.android.tools.r8.naming.b132460884.TestMap com.android.tools.r8.naming.b132460884.TestMap.of(java.lang.Object, java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Lcom/android/tools/r8/naming/b132460884/TestMap<TK;TV;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Y;' for method com.android.tools.r8.naming.signature.A$Y com.android.tools.r8.naming.signature.A.newY().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Y;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Z;' for method com.android.tools.r8.naming.signature.A$Z com.android.tools.r8.naming.signature.A.newZ().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Z;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Y.ZZ;' for method com.android.tools.r8.naming.signature.A$Y$ZZ com.android.tools.r8.naming.signature.A.newZZ().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Y.ZZ;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/regress/b72485384/GenericOuter.class:
Invalid signature '<V:TT;>(Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;)TT;' for method java.lang.Object com.android.tools.r8.regress.b72485384.GenericOuter.outerGetter(com.android.tools.r8.regress.b72485384.GenericOuter$GenericInner).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 61
<V:TT;>(Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;)TT;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/regress/b72485384/GenericOuter.class:
Invalid signature '<V:TT;>(Ljava/util/function/Function<TT;TV;>;TT;)Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;' for method com.android.tools.r8.regress.b72485384.GenericOuter$GenericInner com.android.tools.r8.regress.b72485384.GenericOuter.makeInner(java.util.function.Function, java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
<V:TT;>(Ljava/util/function/Function<TT;TV;>;TT;)Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;
> Task :buildR8LibCfTestDeps
Running R8 version master with assertions enabled.
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidNTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidNTest<TB;>.TestRunner;' for method com.android.tools.r8.RunExamplesAndroidNTest$TestRunner com.android.tools.r8.RunExamplesAndroidNTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidNTest<TB;>.TestRunner;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidOTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidOTest<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesAndroidOTest$TestRunner com.android.tools.r8.RunExamplesAndroidOTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidOTest<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesAndroidPTest.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidPTest<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesAndroidPTest$TestRunner com.android.tools.r8.RunExamplesAndroidPTest.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesAndroidPTest<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/RunExamplesJava9Test.class:
Invalid signature '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesJava9Test<TB;>.TestRunner<*>;' for method com.android.tools.r8.RunExamplesJava9Test$TestRunner com.android.tools.r8.RunExamplesJava9Test.test(java.lang.String, java.lang.String, java.lang.String).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 99
(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/tools/r8/RunExamplesJava9Test<TB;>.TestRunner<*>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ThrowingBiFunction.class:
Invalid signature '<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingBiFunction<TFormal1;TFormal2;TReturn;TT;>;' for method com.android.tools.r8.ThrowingBiFunction com.android.tools.r8.ThrowingBiFunction.withHandler(java.util.function.Function).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 107
<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingBiFunction<TFormal1;TFormal2;TReturn;TT;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ThrowingFunction.class:
Invalid signature '<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingFunction<TFormal;TReturn;TT;>;' for method com.android.tools.r8.ThrowingFunction com.android.tools.r8.ThrowingFunction.withHandler(java.util.function.Function).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 105
<T:Ljava/lang/Throwable;>(Ljava/util/function/Function<TExc;TT;>;)Lcom/android/tools/r8/ThrowingFunction<TFormal;TReturn;TT;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder.class:
Invalid signature '(TF;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;' for method com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder.setFirst(java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
(TF;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder.class:
Invalid signature '(TS;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;' for method com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder com.android.tools.r8.ir.optimize.classinliner.ClassInlinerSimplePairBuilderTest$PairBuilder.setSecond(java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
(TS;)Lcom/android/tools/r8/ir/optimize/classinliner/ClassInlinerSimplePairBuilderTest$PairBuilder<TF;TS;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/b132460884/TestMap.class:
Invalid signature '<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Lcom/android/tools/r8/naming/b132460884/TestMap<TK;TV;>;' for method com.android.tools.r8.naming.b132460884.TestMap com.android.tools.r8.naming.b132460884.TestMap.of(java.lang.Object, java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 98
<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Lcom/android/tools/r8/naming/b132460884/TestMap<TK;TV;>;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Y;' for method com.android.tools.r8.naming.signature.A$Y com.android.tools.r8.naming.signature.A.newY().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Y;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Z;' for method com.android.tools.r8.naming.signature.A$Z com.android.tools.r8.naming.signature.A.newZ().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Z;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/naming/signature/A.class:
Invalid signature '()Lcom/android/tools/r8/naming/signature/A<TT;>.Y.ZZ;' for method com.android.tools.r8.naming.signature.A$Y$ZZ com.android.tools.r8.naming.signature.A.newZZ().
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 43
()Lcom/android/tools/r8/naming/signature/A<TT;>.Y.ZZ;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/regress/b72485384/GenericOuter.class:
Invalid signature '<V:TT;>(Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;)TT;' for method java.lang.Object com.android.tools.r8.regress.b72485384.GenericOuter.outerGetter(com.android.tools.r8.regress.b72485384.GenericOuter$GenericInner).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 61
<V:TT;>(Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;)TT;
^
Warning in /usr/local/prj/r8-public/r8/build/libs/r8tests.jar:com/android/tools/r8/regress/b72485384/GenericOuter.class:
Invalid signature '<V:TT;>(Ljava/util/function/Function<TT;TV;>;TT;)Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;' for method com.android.tools.r8.regress.b72485384.GenericOuter$GenericInner com.android.tools.r8.regress.b72485384.GenericOuter.makeInner(java.util.function.Function, java.lang.Object).
Signature is ignored and will not be present in the output.
Parser error: Expected ; at position 102
<V:TT;>(Ljava/util/function/Function<TT;TV;>;TT;)Lcom/android/tools/r8/regress/b72485384/GenericOuter<TT;>.GenericInner<TV;>;
ap...@google.com <ap...@google.com> #11
Project: r8
Branch: master
commit e9e5ee2a7dadcb16bcbcb2bf34bc1d58bb29e9d4
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jan 14 12:08:40 2020
Reland "Do not rewrite generic signatures in target of merged classes"
This reverts commit ceac696c81a3a23a960ebd0acb4992019c29e053.
Bug: 147386014
Change-Id: I55e5b7a6ffcc23188e7c631d577f0ca824cd093e
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
https://r8-review.googlesource.com/47512
Branch: master
commit e9e5ee2a7dadcb16bcbcb2bf34bc1d58bb29e9d4
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jan 14 12:08:40 2020
Reland "Do not rewrite generic signatures in target of merged classes"
This reverts commit ceac696c81a3a23a960ebd0acb4992019c29e053.
Bug: 147386014
Change-Id: I55e5b7a6ffcc23188e7c631d577f0ca824cd093e
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
ap...@google.com <ap...@google.com> #12
Project: r8
Branch: 2.0
commit 3df603d82316846021d557954be5e1f5b3c98aa3
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jan 15 16:12:54 2020
Version 2.0.15
Cherry-pick: Fix version test when we are on a release branch
CL:https://r8-review.googlesource.com/47564
Cherry-pick: Reland "Do not rewrite generic signatures in target of
merged classes"
CL:https://r8-review.googlesource.com/47512
Cherry-pick: Do not classinline when root is a static get and is used with a monitor
CL:https://r8-review.googlesource.com/47280
Cherry-pick: Allow for '.' for patterns when parsing -keepattributes
CL:https://r8-review.googlesource.com/47321
Cherry-pick: Fix proguard configuration parser test to allow classname in attribute
CL:https://r8-review.googlesource.com/47361
Bug: 147386014
Bug: 147411673
Bug: 147470785
Change-Id: If56d14012b6121ab76416ea7d8a8dda78d02136e
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerEligibilityInfo.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
M src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
M src/main/java/com/android/tools/r8/ir/optimize/info/ParameterUsagesInfo.java
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/VersionTests.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetDirectMonitorTest.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetExtraMethodMonitorTest.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMonitorTest.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
A src/test/java/com/android/tools/r8/shaking/attributes/KeepAttributesDotsTest.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
https://r8-review.googlesource.com/47610
Branch: 2.0
commit 3df603d82316846021d557954be5e1f5b3c98aa3
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jan 15 16:12:54 2020
Version 2.0.15
Cherry-pick: Fix version test when we are on a release branch
CL:
Cherry-pick: Reland "Do not rewrite generic signatures in target of
merged classes"
CL:
Cherry-pick: Do not classinline when root is a static get and is used with a monitor
CL:
Cherry-pick: Allow for '.' for patterns when parsing -keepattributes
CL:
Cherry-pick: Fix proguard configuration parser test to allow classname in attribute
CL:
Bug: 147386014
Bug: 147411673
Bug: 147470785
Change-Id: If56d14012b6121ab76416ea7d8a8dda78d02136e
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerEligibilityInfo.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
M src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
M src/main/java/com/android/tools/r8/ir/optimize/info/ParameterUsagesInfo.java
M src/main/java/com/android/tools/r8/naming/ClassNameMinifier.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureAction.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
M src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
M src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/utils/IteratorUtils.java
M src/test/java/com/android/tools/r8/VersionTests.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetDirectMonitorTest.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetExtraMethodMonitorTest.java
A src/test/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerStaticGetMonitorTest.java
M src/test/java/com/android/tools/r8/naming/GenericSignatureParserTest.java
A src/test/java/com/android/tools/r8/naming/signature/SignatureOfMergedClassesTest.java
A src/test/java/com/android/tools/r8/naming/signature/merging/I.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplI.java
A src/test/java/com/android/tools/r8/naming/signature/merging/ImplK.java
A src/test/java/com/android/tools/r8/naming/signature/merging/InterfaceToKeep.java
A src/test/java/com/android/tools/r8/naming/signature/merging/J.java
A src/test/java/com/android/tools/r8/naming/signature/merging/K.java
M src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
A src/test/java/com/android/tools/r8/shaking/attributes/KeepAttributesDotsTest.java
M src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
Description
I'm hesitant to say this (in case Jake is reading), but I am using Kodein, which given a Type will check if it is assignable from the types that have bindings defined for them. It uses Class.getGenericSuperclass and Class.getGenericInterfaces to build a list of supertypes to check against.
The particular issues I'm running into is with the Crashlytics class (com.crashlytics.android.Crashlytics). It extends Kit, which is returned by getGenericSuperclass, but it also implements KitGroup. However, calling Class<Crashlytics>.getGenericInterfaces returns Crashlytics. This causes Kodein to go into an infinite loop, and eventually stack overflow. Calling Class<Crashlytics>.getInterfaces returns an empty array.
I don't explicitly reference KitGroup in my code, and it doesn't look like KitGroup is used in any of the paths. If I add a reference to it, or a keep rule for it, then it is correctly returned from getGenericInterfaces and getInterfaces, and Crashlytics is not returned from either.