<div dir="ltr"><div dir="ltr">On Sun, Dec 29, 2019 at 6:59 AM Stephen Kelly via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Stephen Kelly<br>
Date: 2019-12-29T14:58:56Z<br>
New Revision: dc93540acbf047cf54052568d2826d1a06df025e<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/dc93540acbf047cf54052568d2826d1a06df025e" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/dc93540acbf047cf54052568d2826d1a06df025e</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/dc93540acbf047cf54052568d2826d1a06df025e.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/dc93540acbf047cf54052568d2826d1a06df025e.diff</a><br>
<br>
LOG: Fix handling of newlines in clang-query<br>
<br>
Replace assert with diagnostic for missing newline.<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    clang-tools-extra/unittests/clang-query/QueryParserTest.cpp<br>
    clang/lib/ASTMatchers/Dynamic/Parser.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp<br>
index 4725789f29f2..79fcfcae6e0d 100644<br>
--- a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp<br>
+++ b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp<br>
@@ -330,4 +330,22 @@ match callExpr<br>
   EXPECT_EQ("1:9: Error parsing matcher. Found token <NewLine> "<br>
             "while looking for '('.",<br>
             cast<InvalidQuery>(Q)->ErrStr);<br>
+<br>
+  Q = parse("let someMatcher\nm parmVarDecl()");<br>
+<br>
+  ASSERT_TRUE(isa<InvalidQuery>(Q));<br>
+  EXPECT_EQ("1:1: Invalid token <NewLine> found when looking for a value.", cast<InvalidQuery>(Q)->ErrStr);<br>
+<br>
+  Q = parse("\nm parmVarDecl()\nlet someMatcher\nm parmVarDecl()");<br>
+<br>
+  ASSERT_TRUE(isa<MatchQuery>(Q));<br>
+  Q = parse(Q->RemainingContent);<br>
+<br>
+  ASSERT_TRUE(isa<InvalidQuery>(Q));<br>
+  EXPECT_EQ("1:1: Invalid token <NewLine> found when looking for a value.", cast<InvalidQuery>(Q)->ErrStr);<br>
+<br>
+  Q = parse("\nlet someMatcher\n");<br>
+<br>
+  ASSERT_TRUE(isa<InvalidQuery>(Q));<br>
+  EXPECT_EQ("1:1: Invalid token <NewLine> found when looking for a value.", cast<InvalidQuery>(Q)->ErrStr);<br>
 }<br>
<br>
diff  --git a/clang/lib/ASTMatchers/Dynamic/Parser.cpp b/clang/lib/ASTMatchers/Dynamic/Parser.cpp<br>
index caa3a3bd0953..ef209d1274af 100644<br>
--- a/clang/lib/ASTMatchers/Dynamic/Parser.cpp<br>
+++ b/clang/lib/ASTMatchers/Dynamic/Parser.cpp<br>
@@ -607,15 +607,13 @@ bool Parser::parseExpressionImpl(VariantValue *Value) {<br>
     // This error was already reported by the tokenizer.<br>
     return false;<br>
   case TokenInfo::TK_NewLine:<br>
-    llvm_unreachable("Newline should never be found here");<br>
-    return false;<br>
   case TokenInfo::TK_OpenParen:<br>
   case TokenInfo::TK_CloseParen:<br>
   case TokenInfo::TK_Comma:<br>
   case TokenInfo::TK_Period:<br>
   case TokenInfo::TK_InvalidChar:<br>
     const TokenInfo Token = Tokenizer->consumeNextToken();<br>
-    Error->addError(Token.Range, Error->ET_ParserInvalidToken) << Token.Text;<br>
+    Error->addError(Token.Range, Error->ET_ParserInvalidToken) << (Token.Kind == TokenInfo::TK_NewLine ? "NewLine" : Token.Text);<br></blockquote><div><br></div><div>Please clang-format your local diff before committing.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
     return false;<br>
   }<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div></div>