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

Commit ecb807b6 authored by Paul Duffin's avatar Paul Duffin
Browse files

Simplify handling of nested classes

The `isInnerClass()` is being deprecated as it does not check if the
class is an "inner" class, i.e. a non-static "nested" class it only
checks to see if it is a "nested" class. The latter is what the code
wants but rather than try and synchronize code changes in this with
the Metalava update this change removes use of `isInnerClass()`
altogether and uses `containingClass()` instead of `parent()`. The
former will return non-null only for nested classes. The loop still
has the same behavior.

Bug: 325470146
Test: # Tested by making sure the following are unchanged by this.
      #    flag-api-mapping-PublicApi
      #    flag-api-mapping-SystemApi
      #    flag-api-mapping-ModuleLibApi
      #    flag-api-mapping-SystemServerApi
Change-Id: Ia3bfa101c9f81aacd4d769f09572d34849a6f9a6
parent 58d9eab5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -75,10 +75,10 @@ fun addFlaggedApi(builder: FlagApiMap.Builder, api: JavaMethod.Builder, flag: St
fun getClassFlag(classItem: ClassItem): String? {
    var classFlag = getFlagAnnotation(classItem)
    var cur = classItem
    // If a class is not an inner class, use its @FlaggedApi annotation value.
    // If a class is not a nested class, use its @FlaggedApi annotation value.
    // Otherwise, use the flag value of the closest outer class that is annotated by @FlaggedApi.
    while (cur.isInnerClass() && classFlag == null) {
        cur = cur.parent() as ClassItem
    while (classFlag == null) {
        cur = cur.containingClass() ?: break
        classFlag = getFlagAnnotation(cur)
    }
    return classFlag