From e4b19c9c28687eb58ea61f2d5da587f6e7bcd7bf Mon Sep 17 00:00:00 2001 From: Shafik Yaghmour Date: Mon, 15 Apr 2019 23:05:45 +0000 Subject: [ASTImporter] Regression test to ensure that we handling importing of anonymous enums correctly Summary: 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. Differential Revision: https://reviews.llvm.org/D59667 llvm-svn: 358462 --- .../cast_int_to_anonymous_enum/Makefile | 5 +++++ .../TestCastIntToAnonymousEnum.py | 22 ++++++++++++++++++++++ .../cast_int_to_anonymous_enum/main.cpp | 9 +++++++++ 3 files changed, 36 insertions(+) create mode 100644 lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile create mode 100644 lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py create mode 100644 lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp (limited to 'lldb/packages/Python') diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile new file mode 100644 index 00000000000..8a7102e347a --- /dev/null +++ b/lldb/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 diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py b/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py new file mode 100644 index 00000000000..b8eaf51d3e2 --- /dev/null +++ b/lldb/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']) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp new file mode 100644 index 00000000000..7b5c5b24362 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp @@ -0,0 +1,9 @@ +typedef enum { + A=0, +} flow_e; + +int main() { + flow_e f; + + return 0; // break here +} -- cgit v1.2.3