[clang] Use existing AvailabilityKind enum for code completion availability (PR #160296)

Vlad Serebrennikov via cfe-commits cfe-commits at lists.llvm.org
Sat Jan 17 03:20:21 PST 2026


================
@@ -3143,15 +3144,51 @@ def isKindResultType(self) -> bool:
 
 
 class CompletionString(ClangObject):
-    class Availability:
-        def __init__(self, name):
-            self.name = name
+    # AvailabilityKindCompat is an exact copy of AvailabilityKind, except for __str__.
+    # This is a temporary measure to keep the string representation the same
+    # until we change CompletionString.availability to return AvailabilityKind,
+    # like Cursor.availability does.
+    # Note that deriving from AvailabilityKind directly is not possible.
+    class AvailabilityKindCompat(BaseEnumeration):
+        """
+        Describes the availability of an entity.
+        It is deprecated in favor of AvailabilityKind.
+        """
 
-        def __str__(self):
-            return self.name
+        # Ensure AvailabilityKindCompat is comparable with AvailabilityKind
+        def __eq__(self, other: object) -> bool:
+            if isinstance(
+                other, (AvailabilityKind, CompletionString.AvailabilityKindCompat)
----------------
Endilll wrote:

At first I thought that we don't need to qualify `AvailabilityKindCompat` with `CompletionString` here. Then I caught myself not remembering how exactly name lookup works in Python. I tried to find a specification, but to no avail. Now I'm not sure what's right and what's wrong.

https://github.com/llvm/llvm-project/pull/160296


More information about the cfe-commits mailing list