зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
5f607c4b75
Коммит
e91e93225d
|
@ -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;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче