[Lldb-commits] [lldb] 9ca707b - [lldb][test] Add tests for clang::PreferredNameAttr formatting

Michael Buch via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 6 17:38:18 PDT 2023


Author: Michael Buch
Date: 2023-04-07T01:37:36+01:00
New Revision: 9ca707b69ba3802d0e31aa41c83f027027526d83

URL: https://github.com/llvm/llvm-project/commit/9ca707b69ba3802d0e31aa41c83f027027526d83
DIFF: https://github.com/llvm/llvm-project/commit/9ca707b69ba3802d0e31aa41c83f027027526d83.diff

LOG: [lldb][test] Add tests for clang::PreferredNameAttr formatting

Add some tests to make sure we're formatting structures
with preferred names correctly.

Differential Revision: https://reviews.llvm.org/D145832

Added: 
    lldb/test/API/lang/cpp/preferred_name/Makefile
    lldb/test/API/lang/cpp/preferred_name/TestPreferredName.py
    lldb/test/API/lang/cpp/preferred_name/main.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/lang/cpp/preferred_name/Makefile b/lldb/test/API/lang/cpp/preferred_name/Makefile
new file mode 100644
index 0000000000000..36117723fd1df
--- /dev/null
+++ b/lldb/test/API/lang/cpp/preferred_name/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+CXXFLAGS_EXTRAS := -std=c++20 -glldb
+include Makefile.rules

diff  --git a/lldb/test/API/lang/cpp/preferred_name/TestPreferredName.py b/lldb/test/API/lang/cpp/preferred_name/TestPreferredName.py
new file mode 100644
index 0000000000000..ce8be32099711
--- /dev/null
+++ b/lldb/test/API/lang/cpp/preferred_name/TestPreferredName.py
@@ -0,0 +1,42 @@
+"""
+Test formatting of types annotated with
+[[clang::preferred_name]] attributes.
+"""
+
+import lldb
+import lldbsuite.test.lldbutil as lldbutil
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import decorators
+
+
+class TestPreferredName(TestBase):
+
+    def test_frame_var(self):
+        self.build()
+        lldbutil.run_to_source_breakpoint(self, "return", lldb.SBFileSpec("main.cpp"))
+
+        self.expect("frame variable barInt", substrs=["BarInt"])
+        self.expect("frame variable barDouble", substrs=["BarDouble"])
+        self.expect("frame variable barShort", substrs=["Bar<short>"])
+        self.expect("frame variable barChar", substrs=["Bar<char>"])
+
+        self.expect("frame variable varInt", substrs=["BarInt"])
+        self.expect("frame variable varDouble", substrs=["BarDouble"])
+        self.expect("frame variable varShort", substrs=["Bar<short>"])
+        self.expect("frame variable varChar", substrs=["Bar<char>"])
+        self.expect("frame variable varFooInt", substrs=["Foo<BarInt>"])
+
+    def test_expr(self):
+        self.build()
+        lldbutil.run_to_source_breakpoint(self, "return", lldb.SBFileSpec("main.cpp"))
+
+        self.expect_expr("barInt", result_type="BarInt")
+        self.expect_expr("barDouble", result_type="BarDouble")
+        self.expect_expr("barShort", result_type="Bar<short>")
+        self.expect_expr("barChar", result_type="Bar<char>")
+
+        self.expect_expr("varInt", result_type="BarInt")
+        self.expect_expr("varDouble", result_type="BarDouble")
+        self.expect_expr("varShort", result_type="Bar<short>")
+        self.expect_expr("varChar", result_type="Bar<char>")
+        self.expect_expr("varFooInt", result_type="Foo<BarInt>")

diff  --git a/lldb/test/API/lang/cpp/preferred_name/main.cpp b/lldb/test/API/lang/cpp/preferred_name/main.cpp
new file mode 100644
index 0000000000000..dd9cf22d94b2d
--- /dev/null
+++ b/lldb/test/API/lang/cpp/preferred_name/main.cpp
@@ -0,0 +1,26 @@
+template <typename T> struct Foo;
+
+typedef Foo<int> BarInt;
+typedef Foo<double> BarDouble;
+
+template <typename T> using Bar = Foo<T>;
+
+template <typename T>
+struct [[clang::preferred_name(BarInt), clang::preferred_name(BarDouble),
+         clang::preferred_name(Bar<short>), clang::preferred_name(Bar<short>),
+         clang::preferred_name(Bar<double>),
+         clang::preferred_name(Bar<char>)]] Foo{};
+
+int main() {
+  BarInt barInt;
+  BarDouble barDouble;
+  Bar<short> barShort;
+  Bar<char> barChar;
+
+  Foo<int> varInt;
+  Foo<double> varDouble;
+  Foo<short> varShort;
+  Foo<char> varChar;
+  Foo<Foo<int>> varFooInt;
+  return 0;
+}


        


More information about the lldb-commits mailing list