diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-08-24 16:23:33 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-08-25 08:09:23 +0000 |
commit | fa13f48c2b37f91690ba12e8f1b3162db7c3cb5c (patch) | |
tree | 4f5215123738e46c2f66c32b024db0615da2657b /src/libs/3rdparty/cplusplus/Parser.h | |
parent | 3172bba63c1234497fed360ba52d1c2588fc2132 (diff) |
CPlusPlus: Fix mis-parsing array-related constructs
... as structured bindings.
Also add a safety check to Bind that might be needed for invalid code.
Amends ca00b874a7.
Change-Id: I7b174b80ad97ed7424f1e369b876c99acf7e95d2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.h')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.h b/src/libs/3rdparty/cplusplus/Parser.h index 3a3b00fdf6..499a854490 100644 --- a/src/libs/3rdparty/cplusplus/Parser.h +++ b/src/libs/3rdparty/cplusplus/Parser.h @@ -79,7 +79,7 @@ public: bool parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *declaringClass = nullptr); bool parseDeclarationStatement(StatementAST *&node); bool parseCoreDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list, ClassSpecifierAST *declaringClass); - DecompositionDeclaratorAST *parseDecompositionDeclarator(); + DecompositionDeclaratorAST *parseDecompositionDeclarator(SpecifierListAST *decl_specifier_list); bool parseDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_specifier_list, ClassSpecifierAST *declaringClass = nullptr); bool parseDeleteExpression(ExpressionAST *&node); bool parseDoStatement(StatementAST *&node); @@ -317,6 +317,8 @@ public: void clearTemplateArgumentList() { _templateArgumentList.clear(); } private: + bool hasAuto(SpecifierListAST *decl_specifier_list) const; + TranslationUnit *_translationUnit; Control *_control; MemoryPool *_pool; |