================
@@ -197,6 +198,87 @@ def test_is_const_method(self):
self.assertTrue(foo.is_const_method())
self.assertFalse(bar.is_const_method())
+ def test_get_method_qualifiers(self):
+ """Ensure Cursor.get_method_qualifiers works."""
+ source = """
+ class X {
+ void unqualified();
+ void c() const;
+ void v() volatile;
+ void cv() const volatile;
+ void r() __restrict;
+ void cvr() const volatile __restrict;
+ };
+ """
+ tu = get_tu(source, lang="cpp")
+
+ unqualified = get_cursor(tu, "unqualified")
+ c = get_cursor(tu, "c")
+ v = get_cursor(tu, "v")
+ cv = get_cursor(tu, "cv")
+ r = get_cursor(tu, "r")
+ cvr = get_cursor(tu, "cvr")
+ self.assertIsNotNone(unqualified)
+ self.assertIsNotNone(c)
+ self.assertIsNotNone(v)
+ self.assertIsNotNone(cv)
+ self.assertIsNotNone(r)
+ self.assertIsNotNone(cvr)
+
+ q = unqualified.get_method_qualifiers()
+ self.assertIsInstance(q, Qualifiers)
+ self.assertFalse(q.Const)
+ self.assertFalse(q.Volatile)
+ self.assertFalse(q.Restrict)
+
+ q = c.get_method_qualifiers()
+ self.assertTrue(q.Const)
+ self.assertFalse(q.Volatile)
+ self.assertFalse(q.Restrict)
+
+ q = v.get_method_qualifiers()
+ self.assertFalse(q.Const)
+ self.assertTrue(q.Volatile)
+ self.assertFalse(q.Restrict)
+
+ q = cv.get_method_qualifiers()
+ self.assertTrue(q.Const)
+ self.assertTrue(q.Volatile)
+ self.assertFalse(q.Restrict)
+
+ q = r.get_method_qualifiers()
+ self.assertFalse(q.Const)
+ self.assertFalse(q.Volatile)
+ self.assertTrue(q.Restrict)
+
+ q = cvr.get_method_qualifiers()
+ self.assertTrue(q.Const)
+ self.assertTrue(q.Volatile)
+ self.assertTrue(q.Restrict)
+
+ # Explicit object member functions have no method qualifiers
+ source = """
+ struct S {
+ void explicit_const(this const S&);
+ void explicit_cv(this const volatile S&);
+ };
+ """
+ tu = get_tu(source, lang="cpp", flags=["-std=c++23"])
+ ec = get_cursor(tu, "explicit_const")
+ ecv = get_cursor(tu, "explicit_cv")
+ self.assertIsNotNone(ec)
+ self.assertIsNotNone(ecv)
+
+ q = ec.get_method_qualifiers()
+ self.assertFalse(q.Const)
+ self.assertFalse(q.Volatile)
+ self.assertFalse(q.Restrict)
+
+ q = ecv.get_method_qualifiers()
+ self.assertFalse(q.Const)
+ self.assertFalse(q.Volatile)
+ self.assertFalse(q.Restrict)
+
----------------
DeinAlptraum wrote:
This should be split into a separate test case
https://github.com/llvm/llvm-project/pull/183305
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits