commit | 93df3700c717dcace1abae3cce9f19294bde650a | [log] [tgz] |
---|---|---|
author | Clément Béra <clementbera@google.com> | Tue Nov 21 13:52:41 2023 +0100 |
committer | Clément Béra <clementbera@google.com> | Tue Nov 21 13:53:26 2023 +0000 |
tree | 19ef944a2be8bef339538be71f9251bd092cdd8a | |
parent | da8da5871fb319227b220ebcd2f9bab38202c55a [diff] |
Desugar collections fix conversion for Google3 integration Change-Id: I0329c8e3fbbfb4c043f3f47d1e2894ff222fd574
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java index b1a71cf..e270daf 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java
@@ -320,6 +320,20 @@ cfInstructions.add(new CfInvoke(invoke.getOpcode(), convertedMethod, invoke.isInterface())); if (returnConversion != null) { + assert returnConversion.getArity() == 1 || returnConversion.getArity() == 2; + if (returnConversion.getArity() == 2) { + // If there is a second parameter, pass the receiver. + if (!invoke.isInvokeSuper(context.getHolderType())) { + appView + .reporter() + .error( + "Cannot generate inlined api conversion for return type for " + + invoke.getMethod() + + " in " + + context.getReference()); + } + cfInstructions.add(new CfLoad(ValueType.OBJECT, 0)); + } cfInstructions.add(new CfInvoke(Opcodes.INVOKESTATIC, returnConversion, false)); }