From 82ed18601dbc816e1f64407a926602f95bbeda32 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Thu, 15 Oct 2020 09:56:53 +0200 Subject: [PATCH] [lldb] Explicitly test the template argument SB API --- .../API/lang/cpp/template-arguments/Makefile | 3 ++ .../TestCppTemplateArguments.py | 30 +++++++++++++++++++ .../API/lang/cpp/template-arguments/main.cpp | 8 +++++ 3 files changed, 41 insertions(+) create mode 100644 lldb/test/API/lang/cpp/template-arguments/Makefile create mode 100644 lldb/test/API/lang/cpp/template-arguments/TestCppTemplateArguments.py create mode 100644 lldb/test/API/lang/cpp/template-arguments/main.cpp 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") + 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 +struct C { + T member = value; +}; + +C temp1; + +int main() {}