summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2019-08-21 21:30:55 +0000
committerJonas Devlieghere <jonas@devlieghere.com>2019-08-21 21:30:55 +0000
commitc46d39b9e80e89d5b2200b884d79279a82793791 (patch)
tree8dc94e74e286e5b5447cd62bf32802632148dd43 /lldb/packages/Python/lldbsuite/test/lang/cpp
parent81faa5e6a26cc1b92301438a8e8ec8ce6bf5e574 (diff)
downloadbcm5719-llvm-c46d39b9e80e89d5b2200b884d79279a82793791.tar.gz
bcm5719-llvm-c46d39b9e80e89d5b2200b884d79279a82793791.zip
Add char8_t support (C++20)
This patch adds support for the char8_t type introduced in C++20 char8_t. The original patch was submitted by James Blachly on the LLDB mailing list [1]. I modified the patch a bit and added a test. [1] http://lists.llvm.org/pipermail/lldb-dev/2019-August/015393.html Differential revision: https://reviews.llvm.org/D66447 llvm-svn: 369582
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile6
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py40
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp7
3 files changed, 53 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile
new file mode 100644
index 00000000000..444da5fae9c
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile
@@ -0,0 +1,6 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+CFLAGS_EXTRAS := -std=c++2a -fchar8_t
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py
new file mode 100644
index 00000000000..bca1d5a9797
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py
@@ -0,0 +1,40 @@
+# coding=utf8
+"""
+Test that C++ supports char8_t correctly.
+"""
+
+from __future__ import print_function
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+import lldbsuite.test.lldbutil as lldbutil
+
+
+class CxxChar8_tTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipIf(compiler="clang", compiler_version=['<', '7.0'])
+ def test(self):
+ """Test that C++ supports char8_t correctly."""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+
+ # Create a target by the debugger.
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ # FIXME: We should be able to test this with target variable, but the
+ # data formatter output is broken.
+ lldbutil.run_break_set_by_symbol(self, 'main')
+ self.runCmd("run", RUN_SUCCEEDED)
+
+ self.expect(
+ "frame variable a", substrs=["(char8_t) ::a = 0x61 u8'a'"])
+
+ self.expect(
+ "frame variable ab", substrs=['(const char8_t *) ::ab', 'u8"你好"'])
+
+ self.expect(
+ "frame variable abc", substrs=['(char8_t [9]) ::abc = u8"你好"'])
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp
new file mode 100644
index 00000000000..b257ae2d794
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp
@@ -0,0 +1,7 @@
+#include <cstring>
+
+char8_t a = u8'a';
+const char8_t* ab = u8"你好";
+char8_t abc[9] = u8"你好";
+
+int main (int argc, char const *argv[]) { return 0; }
OpenPOWER on IntegriCloud