diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-08-21 21:30:55 +0000 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-08-21 21:30:55 +0000 |
commit | c46d39b9e80e89d5b2200b884d79279a82793791 (patch) | |
tree | 8dc94e74e286e5b5447cd62bf32802632148dd43 /lldb/packages/Python/lldbsuite/test/lang/cpp | |
parent | 81faa5e6a26cc1b92301438a8e8ec8ce6bf5e574 (diff) | |
download | bcm5719-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')
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; } |