summaryrefslogtreecommitdiffstats
path: root/clang/Lex
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-07-15 05:41:09 +0000
committerChris Lattner <sabre@nondot.org>2006-07-15 05:41:09 +0000
commit2b271db205de3aae3d5b9e49c93d6867ef2a126d (patch)
tree36b2c1bd24662f2dfbb7531c561986af7dd6a75a /clang/Lex
parentf2781509f9bbac36138d2bdaf19b3ac4d4e18f80 (diff)
downloadbcm5719-llvm-2b271db205de3aae3d5b9e49c93d6867ef2a126d.tar.gz
bcm5719-llvm-2b271db205de3aae3d5b9e49c93d6867ef2a126d.zip
Lex the microsoft 'charize' extension.
llvm-svn: 38711
Diffstat (limited to 'clang/Lex')
-rw-r--r--clang/Lex/Lexer.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/Lex/Lexer.cpp b/clang/Lex/Lexer.cpp
index 1344cfe7c8d..69c3a878dd1 100644
--- a/clang/Lex/Lexer.cpp
+++ b/clang/Lex/Lexer.cpp
@@ -1200,11 +1200,15 @@ LexNextToken:
CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
} else if (Features.Digraphs && Char == ':') {
CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
- if (getCharAndSize(CurPtr, SizeTmp) == '%' &&
- getCharAndSize(CurPtr+SizeTmp, SizeTmp2) == ':') {
+ Char = getCharAndSize(CurPtr, SizeTmp);
+ if (Char == '%' && getCharAndSize(CurPtr+SizeTmp, SizeTmp2) == ':') {
Result.SetKind(tok::hashhash); // '%:%:' -> '##'
CurPtr = ConsumeChar(ConsumeChar(CurPtr, SizeTmp, Result),
SizeTmp2, Result);
+ } else if (Char == '@' && Features.Microsoft) { // %:@ -> #@ -> Charize
+ Result.SetKind(tok::hashat);
+ CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
+ Diag(BufferPtr, diag::charize_microsoft_ext);
} else {
Result.SetKind(tok::hash); // '%:' -> '#'
@@ -1351,6 +1355,10 @@ LexNextToken:
if (Char == '#') {
Result.SetKind(tok::hashhash);
CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
+ } else if (Char == '@' && Features.Microsoft) { // #@ -> Charize
+ Result.SetKind(tok::hashat);
+ Diag(BufferPtr, diag::charize_microsoft_ext);
+ CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
} else {
Result.SetKind(tok::hash);
// We parsed a # character. If this occurs at the start of the line,
OpenPOWER on IntegriCloud