properly form a full token for # before calling HandleDirective.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67235 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-03-18 20:58:27 +00:00
Родитель 5f607c4b75
Коммит e91e93225d
1 изменённых файлов: 7 добавлений и 6 удалений

Просмотреть файл

@ -1595,15 +1595,13 @@ LexNextToken:
if (!isLexingRawMode()) if (!isLexingRawMode())
Diag(BufferPtr, diag::charize_microsoft_ext); Diag(BufferPtr, diag::charize_microsoft_ext);
Kind = tok::hashat; Kind = tok::hashat;
} else { } else { // '%:' -> '#'
Kind = tok::hash; // '%:' -> '#'
// We parsed a # character. If this occurs at the start of the line, // We parsed a # character. If this occurs at the start of the line,
// it's actually the start of a preprocessing directive. Callback to // it's actually the start of a preprocessing directive. Callback to
// the preprocessor to handle it. // the preprocessor to handle it.
// FIXME: -fpreprocessed mode?? // FIXME: -fpreprocessed mode??
if (Result.isAtStartOfLine() && !LexingRawMode) { if (Result.isAtStartOfLine() && !LexingRawMode) {
BufferPtr = CurPtr; FormTokenWithChars(Result, CurPtr, tok::hash);
PP->HandleDirective(Result); PP->HandleDirective(Result);
// As an optimization, if the preprocessor didn't switch lexers, tail // As an optimization, if the preprocessor didn't switch lexers, tail
@ -1621,6 +1619,8 @@ LexNextToken:
return PP->Lex(Result); return PP->Lex(Result);
} }
Kind = tok::hash;
} }
} else { } else {
Kind = tok::percent; Kind = tok::percent;
@ -1727,13 +1727,12 @@ LexNextToken:
Diag(BufferPtr, diag::charize_microsoft_ext); Diag(BufferPtr, diag::charize_microsoft_ext);
CurPtr = ConsumeChar(CurPtr, SizeTmp, Result); CurPtr = ConsumeChar(CurPtr, SizeTmp, Result);
} else { } else {
Kind = tok::hash;
// We parsed a # character. If this occurs at the start of the line, // We parsed a # character. If this occurs at the start of the line,
// it's actually the start of a preprocessing directive. Callback to // it's actually the start of a preprocessing directive. Callback to
// the preprocessor to handle it. // the preprocessor to handle it.
// FIXME: -fpreprocessed mode?? // FIXME: -fpreprocessed mode??
if (Result.isAtStartOfLine() && !LexingRawMode) { if (Result.isAtStartOfLine() && !LexingRawMode) {
BufferPtr = CurPtr; FormTokenWithChars(Result, CurPtr, tok::hash);
PP->HandleDirective(Result); PP->HandleDirective(Result);
// As an optimization, if the preprocessor didn't switch lexers, tail // As an optimization, if the preprocessor didn't switch lexers, tail
@ -1750,6 +1749,8 @@ LexNextToken:
} }
return PP->Lex(Result); return PP->Lex(Result);
} }
Kind = tok::hash;
} }
break; break;