Author: Raphael Isemann Date: 2020-12-01T15:53:40+01:00 New Revision: 64f04629aa7a4cf9d2deb725683959faa4a857fe
URL: https://github.com/llvm/llvm-project/commit/64f04629aa7a4cf9d2deb725683959faa4a857fe DIFF: https://github.com/llvm/llvm-project/commit/64f04629aa7a4cf9d2deb725683959faa4a857fe.diff LOG: [lldb][NFC] Modernize and cleanup TestClassTemplateParameterPack * Un-inline the test. * Use expect_expr everywhere and also check all involved types. * Clang-format the test sources. * Explain what we're actually testing with the 'C' and 'D' templates. * Split out the non-template-parameter-pack part of the test into its own small test. Added: lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile lldb/test/API/lang/cpp/non-type-template-param/Makefile lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py lldb/test/API/lang/cpp/non-type-template-param/main.cpp Modified: lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp Removed: ################################################################################ diff --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile b/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile new file mode 100644 index 000000000000..99998b20bcb0 --- /dev/null +++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py index 7e67f73b7092..e0497b62f55c 100644 --- a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py +++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py @@ -1,7 +1,38 @@ -from lldbsuite.test import lldbinline -from lldbsuite.test import decorators +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil -lldbinline.MakeInlineTest( - __file__, globals(), [ - decorators.expectedFailureAll( - compiler="gcc")]) +class TestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @expectedFailureAll(compiler="gcc") + def test(self): + self.build() + lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.cpp")) + + # Test non-type template parameter packs. + self.expect_expr("myC", result_type="C<int, 16, 32>", result_children=[ + ValueCheck(name="C<int, 16>", children=[ + ValueCheck(name="member", value="64") + ]) + ]) + self.expect_expr("myLesserC.argsAre_16_32()", result_value="false") + self.expect_expr("myC.argsAre_16_32()", result_value="true") + + # Test type template parameter packs. + self.expect_expr("myD", result_type="D<int, int, bool>", result_children=[ + ValueCheck(name="D<int, int>", children=[ + ValueCheck(name="member", value="64") + ]) + ]) + self.expect_expr("myLesserD.argsAre_Int_bool()", result_value="false") + self.expect_expr("myD.argsAre_Int_bool()", result_value="true") + + # Disabling until we do template lookup correctly: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20180507/040689.html + # FIXME: Rewrite this with expect_expr + # self.expect("expression -- C<int, 16>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) + # self.expect("expression -- C<int, 16, 32>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) + # self.expect("expression -- D<int, int>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) + # self.expect("expression -- D<int, int, bool>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) diff --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp b/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp index 82f09a1f268c..8bb0a42b58a3 100644 --- a/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp +++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp @@ -1,64 +1,43 @@ template <class T, int... Args> struct C { T member; - bool isSixteenThirtyTwo() { return false; } + bool argsAre_16_32() { return false; } }; template <> struct C<int, 16> { int member; - bool isSixteenThirtyTwo() { return false; } + bool argsAre_16_32() { return false; } }; template <> struct C<int, 16, 32> : C<int, 16> { - bool isSixteenThirtyTwo() { return true; } + bool argsAre_16_32() { return true; } }; template <class T, typename... Args> struct D { T member; - bool isIntBool() { return false; } + bool argsAre_Int_bool() { return false; } }; template <> struct D<int, int> { int member; - bool isIntBool() { return false; } + bool argsAre_Int_bool() { return false; } }; template <> struct D<int, int, bool> : D<int, int> { - bool isIntBool() { return true; } + bool argsAre_Int_bool() { return true; } }; -template<int Size> struct array { - int Arr[Size]; - array() {} -}; - -int main (int argc, char const *argv[]) -{ - C<int,16,32> myC; - C<int,16> myLesserC; - myC.member = 64; - (void)C<int,16,32>().isSixteenThirtyTwo(); - (void)C<int,16>().isSixteenThirtyTwo(); - (void)(myC.member != 64); //% self.expect("expression -- myC", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["64"]) - //% self.expect("expression -- myLesserC.isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) - //% self.expect("expression -- myC.isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) - - // Disabling until we do template lookup correctly: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20180507/040689.html - //#% self.expect("expression -- C<int, 16>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) - //#% self.expect("expression -- C<int, 16, 32>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) - - D<int,int,bool> myD; - D<int,int> myLesserD; - myD.member = 64; - (void)D<int,int,bool>().isIntBool(); - (void)D<int,int>().isIntBool(); //% self.expect("expression -- myD", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["64"]) - //% self.expect("expression -- myLesserD.isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) - //% self.expect("expression -- myD.isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) - - // See comment above. - //#% self.expect("expression -- D<int, int>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"]) - //#% self.expect("expression -- D<int, int, bool>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"]) - - array<3> myArray; //% self.expect("expression -- myArray", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["Arr"]) - - return 1; +int main(int argc, char const *argv[]) { + C<int, 16, 32> myC; + C<int, 16> myLesserC; + myC.member = 64; + (void)C<int, 16, 32>().argsAre_16_32(); + (void)C<int, 16>().argsAre_16_32(); + (void)(myC.member != 64); + D<int, int, bool> myD; + D<int, int> myLesserD; + myD.member = 64; + (void)D<int, int, bool>().argsAre_Int_bool(); + (void)D<int, int>().argsAre_Int_bool(); + + return 0; // break here } diff --git a/lldb/test/API/lang/cpp/non-type-template-param/Makefile b/lldb/test/API/lang/cpp/non-type-template-param/Makefile new file mode 100644 index 000000000000..99998b20bcb0 --- /dev/null +++ b/lldb/test/API/lang/cpp/non-type-template-param/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py b/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py new file mode 100644 index 000000000000..12cf5bd3ec03 --- /dev/null +++ b/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py @@ -0,0 +1,17 @@ +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")) + + self.expect_expr("myArray", result_type="array<3>", result_children=[ + ValueCheck(name="Arr", type="int [3]") + ]) diff --git a/lldb/test/API/lang/cpp/non-type-template-param/main.cpp b/lldb/test/API/lang/cpp/non-type-template-param/main.cpp new file mode 100644 index 000000000000..9f508e931a1b --- /dev/null +++ b/lldb/test/API/lang/cpp/non-type-template-param/main.cpp @@ -0,0 +1,8 @@ +template <int Size> struct array { + int Arr[Size]; + array() {} +}; + +array<3> myArray; + +int main() {} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits