Use CallableItem in place of MethodItem
The `MethodItem` type represents both a normal method as well as being the super type of `ConstructorItem`. That organization causes a number of issues in Metalava and has lead to quite a few issues where code that only expected to be run on methods and not constructors was run on both. So, a new type `CallableItem` has been added that will eventually become the super type of both `MethodItem` and `ConstructorItem` and `ConstructorItem` will no longer extend `MethodItem`. This change prepares this code for that change by overriding `visitCallable(CallableItem)` instead of `visitMethod(MethodItem)` because the latter is only called for methods not constructors. Bug: 352481366 Test: atest check-flagged-apis-test Change-Id: I3039bc0154b00ca57cb48c7447c5901b991b57e5
This commit is contained in:
@@ -19,10 +19,10 @@ package com.android.checkflaggedapis
|
||||
|
||||
import android.aconfig.Aconfig
|
||||
import com.android.tools.metalava.model.BaseItemVisitor
|
||||
import com.android.tools.metalava.model.CallableItem
|
||||
import com.android.tools.metalava.model.ClassItem
|
||||
import com.android.tools.metalava.model.FieldItem
|
||||
import com.android.tools.metalava.model.Item
|
||||
import com.android.tools.metalava.model.MethodItem
|
||||
import com.android.tools.metalava.model.text.ApiFile
|
||||
import com.github.ajalt.clikt.core.CliktCommand
|
||||
import com.github.ajalt.clikt.core.ProgramResult
|
||||
@@ -274,15 +274,15 @@ internal fun parseApiSignature(path: String, input: InputStream): Set<Pair<Symbo
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitMethod(method: MethodItem) {
|
||||
getFlagOrNull(method)?.let { flag ->
|
||||
val methodName = buildString {
|
||||
append(method.name())
|
||||
override fun visitCallable(callable: CallableItem) {
|
||||
getFlagOrNull(callable)?.let { flag ->
|
||||
val callableSignature = buildString {
|
||||
append(callable.name())
|
||||
append("(")
|
||||
method.parameters().joinTo(this, separator = "") { it.type().internalName() }
|
||||
callable.parameters().joinTo(this, separator = "") { it.type().internalName() }
|
||||
append(")")
|
||||
}
|
||||
val symbol = Symbol.createMethod(method.containingClass().qualifiedName(), methodName)
|
||||
val symbol = Symbol.createMethod(callable.containingClass().qualifiedName(), callableSignature)
|
||||
output.add(Pair(symbol, flag))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user