From 0fed6f00915561fdea445c4de1a02ba380e54f37 Mon Sep 17 00:00:00 2001 From: IOBYTE Date: Sat, 9 Nov 2019 12:00:21 -0500 Subject: [PATCH] fix clang testsuite crash (#2341) --- lib/tokenize.cpp | 2 ++ test/testgarbage.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 92aab2d8f..9b4a392a5 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -10890,6 +10890,8 @@ void Tokenizer::simplifyOperatorName() op += par->strAt(1); par = par->tokAt(2); done = true; + } else if (par->str() != "(") { + syntaxError(par); } } diff --git a/test/testgarbage.cpp b/test/testgarbage.cpp index 492be63a3..5254d4e86 100644 --- a/test/testgarbage.cpp +++ b/test/testgarbage.cpp @@ -237,6 +237,7 @@ private: TEST_CASE(garbageCode203); // #8972 TEST_CASE(garbageCode204); TEST_CASE(garbageCode205); + TEST_CASE(garbageCode206); TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1 @@ -1625,6 +1626,15 @@ private: "}"); // don't crash } + void garbageCode206() { + { + ASSERT_EQUALS("[test.cpp:1] syntax error", getSyntaxError("void foo() { for (auto operator new : int); }")); + } + { + ASSERT_EQUALS("[test.cpp:1] syntax error", getSyntaxError("void foo() { for (a operator== :) }")); + } + } + void syntaxErrorFirstToken() { ASSERT_THROW(checkCode("&operator(){[]};"), InternalError); // #7818 ASSERT_THROW(checkCode("*(*const<> (size_t); foo) { } *(*const (size_t)() ; foo) { }"), InternalError); // #6858