Fix 9245: Synax error on valid C++14 code: AST broken, binary operator '=' doesn't have two operands. (#3400)
This commit is contained in:
parent
c92dab1329
commit
6d65f86871
|
@ -4525,9 +4525,7 @@ void Tokenizer::createLinks2()
|
|||
if (!top2 || top2->str() != "<") {
|
||||
if (token->str() == ">>")
|
||||
continue;
|
||||
if (token->next() &&
|
||||
!Token::Match(token->next(), "%name%|%comp%|&|&&|*|::|,|(|)|{|}|;|[|:|.|=") &&
|
||||
!Token::simpleMatch(token->next(), "...") &&
|
||||
if (!Token::Match(token->next(), "%name%|%cop%|::|,|(|)|{|}|;|[|:|.|=|...") &&
|
||||
!Token::Match(token->next(), "&& %name% ="))
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1738,12 +1738,13 @@ private:
|
|||
|
||||
void cliCode() {
|
||||
// #8913
|
||||
ASSERT_THROW(checkCode("public ref class LibCecSharp : public CecCallbackMethods {\n"
|
||||
"array<CecAdapter ^> ^ FindAdapters(String ^ path) {}\n"
|
||||
"bool GetDeviceInformation(String ^ port, LibCECConfiguration ^configuration, uint32_t timeoutMs) {\n"
|
||||
"bool bReturn(false);\n"
|
||||
"}\n"
|
||||
"};"), InternalError);
|
||||
ASSERT_NO_THROW(checkCode(
|
||||
"public ref class LibCecSharp : public CecCallbackMethods {\n"
|
||||
"array<CecAdapter ^> ^ FindAdapters(String ^ path) {}\n"
|
||||
"bool GetDeviceInformation(String ^ port, LibCECConfiguration ^configuration, uint32_t timeoutMs) {\n"
|
||||
"bool bReturn(false);\n"
|
||||
"}\n"
|
||||
"};"));
|
||||
}
|
||||
|
||||
void enumTrailingComma() {
|
||||
|
|
|
@ -6586,6 +6586,15 @@ private:
|
|||
"template <class> struct F;\n"
|
||||
"int main() { using T = void (*)(a<j<F, char[]>>); }\n"));
|
||||
|
||||
// #9245
|
||||
ASSERT_NO_THROW(tokenizeAndStringify("struct a {\n"
|
||||
" typedef int b;\n"
|
||||
" operator b();\n"
|
||||
"};\n"
|
||||
"template <int> using c = a;\n"
|
||||
"template <int d> c<d> e;\n"
|
||||
"auto f = ((e<4> | 0));\n"));
|
||||
|
||||
// #9340
|
||||
ASSERT_NO_THROW(tokenizeAndStringify(
|
||||
"struct a {\n"
|
||||
|
@ -6608,6 +6617,13 @@ private:
|
|||
" ;\n"
|
||||
"}\n"));
|
||||
|
||||
// #10015
|
||||
ASSERT_NO_THROW(tokenizeAndStringify(
|
||||
"void func() {\n"
|
||||
" if (std::is_same_v<int, int> || 1)\n"
|
||||
" ;\n"
|
||||
"}\n"));
|
||||
|
||||
// #10309
|
||||
ASSERT_NO_THROW(tokenizeAndStringify(
|
||||
"using a = void *;\n"
|
||||
|
|
Loading…
Reference in New Issue