diff options
author | Brad King <brad.king@kitware.com> | 2016-04-18 17:45:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-04-18 18:11:19 (GMT) |
commit | 919b87c0172b4e623feb6870983152f3be0b2748 (patch) | |
tree | c459d3087066602174db14caca89482875beb4e6 /test | |
parent | 917c646ed9e29ca57fd53791a9b3f5f97e86d8b9 (diff) | |
download | CastXML-919b87c0172b4e623feb6870983152f3be0b2748.zip CastXML-919b87c0172b4e623feb6870983152f3be0b2748.tar.gz CastXML-919b87c0172b4e623feb6870983152f3be0b2748.tar.bz2 |
RunClang: Provide `__is_assignable` builtin when simulating MSVC >= 1900
Visual Studio 2015 Update 2 (cl 19.00.23918) added an `__is_assignable`
builtin. It also started using the builtin in the `<type_traits>`
header. Clang as of version 3.8 does not support this builtin so
CastXML cannot parse it. Work around this problem by adding our own
implementation of the builtin.
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 2 | ||||
-rw-r--r-- | test/expect/cmd.cc-msvc-builtin-1800-E.stdout.txt | 7 | ||||
-rw-r--r-- | test/expect/cmd.cc-msvc-builtin-1900-E.stdout.txt | 8 |
3 files changed, 17 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 65a5d7c..98a58bf 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -266,6 +266,8 @@ castxml_test_cmd(cc-msvc-std-c++98 --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> castxml_test_cmd(cc-msvc-std-c++11 --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> -msc=1600 ")" ${empty_cxx} "-###") castxml_test_cmd(cc-msvc-std-c++14 --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> -msc=1900 ")" ${empty_cxx} "-###") castxml_test_cmd(cc-msvc-std-explicit --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> -msc=1500 ")" -std=gnu++14 ${empty_cxx} "-###") +castxml_test_cmd(cc-msvc-builtin-1800-E --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> -msc=1800 ")" ${empty_cxx} -E -dM) +castxml_test_cmd(cc-msvc-builtin-1900-E --castxml-cc-msvc "(" $<TARGET_FILE:cc-msvc> -msc=1900 ")" ${empty_cxx} -E -dM) castxml_test_cmd(cc-msvc-c-bad-cmd --castxml-cc-msvc-c "(" cc-msvc-c-bad-cmd ")" ${empty_c}) castxml_test_cmd(cc-msvc-c-src-c-E --castxml-cc-msvc-c $<TARGET_FILE:cc-msvc> ${empty_c} -E -dM) castxml_test_cmd(cc-msvc-c-src-c-cmd --castxml-cc-msvc-c $<TARGET_FILE:cc-msvc> ${empty_c} "-###") diff --git a/test/expect/cmd.cc-msvc-builtin-1800-E.stdout.txt b/test/expect/cmd.cc-msvc-builtin-1800-E.stdout.txt new file mode 100644 index 0000000..e4e6747 --- /dev/null +++ b/test/expect/cmd.cc-msvc-builtin-1800-E.stdout.txt @@ -0,0 +1,7 @@ +^#define _MSC_VER 1800 +#define _WIN32 1 +#define __castxml__ [0-9]+ +#define __castxml_clang_major__ [0-9]+ +#define __castxml_clang_minor__ [0-9]+ +#define __castxml_clang_patchlevel__ [0-9]+ +#define __cplusplus 199711L$ diff --git a/test/expect/cmd.cc-msvc-builtin-1900-E.stdout.txt b/test/expect/cmd.cc-msvc-builtin-1900-E.stdout.txt new file mode 100644 index 0000000..d008453 --- /dev/null +++ b/test/expect/cmd.cc-msvc-builtin-1900-E.stdout.txt @@ -0,0 +1,8 @@ +^#define _MSC_VER 1900 +#define _WIN32 1 +#define __castxml__ [0-9]+ +#define __castxml_clang_major__ [0-9]+ +#define __castxml_clang_minor__ [0-9]+ +#define __castxml_clang_patchlevel__ [0-9]+ +#define __cplusplus 199711L +#define __is_assignable\(_To,_Fr\) \(sizeof\(__castxml__is_assignable_check<_To,_Fr>\(0\)\) == sizeof\(char\(&\)\[1\]\)\)$ |