Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d9c4855 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Handle static methods in Plugins better.

Static methods in plugin interfaces are now left as static.

Also, don't generate "Protector" methods for methods that have a
"$" in them - these methods are generated by kapt, but don't compile
successfully in the final code.

Bug: 383569207
Flag: EXEMPT minor refactor
Test: compile code with K2 enabled
Change-Id: Ibeb635e91c75de1e6f456ba95a283a0be2f142d4
parent 39ef4727
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import javax.annotation.processing.RoundEnvironment
import javax.lang.model.element.Element
import javax.lang.model.element.ElementKind
import javax.lang.model.element.ExecutableElement
import javax.lang.model.element.Modifier
import javax.lang.model.element.PackageElement
import javax.lang.model.element.TypeElement
import javax.lang.model.type.TypeKind
@@ -165,11 +166,17 @@ class ProtectedPluginProcessor : AbstractProcessor() {
                    // Method implementations
                    for (method in methods) {
                        val methodName = method.simpleName
                        if (methods.any { methodName.startsWith("${it.simpleName}\$") }) {
                            continue
                        }
                        val returnTypeName = method.returnType.toString()
                        val callArgs = StringBuilder()
                        var isFirst = true
                        val isStatic = method.modifiers.contains(Modifier.STATIC)

                        if (!isStatic) {
                            line("@Override")
                        }
                        parenBlock("public $returnTypeName $methodName") {
                            // While copying the method signature for the proxy type, we also
                            // accumulate arguments for the nested callsite.
@@ -184,7 +191,8 @@ class ProtectedPluginProcessor : AbstractProcessor() {
                        }

                        val isVoid = method.returnType.kind == TypeKind.VOID
                        val nestedCall = "mInstance.$methodName($callArgs)"
                        val methodContainer = if (isStatic) sourceName else "mInstance"
                        val nestedCall = "$methodContainer.$methodName($callArgs)"
                        val callStatement =
                            when {
                                isVoid -> "$nestedCall;"