aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/ASTMatcher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/ASTMatcher.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/ASTMatcher.cpp131
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;
}