summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-04-18 17:45:44 (GMT)
committerBrad King <brad.king@kitware.com>2016-04-18 18:11:19 (GMT)
commit919b87c0172b4e623feb6870983152f3be0b2748 (patch)
treec459d3087066602174db14caca89482875beb4e6 /test
parent917c646ed9e29ca57fd53791a9b3f5f97e86d8b9 (diff)
downloadCastXML-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.txt2
-rw-r--r--test/expect/cmd.cc-msvc-builtin-1800-E.stdout.txt7
-rw-r--r--test/expect/cmd.cc-msvc-builtin-1900-E.stdout.txt8
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\]\)\)$