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

Commit b610eccf authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

Merge "apilint: Correctly parse packages with annotations" am: 57b5479a am: 436fe4c8

am: f9050da2

Change-Id: Ib3eaf5ca57cc03dbcbb70bdac73a96b77c22fd32
parents d43e8ded f9050da2
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -208,13 +208,14 @@ class Class():


class Package():
    NAME = re.compile("package(?: .*)? ([A-Za-z.]+)")

    def __init__(self, line, raw, blame):
        self.line = line
        self.raw = raw.strip(" {;")
        self.blame = blame

        raw = raw.split()
        self.name = raw[raw.index("package")+1]
        self.name = Package.NAME.match(raw).group(1)
        self.name_path = self.name.split(".")

    def __repr__(self):
+16 −0
Original line number Diff line number Diff line
@@ -369,5 +369,21 @@ class V2ParserTests(unittest.TestCase):
        m = self._method('method @NonNull public @NonNull String @NonNull [] split(@NonNull String, int);')
        self.assertEquals('java.lang.String[]', m.typ)

class PackageTests(unittest.TestCase):
    def _package(self, raw):
        return apilint.Package(123, raw, "blame")

    def test_regular_package(self):
        p = self._package("package an.pref.int {")
        self.assertEquals('an.pref.int', p.name)

    def test_annotation_package(self):
        p = self._package("package @RestrictTo(a.b.C) an.pref.int {")
        self.assertEquals('an.pref.int', p.name)

    def test_multi_annotation_package(self):
        p = self._package("package @Rt(a.b.L_G_P) @RestrictTo(a.b.C) an.pref.int {")
        self.assertEquals('an.pref.int', p.name)

if __name__ == "__main__":
    unittest.main()