diff options
author | Chris Lattner <sabre@nondot.org> | 2009-12-23 19:15:27 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-12-23 19:15:27 +0000 |
commit | 6633522aaea663ebb18044a997b963bf92cd1a74 (patch) | |
tree | 5b4cbf65080358411189719a2a41b28471a07b60 | |
parent | 4718e67ca9018342483dccb40d43e339101ac386 (diff) |
fix the microsoft "charify" extension to return the charified token
as a character literal, not a string literal. This might fix
rdar://7486575
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92025 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Lex/MacroArgs.cpp | 2 | ||||
-rw-r--r-- | test/Parser/MicrosoftExtensions.c | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/Lex/MacroArgs.cpp b/lib/Lex/MacroArgs.cpp index 34b1ef8fc0..c2cf623317 100644 --- a/lib/Lex/MacroArgs.cpp +++ b/lib/Lex/MacroArgs.cpp @@ -178,7 +178,7 @@ Token MacroArgs::StringifyArgument(const Token *ArgToks, Preprocessor &PP, bool Charify) { Token Tok; Tok.startToken(); - Tok.setKind(tok::string_literal); + Tok.setKind(Charify ? tok::char_constant : tok::string_literal); const Token *ArgTokStart = ArgToks; diff --git a/test/Parser/MicrosoftExtensions.c b/test/Parser/MicrosoftExtensions.c index 0061886464..082929f6d8 100644 --- a/test/Parser/MicrosoftExtensions.c +++ b/test/Parser/MicrosoftExtensions.c @@ -28,3 +28,9 @@ void foo() { } typedef bool (__stdcall __stdcall *blarg)(int); + + +// Charify extension. +#define FOO(x) #@x +char x = FOO(a); + |