In public MS headers for XAudio, clang would fail to generate a valid UUID due to the UUID components being combined with the '-' UUID separators. Clang would attempting to recover but would preserve the leading whitespace from the tokens after each failed paste leading to spaces creeping into the UUID and causing an error in the __declspace(uuid()) parsing. Reference: Microsoft DirectX SDK (June 2010)\Include\XAudio2.h(51) Resolves http://llvm.org/pr23071 llvm-svn: 235186
42 lines
747 B
C
42 lines
747 B
C
// RUN: not %clang_cc1 -P -E -fms-extensions %s | FileCheck -strict-whitespace %s
|
|
|
|
// This horrible stuff should preprocess into (other than whitespace):
|
|
// int foo;
|
|
// int bar;
|
|
// int baz;
|
|
|
|
int foo;
|
|
|
|
// CHECK: int foo;
|
|
|
|
#define comment /##/ dead tokens live here
|
|
comment This is stupidity
|
|
|
|
int bar;
|
|
|
|
// CHECK: int bar;
|
|
|
|
#define nested(x) int x comment cute little dead tokens...
|
|
|
|
nested(baz) rise of the dead tokens
|
|
|
|
;
|
|
|
|
// CHECK: int baz
|
|
// CHECK: ;
|
|
|
|
|
|
// rdar://8197149 - VC++ allows invalid token pastes: (##baz
|
|
#define foo(x) abc(x)
|
|
#define bar(y) foo(##baz(y))
|
|
bar(q)
|
|
|
|
// CHECK: abc(baz(q))
|
|
|
|
|
|
#define str(x) #x
|
|
#define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d)
|
|
collapse_spaces(1a, b2, 3c, d4)
|
|
|
|
// CHECK: "1a-b2-3cd4"
|