diff options
Diffstat (limited to 'src/libs/3rdparty/cplusplus/ASTMatcher.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTMatcher.cpp | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp index fcfe86ab57..b264098a96 100644 --- a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp +++ b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp @@ -216,6 +216,25 @@ bool ASTMatcher::match(DecltypeSpecifierAST *node, DecltypeSpecifierAST *pattern return true; } +bool ASTMatcher::match(TypeConstraintAST *node, TypeConstraintAST *pattern) +{ + if (!pattern->nestedName) + pattern->nestedName = node->nestedName; + else if (!AST::match(node->nestedName, pattern->nestedName, this)) + return false; + if (!pattern->conceptName) + pattern->conceptName = node->conceptName; + else if (!AST::match(node->conceptName, pattern->conceptName, this)) + return false; + pattern->lessToken = node->lessToken; + if (!pattern->templateArgs) + pattern->templateArgs = node->templateArgs; + else if (!AST::match(node->templateArgs, pattern->templateArgs, this)) + return false; + pattern->greaterToken = node->greaterToken; + return true; +} + bool ASTMatcher::match(DeclaratorAST *node, DeclaratorAST *pattern) { (void) node; @@ -1299,6 +1318,11 @@ bool ASTMatcher::match(IfStatementAST *node, IfStatementAST *pattern) pattern->lparen_token = node->lparen_token; + if (!pattern->initStmt) + pattern->initStmt = node->initStmt; + else if (!AST::match(node->initStmt, pattern->initStmt, this)) + return false; + if (! pattern->condition) pattern->condition = node->condition; else if (! AST::match(node->condition, pattern->condition, this)) @@ -1749,6 +1773,19 @@ bool ASTMatcher::match(ParameterDeclarationClauseAST *node, ParameterDeclaration return true; } +bool ASTMatcher::match(PlaceholderTypeSpecifierAST *node, PlaceholderTypeSpecifierAST *pattern) +{ + if (!pattern->typeConstraint) + pattern->typeConstraint = node->typeConstraint; + else if (!AST::match(node->typeConstraint, pattern->typeConstraint, this)) + return false; + pattern->declTypetoken = node->declTypetoken; + pattern->lparenToken = node->lparenToken; + pattern->autoToken = node->autoToken; + pattern->rparenToken = node->rparenToken; + return true; +} + bool ASTMatcher::match(CallAST *node, CallAST *pattern) { (void) node; @@ -2173,6 +2210,11 @@ bool ASTMatcher::match(TemplateDeclarationAST *node, TemplateDeclarationAST *pat pattern->greater_token = node->greater_token; + if (! pattern->requiresClause) + pattern->requiresClause = node->requiresClause; + else if (! AST::match(node->requiresClause, pattern->requiresClause, this)) + return false; + if (! pattern->declaration) pattern->declaration = node->declaration; else if (! AST::match(node->declaration, pattern->declaration, this)) @@ -2181,6 +2223,50 @@ bool ASTMatcher::match(TemplateDeclarationAST *node, TemplateDeclarationAST *pat return true; } +bool ASTMatcher::match(ConceptDeclarationAST *node, ConceptDeclarationAST *pattern) +{ + pattern->concept_token = node->concept_token; + pattern->equals_token = node->equals_token; + pattern->semicolon_token = node->semicolon_token; + + if (!pattern->attributes) + pattern->attributes = node->attributes; + else if (!AST::match(node->attributes, pattern->attributes, this)) + return false; + + if (!pattern->constraint) + pattern->constraint = node->constraint; + else if (! AST::match(node->constraint, pattern->constraint, this)) + return false; + + return true; +} + +bool ASTMatcher::match(RequiresExpressionAST *node, RequiresExpressionAST *pattern) +{ + pattern->requires_token = node->requires_token; + pattern->lparen_token = node->lparen_token; + pattern->lbrace_token = node->lbrace_token; + pattern->rbrace_token = node->rbrace_token; + + if (!pattern->parameters) + pattern->parameters = node->parameters; + else if (!AST::match(node->parameters, pattern->parameters, this)) + return false; + + return true; +} + +bool ASTMatcher::match(RequiresClauseAST *node, RequiresClauseAST *pattern) +{ + pattern->requires_token = node->requires_token; + if (!pattern->constraint) + pattern->constraint = node->constraint; + else if (!AST::match(node->constraint, pattern->constraint, this)) + return false; + return true; +} + bool ASTMatcher::match(ThrowExpressionAST *node, ThrowExpressionAST *pattern) { (void) node; @@ -2196,6 +2282,26 @@ bool ASTMatcher::match(ThrowExpressionAST *node, ThrowExpressionAST *pattern) return true; } +bool ASTMatcher::match(YieldExpressionAST *node, YieldExpressionAST *pattern) +{ + pattern->yield_token = node->yield_token; + if (!pattern->expression) + pattern->expression = node->expression; + else if (!AST::match(node->expression, pattern->expression, this)) + return false; + return true; +} + +bool ASTMatcher::match(AwaitExpressionAST *node, AwaitExpressionAST *pattern) +{ + pattern->await_token = node->await_token; + if (!pattern->castExpression) + pattern->castExpression = node->castExpression; + else if (!AST::match(node->castExpression, pattern->castExpression, this)) + return false; + return true; +} + bool ASTMatcher::match(NoExceptOperatorExpressionAST *node, NoExceptOperatorExpressionAST *pattern) { (void) node; @@ -2317,6 +2423,11 @@ bool ASTMatcher::match(TemplateTypeParameterAST *node, TemplateTypeParameterAST pattern->template_token = node->template_token; + if (!pattern->typeConstraint) + pattern->typeConstraint = node->typeConstraint; + else if (!AST::match(node->typeConstraint, pattern->typeConstraint, this)) + return false; + pattern->less_token = node->less_token; if (! pattern->template_parameter_list) @@ -2950,6 +3061,21 @@ bool ASTMatcher::match(LambdaExpressionAST *node, LambdaExpressionAST *pattern) else if (! AST::match(node->lambda_introducer, pattern->lambda_introducer, this)) return false; + if (! pattern->templateParameters) + pattern->templateParameters = node->templateParameters; + else if (! AST::match(node->templateParameters, pattern->templateParameters, this)) + return false; + + if (! pattern->requiresClause) + pattern->requiresClause = node->requiresClause; + else if (! AST::match(node->requiresClause, pattern->requiresClause, this)) + return false; + + if (! pattern->attributes) + pattern->attributes = node->attributes; + else if (! AST::match(node->attributes, pattern->attributes, this)) + return false; + if (! pattern->lambda_declarator) pattern->lambda_declarator = node->lambda_declarator; else if (! AST::match(node->lambda_declarator, pattern->lambda_declarator, this)) @@ -3041,6 +3167,11 @@ bool ASTMatcher::match(LambdaDeclaratorAST *node, LambdaDeclaratorAST *pattern) else if (! AST::match(node->trailing_return_type, pattern->trailing_return_type, this)) return false; + if (! pattern->requiresClause) + pattern->requiresClause = node->requiresClause; + else if (! AST::match(node->requiresClause, pattern->requiresClause, this)) + return false; + return true; } |