Fixed #8873 (Add syntaxError when there is no RHS for +-)
This commit is contained in:
parent
ffef44af4c
commit
96929c53c0
|
@ -8533,6 +8533,8 @@ void Tokenizer::findGarbageCode() const
|
||||||
syntaxError(tok);
|
syntaxError(tok);
|
||||||
if (Token::Match(tok, "%cop%|= ]") && !(isCPP() && Token::Match(tok->previous(), "[|, &|= ]")))
|
if (Token::Match(tok, "%cop%|= ]") && !(isCPP() && Token::Match(tok->previous(), "[|, &|= ]")))
|
||||||
syntaxError(tok);
|
syntaxError(tok);
|
||||||
|
if (Token::Match(tok, "[+-] [;,)]}]"))
|
||||||
|
syntaxError(tok);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ternary operator without :
|
// ternary operator without :
|
||||||
|
|
|
@ -231,6 +231,7 @@ private:
|
||||||
TEST_CASE(garbageCode198); // #8383
|
TEST_CASE(garbageCode198); // #8383
|
||||||
TEST_CASE(garbageCode199); // #8752
|
TEST_CASE(garbageCode199); // #8752
|
||||||
TEST_CASE(garbageCode200); // #8757
|
TEST_CASE(garbageCode200); // #8757
|
||||||
|
TEST_CASE(garbageCode201); // #8873
|
||||||
|
|
||||||
TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1
|
TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1
|
||||||
|
|
||||||
|
@ -1426,7 +1427,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
void garbageCode181() {
|
void garbageCode181() {
|
||||||
checkCode("int test() { int +; }");
|
ASSERT_THROW(checkCode("int test() { int +; }"), InternalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
// #4195 - segfault for "enum { int f ( ) { return = } r = f ( ) ; }"
|
// #4195 - segfault for "enum { int f ( ) { return = } r = f ( ) ; }"
|
||||||
|
@ -1551,6 +1552,11 @@ private:
|
||||||
ASSERT_THROW(checkCode("(){e break,{(case)!{e:[]}}}"), InternalError);
|
ASSERT_THROW(checkCode("(){e break,{(case)!{e:[]}}}"), InternalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #8873
|
||||||
|
void garbageCode201() {
|
||||||
|
ASSERT_THROW(checkCode("void f() { std::string s=\"abc\"; return s + }"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
void syntaxErrorFirstToken() {
|
void syntaxErrorFirstToken() {
|
||||||
ASSERT_THROW(checkCode("&operator(){[]};"), InternalError); // #7818
|
ASSERT_THROW(checkCode("&operator(){[]};"), InternalError); // #7818
|
||||||
ASSERT_THROW(checkCode("*(*const<> (size_t); foo) { } *(*const (size_t)() ; foo) { }"), InternalError); // #6858
|
ASSERT_THROW(checkCode("*(*const<> (size_t); foo) { } *(*const (size_t)() ; foo) { }"), InternalError); // #6858
|
||||||
|
|
Loading…
Reference in New Issue