forked from OSchip/llvm-project
Fix a lexer bug where we incorrectly rejected
int i = /*/ */ 1; Thanks to Neil for pointing this out. llvm-svn: 40379
This commit is contained in:
parent
7649abce46
commit
c850ad6ee1
|
@ -817,13 +817,24 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr) {
|
|||
// we find it, check to see if it was preceeded by a *. This common
|
||||
// optimization helps people who like to put a lot of * characters in their
|
||||
// comments.
|
||||
unsigned char C = *CurPtr++;
|
||||
|
||||
// The first character we get with newlines and trigraphs skipped to handle
|
||||
// the degenerate /*/ case below correctly if the * has an escaped newline
|
||||
// after it.
|
||||
unsigned CharSize;
|
||||
unsigned char C = getCharAndSize(CurPtr, CharSize);
|
||||
CurPtr += CharSize;
|
||||
if (C == 0 && CurPtr == BufferEnd+1) {
|
||||
Diag(BufferPtr, diag::err_unterminated_block_comment);
|
||||
BufferPtr = CurPtr-1;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check to see if the first character after the '/*' is another /. If so,
|
||||
// then this slash does not end the block comment, it is part of it.
|
||||
if (C == '/')
|
||||
C = *CurPtr++;
|
||||
|
||||
while (1) {
|
||||
// Skip over all non-interesting characters until we find end of buffer or a
|
||||
// (probably ending) '/' character.
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
RUN: clang -parse-ast-check %s
|
||||
*/
|
||||
|
||||
// This is a simple comment, /*/ does not end a comment, the trailing */ does.
|
||||
int i = /*/ */ 1;
|
||||
|
||||
/* abc
|
||||
|
||||
next comment ends with normal escaped newline:
|
||||
|
|
Loading…
Reference in New Issue