shafik created this revision. shafik added reviewers: aprantl, teemperor, jingham. Herald added a reviewer: serge-sans-paille. Herald added a subscriber: jdoerfert.
https://reviews.llvm.org/D51633 added error handling in the ASTImporter.cpp which uncovered an underlying bug in which we used the wrong name when handling naming conflicts. This could cause a segmentation fault when attempting to cast an int to an enum during expression parsing. This test should pass once https://reviews.llvm.org/D59665 is committed. https://reviews.llvm.org/D59667 Files: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp @@ -0,0 +1,12 @@ +#include <cstdio> + +typedef enum { + A=0, +} flow_e; + +int main() { + flow_e f; + + printf( "%d\n", (flow_e)0); + return 0; // break here +} Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py @@ -0,0 +1,22 @@ +""" +Test Expression Parser regression text to ensure that we handle anonymous +enums importing correctly. +""" + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestCastIntToAnonymousEnum(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_cast_int_to_anonymous_enum(self): + self.build() + + lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + self.expect("expr (flow_e)0", substrs=['(flow_e) $0 = A']) Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules
Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp @@ -0,0 +1,12 @@ +#include <cstdio> + +typedef enum { + A=0, +} flow_e; + +int main() { + flow_e f; + + printf( "%d\n", (flow_e)0); + return 0; // break here +} Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py @@ -0,0 +1,22 @@ +""" +Test Expression Parser regression text to ensure that we handle anonymous +enums importing correctly. +""" + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestCastIntToAnonymousEnum(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_cast_int_to_anonymous_enum(self): + self.build() + + lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + self.expect("expr (flow_e)0", substrs=['(flow_e) $0 = A']) Index: packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits