summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/ASTMatch0.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-12 17:35:48 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-12 18:03:05 +0100
commit5dcf449afd7755d0ab88e55638fcbd8bc98deded (patch)
tree2e9a0abdadc4474d5bbf513183ac8818dd2bbcd1 /src/shared/cplusplus/ASTMatch0.cpp
parentb2f6803329126c7f8f391e97ffd50f26b98064a0 (diff)
downloadqt-creator-5dcf449afd7755d0ab88e55638fcbd8bc98deded.tar.gz
Initial work on the pattern matcher for AST nodes.
Diffstat (limited to 'src/shared/cplusplus/ASTMatch0.cpp')
-rw-r--r--src/shared/cplusplus/ASTMatch0.cpp1628
1 files changed, 1628 insertions, 0 deletions
diff --git a/src/shared/cplusplus/ASTMatch0.cpp b/src/shared/cplusplus/ASTMatch0.cpp
new file mode 100644
index 0000000000..a6522b5407
--- /dev/null
+++ b/src/shared/cplusplus/ASTMatch0.cpp
@@ -0,0 +1,1628 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "AST.h"
+#include "ASTMatcher.h"
+
+using namespace CPlusPlus;
+
+bool SimpleSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (SimpleSpecifierAST *_other = pattern->asSimpleSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool AttributeSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (AttributeSpecifierAST *_other = pattern->asAttributeSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool AttributeAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (AttributeAST *_other = pattern->asAttribute()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypeofSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypeofSpecifierAST *_other = pattern->asTypeofSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DeclaratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DeclaratorAST *_other = pattern->asDeclarator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(ptr_operator_list, _other->ptr_operator_list, matcher))
+ return false;
+ if (! match(core_declarator, _other->core_declarator, matcher))
+ return false;
+ if (! match(postfix_declarator_list, _other->postfix_declarator_list, matcher))
+ return false;
+ if (! match(post_attribute_list, _other->post_attribute_list, matcher))
+ return false;
+ if (! match(initializer, _other->initializer, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool SimpleDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (SimpleDeclarationAST *_other = pattern->asSimpleDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(decl_specifier_list, _other->decl_specifier_list, matcher))
+ return false;
+ if (! match(declarator_list, _other->declarator_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool EmptyDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (EmptyDeclarationAST *_other = pattern->asEmptyDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool AccessDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (AccessDeclarationAST *_other = pattern->asAccessDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool AsmDefinitionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (AsmDefinitionAST *_other = pattern->asAsmDefinition()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool BaseSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (BaseSpecifierAST *_other = pattern->asBaseSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CompoundLiteralAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CompoundLiteralAST *_other = pattern->asCompoundLiteral()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ if (! match(initializer, _other->initializer, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool QtMethodAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (QtMethodAST *_other = pattern->asQtMethod()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool BinaryExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (BinaryExpressionAST *_other = pattern->asBinaryExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(left_expression, _other->left_expression, matcher))
+ return false;
+ if (! match(right_expression, _other->right_expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CastExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CastExpressionAST *_other = pattern->asCastExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ClassSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ClassSpecifierAST *_other = pattern->asClassSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(base_clause_list, _other->base_clause_list, matcher))
+ return false;
+ if (! match(member_specifier_list, _other->member_specifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CaseStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CaseStatementAST *_other = pattern->asCaseStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CompoundStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CompoundStatementAST *_other = pattern->asCompoundStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(statement_list, _other->statement_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ConditionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ConditionAST *_other = pattern->asCondition()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ConditionalExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ConditionalExpressionAST *_other = pattern->asConditionalExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(condition, _other->condition, matcher))
+ return false;
+ if (! match(left_expression, _other->left_expression, matcher))
+ return false;
+ if (! match(right_expression, _other->right_expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CppCastExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CppCastExpressionAST *_other = pattern->asCppCastExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CtorInitializerAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CtorInitializerAST *_other = pattern->asCtorInitializer()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(member_initializer_list, _other->member_initializer_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DeclarationStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DeclarationStatementAST *_other = pattern->asDeclarationStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declaration, _other->declaration, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DeclaratorIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DeclaratorIdAST *_other = pattern->asDeclaratorId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NestedDeclaratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NestedDeclaratorAST *_other = pattern->asNestedDeclarator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool FunctionDeclaratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (FunctionDeclaratorAST *_other = pattern->asFunctionDeclarator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(parameters, _other->parameters, matcher))
+ return false;
+ if (! match(cv_qualifier_list, _other->cv_qualifier_list, matcher))
+ return false;
+ if (! match(exception_specification, _other->exception_specification, matcher))
+ return false;
+ if (! match(as_cpp_initializer, _other->as_cpp_initializer, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ArrayDeclaratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ArrayDeclaratorAST *_other = pattern->asArrayDeclarator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DeleteExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DeleteExpressionAST *_other = pattern->asDeleteExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DoStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DoStatementAST *_other = pattern->asDoStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NamedTypeSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NamedTypeSpecifierAST *_other = pattern->asNamedTypeSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ElaboratedTypeSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ElaboratedTypeSpecifierAST *_other = pattern->asElaboratedTypeSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool EnumSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (EnumSpecifierAST *_other = pattern->asEnumSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(enumerator_list, _other->enumerator_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool EnumeratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (EnumeratorAST *_other = pattern->asEnumerator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ExceptionDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ExceptionDeclarationAST *_other = pattern->asExceptionDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ExceptionSpecificationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ExceptionSpecificationAST *_other = pattern->asExceptionSpecification()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_id_list, _other->type_id_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ExpressionOrDeclarationStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ExpressionOrDeclarationStatementAST *_other = pattern->asExpressionOrDeclarationStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ if (! match(declaration, _other->declaration, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ExpressionStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ExpressionStatementAST *_other = pattern->asExpressionStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool FunctionDefinitionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (FunctionDefinitionAST *_other = pattern->asFunctionDefinition()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(decl_specifier_list, _other->decl_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ if (! match(ctor_initializer, _other->ctor_initializer, matcher))
+ return false;
+ if (! match(function_body, _other->function_body, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ForeachStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ForeachStatementAST *_other = pattern->asForeachStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ if (! match(initializer, _other->initializer, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ForStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ForStatementAST *_other = pattern->asForStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(initializer, _other->initializer, matcher))
+ return false;
+ if (! match(condition, _other->condition, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool IfStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (IfStatementAST *_other = pattern->asIfStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(condition, _other->condition, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ if (! match(else_statement, _other->else_statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ArrayInitializerAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ArrayInitializerAST *_other = pattern->asArrayInitializer()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool LabeledStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (LabeledStatementAST *_other = pattern->asLabeledStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool LinkageBodyAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (LinkageBodyAST *_other = pattern->asLinkageBody()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declaration_list, _other->declaration_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool LinkageSpecificationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (LinkageSpecificationAST *_other = pattern->asLinkageSpecification()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declaration, _other->declaration, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool MemInitializerAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (MemInitializerAST *_other = pattern->asMemInitializer()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NestedNameSpecifierAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NestedNameSpecifierAST *_other = pattern->asNestedNameSpecifier()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(class_or_namespace_name, _other->class_or_namespace_name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool QualifiedNameAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (QualifiedNameAST *_other = pattern->asQualifiedName()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(nested_name_specifier_list, _other->nested_name_specifier_list, matcher))
+ return false;
+ if (! match(unqualified_name, _other->unqualified_name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool OperatorFunctionIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (OperatorFunctionIdAST *_other = pattern->asOperatorFunctionId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(op, _other->op, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ConversionFunctionIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ConversionFunctionIdAST *_other = pattern->asConversionFunctionId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(ptr_operator_list, _other->ptr_operator_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool SimpleNameAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (SimpleNameAST *_other = pattern->asSimpleName()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool DestructorNameAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (DestructorNameAST *_other = pattern->asDestructorName()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TemplateIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TemplateIdAST *_other = pattern->asTemplateId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(template_argument_list, _other->template_argument_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NamespaceAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NamespaceAST *_other = pattern->asNamespace()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(linkage_body, _other->linkage_body, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NamespaceAliasDefinitionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NamespaceAliasDefinitionAST *_other = pattern->asNamespaceAliasDefinition()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NewPlacementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NewPlacementAST *_other = pattern->asNewPlacement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NewArrayDeclaratorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NewArrayDeclaratorAST *_other = pattern->asNewArrayDeclarator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NewExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NewExpressionAST *_other = pattern->asNewExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(new_placement, _other->new_placement, matcher))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ if (! match(new_type_id, _other->new_type_id, matcher))
+ return false;
+ if (! match(new_initializer, _other->new_initializer, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NewInitializerAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NewInitializerAST *_other = pattern->asNewInitializer()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NewTypeIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NewTypeIdAST *_other = pattern->asNewTypeId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(ptr_operator_list, _other->ptr_operator_list, matcher))
+ return false;
+ if (! match(new_array_declarator_list, _other->new_array_declarator_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool OperatorAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (OperatorAST *_other = pattern->asOperator()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ParameterDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ParameterDeclarationAST *_other = pattern->asParameterDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ParameterDeclarationClauseAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ParameterDeclarationClauseAST *_other = pattern->asParameterDeclarationClause()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(parameter_declaration_list, _other->parameter_declaration_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CallAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CallAST *_other = pattern->asCall()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ArrayAccessAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ArrayAccessAST *_other = pattern->asArrayAccess()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool PostIncrDecrAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (PostIncrDecrAST *_other = pattern->asPostIncrDecr()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool MemberAccessAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (MemberAccessAST *_other = pattern->asMemberAccess()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(member_name, _other->member_name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypeidExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypeidExpressionAST *_other = pattern->asTypeidExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypenameCallExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypenameCallExpressionAST *_other = pattern->asTypenameCallExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypeConstructorCallAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypeConstructorCallAST *_other = pattern->asTypeConstructorCall()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(expression_list, _other->expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool PostfixExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (PostfixExpressionAST *_other = pattern->asPostfixExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(base_expression, _other->base_expression, matcher))
+ return false;
+ if (! match(postfix_expression_list, _other->postfix_expression_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool PointerToMemberAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (PointerToMemberAST *_other = pattern->asPointerToMember()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(nested_name_specifier_list, _other->nested_name_specifier_list, matcher))
+ return false;
+ if (! match(cv_qualifier_list, _other->cv_qualifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool PointerAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (PointerAST *_other = pattern->asPointer()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(cv_qualifier_list, _other->cv_qualifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ReferenceAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ReferenceAST *_other = pattern->asReference()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool BreakStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (BreakStatementAST *_other = pattern->asBreakStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ContinueStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ContinueStatementAST *_other = pattern->asContinueStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool GotoStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (GotoStatementAST *_other = pattern->asGotoStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ReturnStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ReturnStatementAST *_other = pattern->asReturnStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool SizeofExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (SizeofExpressionAST *_other = pattern->asSizeofExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NumericLiteralAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NumericLiteralAST *_other = pattern->asNumericLiteral()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool BoolLiteralAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (BoolLiteralAST *_other = pattern->asBoolLiteral()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ThisExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ThisExpressionAST *_other = pattern->asThisExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool NestedExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (NestedExpressionAST *_other = pattern->asNestedExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool StringLiteralAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (StringLiteralAST *_other = pattern->asStringLiteral()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(next, _other->next, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool SwitchStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (SwitchStatementAST *_other = pattern->asSwitchStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(condition, _other->condition, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TemplateDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TemplateDeclarationAST *_other = pattern->asTemplateDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(template_parameter_list, _other->template_parameter_list, matcher))
+ return false;
+ if (! match(declaration, _other->declaration, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ThrowExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ThrowExpressionAST *_other = pattern->asThrowExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TranslationUnitAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TranslationUnitAST *_other = pattern->asTranslationUnit()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(declaration_list, _other->declaration_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TryBlockStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TryBlockStatementAST *_other = pattern->asTryBlockStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ if (! match(catch_clause_list, _other->catch_clause_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool CatchClauseAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (CatchClauseAST *_other = pattern->asCatchClause()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(exception_declaration, _other->exception_declaration, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypeIdAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypeIdAST *_other = pattern->asTypeId()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TypenameTypeParameterAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TypenameTypeParameterAST *_other = pattern->asTypenameTypeParameter()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool TemplateTypeParameterAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (TemplateTypeParameterAST *_other = pattern->asTemplateTypeParameter()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(template_parameter_list, _other->template_parameter_list, matcher))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool UnaryExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (UnaryExpressionAST *_other = pattern->asUnaryExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(expression, _other->expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool UsingAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (UsingAST *_other = pattern->asUsing()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool UsingDirectiveAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (UsingDirectiveAST *_other = pattern->asUsingDirective()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool WhileStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (WhileStatementAST *_other = pattern->asWhileStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(condition, _other->condition, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCClassForwardDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCClassForwardDeclarationAST *_other = pattern->asObjCClassForwardDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(identifier_list, _other->identifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCClassDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCClassDeclarationAST *_other = pattern->asObjCClassDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(class_name, _other->class_name, matcher))
+ return false;
+ if (! match(category_name, _other->category_name, matcher))
+ return false;
+ if (! match(superclass, _other->superclass, matcher))
+ return false;
+ if (! match(protocol_refs, _other->protocol_refs, matcher))
+ return false;
+ if (! match(inst_vars_decl, _other->inst_vars_decl, matcher))
+ return false;
+ if (! match(member_declaration_list, _other->member_declaration_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCProtocolForwardDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCProtocolForwardDeclarationAST *_other = pattern->asObjCProtocolForwardDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(identifier_list, _other->identifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCProtocolDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCProtocolDeclarationAST *_other = pattern->asObjCProtocolDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(name, _other->name, matcher))
+ return false;
+ if (! match(protocol_refs, _other->protocol_refs, matcher))
+ return false;
+ if (! match(member_declaration_list, _other->member_declaration_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCProtocolRefsAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCProtocolRefsAST *_other = pattern->asObjCProtocolRefs()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(identifier_list, _other->identifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCMessageArgumentAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCMessageArgumentAST *_other = pattern->asObjCMessageArgument()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(parameter_value_expression, _other->parameter_value_expression, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCMessageExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCMessageExpressionAST *_other = pattern->asObjCMessageExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(receiver_expression, _other->receiver_expression, matcher))
+ return false;
+ if (! match(selector, _other->selector, matcher))
+ return false;
+ if (! match(argument_list, _other->argument_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCProtocolExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCProtocolExpressionAST *_other = pattern->asObjCProtocolExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCTypeNameAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCTypeNameAST *_other = pattern->asObjCTypeName()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_id, _other->type_id, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCEncodeExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCEncodeExpressionAST *_other = pattern->asObjCEncodeExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_name, _other->type_name, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSelectorWithoutArgumentsAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSelectorWithoutArgumentsAST *_other = pattern->asObjCSelectorWithoutArguments()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSelectorArgumentAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSelectorArgumentAST *_other = pattern->asObjCSelectorArgument()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSelectorWithArgumentsAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSelectorWithArgumentsAST *_other = pattern->asObjCSelectorWithArguments()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(selector_argument_list, _other->selector_argument_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSelectorExpressionAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSelectorExpressionAST *_other = pattern->asObjCSelectorExpression()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(selector, _other->selector, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCInstanceVariablesDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCInstanceVariablesDeclarationAST *_other = pattern->asObjCInstanceVariablesDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(instance_variable_list, _other->instance_variable_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCVisibilityDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCVisibilityDeclarationAST *_other = pattern->asObjCVisibilityDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCPropertyAttributeAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCPropertyAttributeAST *_other = pattern->asObjCPropertyAttribute()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(method_selector, _other->method_selector, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCPropertyDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCPropertyDeclarationAST *_other = pattern->asObjCPropertyDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ if (! match(property_attribute_list, _other->property_attribute_list, matcher))
+ return false;
+ if (! match(simple_declaration, _other->simple_declaration, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCMessageArgumentDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCMessageArgumentDeclarationAST *_other = pattern->asObjCMessageArgumentDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_name, _other->type_name, matcher))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCMethodPrototypeAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCMethodPrototypeAST *_other = pattern->asObjCMethodPrototype()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_name, _other->type_name, matcher))
+ return false;
+ if (! match(selector, _other->selector, matcher))
+ return false;
+ if (! match(argument_list, _other->argument_list, matcher))
+ return false;
+ if (! match(attribute_list, _other->attribute_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCMethodDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCMethodDeclarationAST *_other = pattern->asObjCMethodDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(method_prototype, _other->method_prototype, matcher))
+ return false;
+ if (! match(function_body, _other->function_body, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSynthesizedPropertyAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSynthesizedPropertyAST *_other = pattern->asObjCSynthesizedProperty()) {
+ if (! matcher->match(this, _other))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSynthesizedPropertiesDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSynthesizedPropertiesDeclarationAST *_other = pattern->asObjCSynthesizedPropertiesDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(property_identifier_list, _other->property_identifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCDynamicPropertiesDeclarationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCDynamicPropertiesDeclarationAST *_other = pattern->asObjCDynamicPropertiesDeclaration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(property_identifier_list, _other->property_identifier_list, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCFastEnumerationAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCFastEnumerationAST *_other = pattern->asObjCFastEnumeration()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(type_specifier_list, _other->type_specifier_list, matcher))
+ return false;
+ if (! match(declarator, _other->declarator, matcher))
+ return false;
+ if (! match(initializer, _other->initializer, matcher))
+ return false;
+ if (! match(fast_enumeratable_expression, _other->fast_enumeratable_expression, matcher))
+ return false;
+ if (! match(body_statement, _other->body_statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+
+bool ObjCSynchronizedStatementAST::match0(AST *pattern, ASTMatcher *matcher)
+{
+ if (ObjCSynchronizedStatementAST *_other = pattern->asObjCSynchronizedStatement()) {
+ if (! matcher->match(this, _other))
+ return false;
+ if (! match(synchronized_object, _other->synchronized_object, matcher))
+ return false;
+ if (! match(statement, _other->statement, matcher))
+ return false;
+ return true;
+ }
+ return false;
+}
+