[Lldb-commits] [lldb] 82ed186 - [lldb] Explicitly test the template argument SB API

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Thu Oct 15 02:18:10 PDT 2020


Author: Raphael Isemann
Date: 2020-10-15T11:17:43+02:00
New Revision: 82ed18601dbc816e1f64407a926602f95bbeda32

URL: https://github.com/llvm/llvm-project/commit/82ed18601dbc816e1f64407a926602f95bbeda32
DIFF: https://github.com/llvm/llvm-project/commit/82ed18601dbc816e1f64407a926602f95bbeda32.diff

LOG: [lldb] Explicitly test the template argument SB API

Added: 
    lldb/test/API/lang/cpp/template-arguments/Makefile
    lldb/test/API/lang/cpp/template-arguments/TestCppTemplateArguments.py
    lldb/test/API/lang/cpp/template-arguments/main.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/lang/cpp/template-arguments/Makefile b/lldb/test/API/lang/cpp/template-arguments/Makefile
new file mode 100644
index 000000000000..99998b20bcb0
--- /dev/null
+++ b/lldb/test/API/lang/cpp/template-arguments/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules

diff  --git a/lldb/test/API/lang/cpp/template-arguments/TestCppTemplateArguments.py b/lldb/test/API/lang/cpp/template-arguments/TestCppTemplateArguments.py
new file mode 100644
index 000000000000..3ba86bc44e25
--- /dev/null
+++ b/lldb/test/API/lang/cpp/template-arguments/TestCppTemplateArguments.py
@@ -0,0 +1,30 @@
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @no_debug_info_test
+    def test(self):
+        self.build()
+        self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
+
+        value = self.expect_expr("temp1", result_type="C<int, 2>")
+        template_type = value.GetType()
+        self.assertEqual(template_type.GetNumberOfTemplateArguments(), 2)
+
+        # Check a type argument.
+        self.assertEqual(template_type.GetTemplateArgumentKind(0), lldb.eTemplateArgumentKindType)
+        self.assertEqual(template_type.GetTemplateArgumentType(0).GetName(), "int")
+
+        # Check a integral argument.
+        self.assertEqual(template_type.GetTemplateArgumentKind(1), lldb.eTemplateArgumentKindIntegral)
+        self.assertEqual(template_type.GetTemplateArgumentType(1).GetName(), "unsigned int")
+        #FIXME: There is no way to get the actual value of the parameter.
+
+        # Try to get an invalid template argument.
+        self.assertEqual(template_type.GetTemplateArgumentKind(2), lldb.eTemplateArgumentKindNull)
+        self.assertEqual(template_type.GetTemplateArgumentType(2).GetName(), "")

diff  --git a/lldb/test/API/lang/cpp/template-arguments/main.cpp b/lldb/test/API/lang/cpp/template-arguments/main.cpp
new file mode 100644
index 000000000000..728bd400c258
--- /dev/null
+++ b/lldb/test/API/lang/cpp/template-arguments/main.cpp
@@ -0,0 +1,8 @@
+template<typename T, unsigned value>
+struct C {
+  T member = value;
+};
+
+C<int, 2> temp1;
+
+int main() {}


        


More information about the lldb-commits mailing list