diff options
author | 2022-03-09 14:51:17 +0000 | |
---|---|---|
committer | 2022-03-15 15:16:04 +0000 | |
commit | ea93542e9007eba1eb04a6f3da7f344596b9967e (patch) | |
tree | 0649f3eda3f892b69a78c3959f98db0feda0fcec | |
parent | 19255f1d9149324cc07c3b8e3910f486410dd5e8 (diff) |
Switch signature_to_elements to use tuple
Previously, it used a structured string of format <type>:<value>. A
tuple is more efficient and less prone to edge cases, such as when the
value is a field signature which itself contains a ":".
Bug: 202154151
Test: m out/soong/hiddenapi/hiddenapi-flags.csv
atest --host signature_trie_test verify_overlaps_test
pyformat -s 4 --force_quote_type double -i scripts/hiddenapi/signature_trie*
/usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc scripts/hiddenapi/signature_trie*
Change-Id: I80abaff243d98aad325df1b5a655bba7f9d04e2c
-rw-r--r-- | scripts/hiddenapi/signature_trie.py | 10 | ||||
-rwxr-xr-x | scripts/hiddenapi/signature_trie_test.py | 64 |
2 files changed, 37 insertions, 37 deletions
diff --git a/scripts/hiddenapi/signature_trie.py b/scripts/hiddenapi/signature_trie.py index 2b0973adb..5871834c2 100644 --- a/scripts/hiddenapi/signature_trie.py +++ b/scripts/hiddenapi/signature_trie.py @@ -156,16 +156,16 @@ class InteriorNode(Node): # 3 - class:UnicodeScript # 4 - member:of(I)Ljava/lang/Character$UnicodeScript; return list( - chain([f"package:{x}" for x in packages], - [f"class:{x}" for x in classes], - [f"member:{x}" for x in member], - [f"wildcard:{x}" for x in wildcard])) + chain([("package", x) for x in packages], + [("class", x) for x in classes], + [("member", x) for x in member], + [("wildcard", x) for x in wildcard])) # pylint: enable=line-too-long @staticmethod def split_element(element): - element_type, element_value = element.split(":", 1) + element_type, element_value = element return element_type, element_value @staticmethod diff --git a/scripts/hiddenapi/signature_trie_test.py b/scripts/hiddenapi/signature_trie_test.py index 6bae08aa2..e9644efbc 100755 --- a/scripts/hiddenapi/signature_trie_test.py +++ b/scripts/hiddenapi/signature_trie_test.py @@ -29,34 +29,34 @@ class TestSignatureToElements(unittest.TestCase): def test_nested_inner_classes(self): elements = [ - "package:java", - "package:lang", - "class:ProcessBuilder", - "class:Redirect", - "class:1", - "member:<init>()V", + ("package", "java"), + ("package", "lang"), + ("class", "ProcessBuilder"), + ("class", "Redirect"), + ("class", "1"), + ("member", "<init>()V"), ] signature = "Ljava/lang/ProcessBuilder$Redirect$1;-><init>()V" self.assertEqual(elements, self.signature_to_elements(signature)) def test_basic_member(self): elements = [ - "package:java", - "package:lang", - "class:Object", - "member:hashCode()I", + ("package", "java"), + ("package", "lang"), + ("class", "Object"), + ("member", "hashCode()I"), ] signature = "Ljava/lang/Object;->hashCode()I" self.assertEqual(elements, self.signature_to_elements(signature)) def test_double_dollar_class(self): elements = [ - "package:java", - "package:lang", - "class:CharSequence", - "class:", - "class:ExternalSyntheticLambda0", - "member:<init>(Ljava/lang/CharSequence;)V", + ("package", "java"), + ("package", "lang"), + ("class", "CharSequence"), + ("class", ""), + ("class", "ExternalSyntheticLambda0"), + ("member", "<init>(Ljava/lang/CharSequence;)V"), ] signature = "Ljava/lang/CharSequence$$ExternalSyntheticLambda0;" \ "-><init>(Ljava/lang/CharSequence;)V" @@ -64,43 +64,43 @@ class TestSignatureToElements(unittest.TestCase): def test_no_member(self): elements = [ - "package:java", - "package:lang", - "class:CharSequence", - "class:", - "class:ExternalSyntheticLambda0", + ("package", "java"), + ("package", "lang"), + ("class", "CharSequence"), + ("class", ""), + ("class", "ExternalSyntheticLambda0"), ] signature = "Ljava/lang/CharSequence$$ExternalSyntheticLambda0" self.assertEqual(elements, self.signature_to_elements(signature)) def test_wildcard(self): elements = [ - "package:java", - "package:lang", - "wildcard:*", + ("package", "java"), + ("package", "lang"), + ("wildcard", "*"), ] signature = "java/lang/*" self.assertEqual(elements, self.signature_to_elements(signature)) def test_recursive_wildcard(self): elements = [ - "package:java", - "package:lang", - "wildcard:**", + ("package", "java"), + ("package", "lang"), + ("wildcard", "**"), ] signature = "java/lang/**" self.assertEqual(elements, self.signature_to_elements(signature)) def test_no_packages_wildcard(self): elements = [ - "wildcard:*", + ("wildcard", "*"), ] signature = "*" self.assertEqual(elements, self.signature_to_elements(signature)) def test_no_packages_recursive_wildcard(self): elements = [ - "wildcard:**", + ("wildcard", "**"), ] signature = "**" self.assertEqual(elements, self.signature_to_elements(signature)) @@ -115,9 +115,9 @@ class TestSignatureToElements(unittest.TestCase): def test_non_standard_class_name(self): elements = [ - "package:javax", - "package:crypto", - "class:extObjectInputStream", + ("package", "javax"), + ("package", "crypto"), + ("class", "extObjectInputStream"), ] signature = "Ljavax/crypto/extObjectInputStream" self.assertEqual(elements, self.signature_to_elements(signature)) |