summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor/output_paste_avoid.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-02-08 22:30:31 +0000
committerJordan Rose <jordan_rose@apple.com>2013-02-08 22:30:31 +0000
commita08ed5965caf1593f8faf2175b8e074808281331 (patch)
treea5bb1d8c3ea154f674589fc8dfefeab1c7cdc149 /clang/test/Preprocessor/output_paste_avoid.cpp
parent00d1b59184bbfcfbaffef267426eaf38bcdef4b1 (diff)
downloadbcm5719-llvm-a08ed5965caf1593f8faf2175b8e074808281331.tar.gz
bcm5719-llvm-a08ed5965caf1593f8faf2175b8e074808281331.zip
Simplify logic for avoiding concatenation after numeric constants.
I threw in a couple of test cases for UD-suffixes -- already working, but it wasn't immediately obvious to me. llvm-svn: 174767
Diffstat (limited to 'clang/test/Preprocessor/output_paste_avoid.cpp')
-rw-r--r--clang/test/Preprocessor/output_paste_avoid.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/clang/test/Preprocessor/output_paste_avoid.cpp b/clang/test/Preprocessor/output_paste_avoid.cpp
new file mode 100644
index 00000000000..689d966e867
--- /dev/null
+++ b/clang/test/Preprocessor/output_paste_avoid.cpp
@@ -0,0 +1,47 @@
+// RUN: %clang_cc1 -E -std=c++11 %s -o - | FileCheck -strict-whitespace %s
+
+
+#define y(a) ..a
+A: y(.)
+// This should print as ".. ." to avoid turning into ...
+// CHECK: A: .. .
+
+#define X 0 .. 1
+B: X
+// CHECK: B: 0 .. 1
+
+#define DOT .
+C: ..DOT
+// CHECK: C: .. .
+
+
+#define PLUS +
+#define EMPTY
+#define f(x) =x=
+D: +PLUS -EMPTY- PLUS+ f(=)
+// CHECK: D: + + - - + + = = =
+
+
+#define test(x) L#x
+E: test(str)
+// Should expand to L "str" not L"str"
+// CHECK: E: L "str"
+
+// Should avoid producing >>=.
+#define equal =
+F: >>equal
+// CHECK: F: >> =
+
+// Make sure we don't introduce spaces in the guid because we try to avoid
+// pasting '-' to a numeric constant.
+#define TYPEDEF(guid) typedef [uuid(guid)]
+TYPEDEF(66504301-BE0F-101A-8BBB-00AA00300CAB) long OLE_COLOR;
+// CHECK: typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB)] long OLE_COLOR;
+
+// Be careful with UD-suffixes.
+#define StrSuffix() "abc"_suffix
+#define IntSuffix() 123_suffix
+UD: StrSuffix()ident
+UD: IntSuffix()ident
+// CHECK: UD: "abc"_suffix ident
+// CHECK: UD: 123_suffix ident
OpenPOWER on IntegriCloud