llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Jannick Kremer (DeinAlptraum)

<details>
<summary>Changes</summary>

Add tests to ensure string-comparability with CompletionChunk.Kind

---
Full diff: https://github.com/llvm/llvm-project/pull/176631.diff


3 Files Affected:

- (modified) clang/bindings/python/clang/cindex.py (+48) 
- (modified) clang/bindings/python/tests/cindex/test_code_completion.py (+12-1) 
- (modified) clang/bindings/python/tests/cindex/test_enums.py (+2) 


``````````diff
diff --git a/clang/bindings/python/clang/cindex.py 
b/clang/bindings/python/clang/cindex.py
index 29c35628cf60c..45a8ddf83bb27 100644
--- a/clang/bindings/python/clang/cindex.py
+++ b/clang/bindings/python/clang/cindex.py
@@ -3117,6 +3117,54 @@ def isKindInformative(self) -> bool:
     def isKindResultType(self) -> bool:
         return self.__kindNumber == 15
 
+### Completion Chunk Kinds ###
+class CompletionChunkKind(BaseEnumeration):
+    """
+    Describes a single piece of text within a code-completion string.
+    """
+
+    def __str__(self) -> str:
+        """
+        Converts enum value to string in the old camelCase format.
+        This is a temporary measure that will be changed in the future release
+        to return string in ALL_CAPS format, like for other enums.
+        """
+
+        warnings.warn(
+            "String representation of 'CompletionChunkKind' will be "
+            "changed in a future release from 'camelCase' to 'ALL_CAPS' to "
+            "match other enums. 'CompletionChunkKind's can be "
+            "compared to one another without conversion to string.",
+            DeprecationWarning,
+        )
+        # Remove underscores
+        components = self.name.split("_")
+        # Upper-camel case each split component
+        components = [component.lower().capitalize() for component in 
components]
+        return "".join(components)
+
+    OPTIONAL = 0
+    TYPED_TEXT = 1
+    TEXT = 2
+    PLACEHOLDER = 3
+    INFORMATIVE = 4
+    CURRENT_PARAMETER = 5
+    LEFT_PAREN = 6
+    RIGHT_PAREN = 7
+    LEFT_BRACKET = 8
+    RIGHT_BRACKET = 9
+    LEFT_BRACE = 10
+    RIGHT_BRACE = 11
+    LEFT_ANGLE = 12
+    RIGHT_ANGLE = 13
+    COMMA = 14
+    RESULT_TYPE = 15
+    COLON = 16
+    SEMI_COLON = 17
+    EQUAL = 18
+    HORIZONTAL_SPACE = 19
+    VERTICAL_SPACE = 20
+
 
 completionChunkKindMap = {
     0: CompletionChunk.Kind("Optional"),
diff --git a/clang/bindings/python/tests/cindex/test_code_completion.py 
b/clang/bindings/python/tests/cindex/test_code_completion.py
index 4c0ecca85e4f4..e4924e1f8f4c6 100644
--- a/clang/bindings/python/tests/cindex/test_code_completion.py
+++ b/clang/bindings/python/tests/cindex/test_code_completion.py
@@ -1,4 +1,4 @@
-from clang.cindex import AvailabilityKind, CompletionString, TranslationUnit
+from clang.cindex import AvailabilityKind, CompletionChunkKind, 
completionChunkKindMap, CompletionString, TranslationUnit
 
 import unittest
 from pathlib import Path
@@ -174,3 +174,14 @@ def test_compat_str(self):
         for id, string in kindStringMap.items():
             kind = CompletionString.AvailabilityKindCompat.from_id(id)
             self.assertEqual(str(kind), string)
+
+    def test_completion_chunk_kind_compatibility(self):
+        # Check that all new kinds correspond to an old kind
+        for new_kind in CompletionChunkKind:
+            old_kind = completionChunkKindMap[new_kind.value]
+            self.assertEqual(str(old_kind), str(new_kind))
+
+        # Check that all old kinds correspond to a new kind
+        for value, old_kind in completionChunkKindMap.items():
+            new_kind = CompletionChunkKind.from_id(value)
+            self.assertEqual(str(old_kind), str(new_kind))
diff --git a/clang/bindings/python/tests/cindex/test_enums.py 
b/clang/bindings/python/tests/cindex/test_enums.py
index f50bd219cee77..283a54998470c 100644
--- a/clang/bindings/python/tests/cindex/test_enums.py
+++ b/clang/bindings/python/tests/cindex/test_enums.py
@@ -5,6 +5,7 @@
     AccessSpecifier,
     AvailabilityKind,
     BinaryOperator,
+    CompletionChunkKind,
     CompletionString,
     CursorKind,
     ExceptionSpecificationKind,
@@ -45,6 +46,7 @@ def test_all_variants(self):
             "CX_StorageClass": StorageClass,
             "CXAvailabilityKind": AvailabilityKind,
             "CXBinaryOperatorKind": BinaryOperator,
+            "CXCompletionChunkKind": CompletionChunkKind,
             "CXCursorKind": CursorKind,
             "CXCursor_ExceptionSpecificationKind": ExceptionSpecificationKind,
             "CXLanguageKind": LanguageKind,

``````````

</details>


https://github.com/llvm/llvm-project/pull/176631
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to