diff --git a/clang/Lex/Lexer.cpp b/clang/Lex/Lexer.cpp index 3439356b560a..98bbb386305d 100644 --- a/clang/Lex/Lexer.cpp +++ b/clang/Lex/Lexer.cpp @@ -1529,7 +1529,7 @@ LexNextToken: } else if (Features.Digraphs && Char == ':') { Result.setKind(tok::l_square); // '<:' -> '[' CurPtr = ConsumeChar(CurPtr, SizeTmp, Result); - } else if (Features.Digraphs && Char == '>') { + } else if (Features.Digraphs && Char == '%') { Result.setKind(tok::l_brace); // '<%' -> '{' CurPtr = ConsumeChar(CurPtr, SizeTmp, Result); } else { diff --git a/clang/test/Lexer/digraph.cpp b/clang/test/Lexer/digraph.cpp new file mode 100644 index 000000000000..07c085a1d55d --- /dev/null +++ b/clang/test/Lexer/digraph.cpp @@ -0,0 +1,15 @@ +// RUN: clang -fsyntax-only %s + +%:include + + %:ifndef BUFSIZE + %:define BUFSIZE 512 + %:endif + + void copy(char d<::>, const char s<::>, int len) + <% + while (len-- >= 0) + <% + d<:len:> = s<:len:>; + %> + %>