1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
10 ** GNU Lesser General Public License Usage
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
31 **************************************************************************/
32 // Copyright (c) 2008 Roberto Raggi <roberto.raggi@gmail.com>
34 // Permission is hereby granted, free of charge, to any person obtaining a copy
35 // of this software and associated documentation files (the "Software"), to deal
36 // in the Software without restriction, including without limitation the rights
37 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
38 // copies of the Software, and to permit persons to whom the Software is
39 // furnished to do so, subject to the following conditions:
41 // The above copyright notice and this permission notice shall be included in
42 // all copies or substantial portions of the Software.
44 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
45 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
46 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
47 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
48 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
49 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
53 #include "ASTVisitor.h"
54 #include "ASTMatcher.h"
55 #include "MemoryPool.h"
62 All firstToken/lastToken methods below which have a doxygen comment with
63 \generated in it, will be re-generated when the tool "generate-ast" is run.
65 For methods which are hand-coded, or which should not be changed, make sure that
70 using namespace CPlusPlus;
78 void AST::accept(ASTVisitor *visitor)
80 if (visitor->preVisit(this))
82 visitor->postVisit(this);
85 bool AST::match(AST *ast, AST *pattern, ASTMatcher *matcher)
90 else if (! ast || ! pattern)
93 return ast->match(pattern, matcher);
96 bool AST::match(AST *pattern, ASTMatcher *matcher)
98 return match0(pattern, matcher);
101 unsigned AttributeSpecifierAST::firstToken() const
103 return attribute_token;
106 unsigned BaseSpecifierAST::firstToken() const
108 if (virtual_token && access_specifier_token)
109 return std::min(virtual_token, access_specifier_token);
111 return virtual_token;
112 if (access_specifier_token)
113 return access_specifier_token;
120 unsigned BaseSpecifierAST::lastToken() const
123 return name->lastToken();
124 else if (virtual_token && access_specifier_token)
125 return std::max(virtual_token, access_specifier_token) + 1;
126 else if (virtual_token)
127 return virtual_token + 1;
128 else if (access_specifier_token)
129 return access_specifier_token + 1;
135 unsigned AccessDeclarationAST::firstToken() const
137 if (access_specifier_token)
138 return access_specifier_token;
147 unsigned AccessDeclarationAST::lastToken() const
150 return colon_token + 1;
152 return slots_token + 1;
153 if (access_specifier_token)
154 return access_specifier_token + 1;
159 unsigned ArrayAccessAST::firstToken() const
162 if (unsigned candidate = base_expression->firstToken())
165 return lbracket_token;
167 if (unsigned candidate = expression->firstToken())
170 return rbracket_token;
175 unsigned ArrayAccessAST::lastToken() const
178 return rbracket_token + 1;
180 if (unsigned candidate = expression->lastToken())
183 return lbracket_token + 1;
185 if (unsigned candidate = base_expression->lastToken())
191 unsigned ArrayDeclaratorAST::firstToken() const
194 return lbracket_token;
196 if (unsigned candidate = expression->firstToken())
199 return rbracket_token;
204 unsigned ArrayDeclaratorAST::lastToken() const
207 return rbracket_token + 1;
209 if (unsigned candidate = expression->lastToken())
212 return lbracket_token + 1;
217 unsigned ArrayInitializerAST::firstToken() const
222 if (unsigned candidate = expression_list->firstToken())
230 unsigned ArrayInitializerAST::lastToken() const
233 return rbrace_token + 1;
235 if (unsigned candidate = expression_list->lastToken())
238 return lbrace_token + 1;
243 unsigned AsmDefinitionAST::firstToken() const
248 return volatile_token;
254 return semicolon_token;
259 unsigned AsmDefinitionAST::lastToken() const
262 return semicolon_token + 1;
264 return rparen_token + 1;
266 return lparen_token + 1;
268 return volatile_token + 1;
270 return asm_token + 1;
275 unsigned AttributeAST::firstToken() const
277 if (identifier_token)
278 return identifier_token;
284 if (unsigned candidate = expression_list->firstToken())
292 unsigned AttributeAST::lastToken() const
295 return rparen_token + 1;
297 if (unsigned candidate = expression_list->lastToken())
300 return tag_token + 1;
302 return lparen_token + 1;
303 if (identifier_token)
304 return identifier_token + 1;
309 unsigned BinaryExpressionAST::firstToken() const
312 if (unsigned candidate = left_expression->firstToken())
315 return binary_op_token;
316 if (right_expression)
317 if (unsigned candidate = right_expression->firstToken())
323 unsigned BinaryExpressionAST::lastToken() const
325 if (right_expression)
326 if (unsigned candidate = right_expression->lastToken())
329 return binary_op_token + 1;
331 if (unsigned candidate = left_expression->lastToken())
337 unsigned BoolLiteralAST::firstToken() const
340 return literal_token;
345 unsigned BoolLiteralAST::lastToken() const
348 return literal_token + 1;
353 unsigned BracedInitializerAST::firstToken() const
358 if (unsigned candidate = expression_list->firstToken())
368 unsigned BracedInitializerAST::lastToken() const
371 return rbrace_token + 1;
373 return comma_token + 1;
375 if (unsigned candidate = expression_list->lastToken())
378 return lbrace_token + 1;
383 unsigned BreakStatementAST::firstToken() const
388 return semicolon_token;
393 unsigned BreakStatementAST::lastToken() const
396 return semicolon_token + 1;
398 return break_token + 1;
403 unsigned CallAST::firstToken() const
406 if (unsigned candidate = base_expression->firstToken())
411 if (unsigned candidate = expression_list->firstToken())
419 unsigned CallAST::lastToken() const
422 return rparen_token + 1;
424 if (unsigned candidate = expression_list->lastToken())
427 return lparen_token + 1;
429 if (unsigned candidate = base_expression->lastToken())
435 unsigned CaptureAST::firstToken() const
441 unsigned CaptureAST::lastToken() const
447 unsigned CaseStatementAST::firstToken() const
452 if (unsigned candidate = expression->firstToken())
457 if (unsigned candidate = statement->firstToken())
463 unsigned CaseStatementAST::lastToken() const
466 if (unsigned candidate = statement->lastToken())
469 return colon_token + 1;
471 if (unsigned candidate = expression->lastToken())
474 return case_token + 1;
479 unsigned CastExpressionAST::firstToken() const
484 if (unsigned candidate = type_id->firstToken())
489 if (unsigned candidate = expression->firstToken())
495 unsigned CastExpressionAST::lastToken() const
498 if (unsigned candidate = expression->lastToken())
501 return rparen_token + 1;
503 if (unsigned candidate = type_id->lastToken())
506 return lparen_token + 1;
511 unsigned CatchClauseAST::firstToken() const
517 if (exception_declaration)
518 if (unsigned candidate = exception_declaration->firstToken())
523 if (unsigned candidate = statement->firstToken())
529 unsigned CatchClauseAST::lastToken() const
532 if (unsigned candidate = statement->lastToken())
535 return rparen_token + 1;
536 if (exception_declaration)
537 if (unsigned candidate = exception_declaration->lastToken())
540 return lparen_token + 1;
542 return catch_token + 1;
547 unsigned ClassSpecifierAST::firstToken() const
550 return classkey_token;
552 if (unsigned candidate = attribute_list->firstToken())
555 if (unsigned candidate = name->firstToken())
559 if (base_clause_list)
560 if (unsigned candidate = base_clause_list->firstToken())
562 if (dot_dot_dot_token)
563 return dot_dot_dot_token;
566 if (member_specifier_list)
567 if (unsigned candidate = member_specifier_list->firstToken())
575 unsigned ClassSpecifierAST::lastToken() const
578 return rbrace_token + 1;
579 if (member_specifier_list)
580 if (unsigned candidate = member_specifier_list->lastToken())
583 return lbrace_token + 1;
584 if (dot_dot_dot_token)
585 return dot_dot_dot_token + 1;
586 if (base_clause_list)
587 if (unsigned candidate = base_clause_list->lastToken())
590 return colon_token + 1;
592 if (unsigned candidate = name->lastToken())
595 if (unsigned candidate = attribute_list->lastToken())
598 return classkey_token + 1;
603 unsigned CompoundExpressionAST::firstToken() const
608 if (unsigned candidate = statement->firstToken())
616 unsigned CompoundExpressionAST::lastToken() const
619 return rparen_token + 1;
621 if (unsigned candidate = statement->lastToken())
624 return lparen_token + 1;
629 unsigned CompoundLiteralAST::firstToken() const
634 if (unsigned candidate = type_id->firstToken())
639 if (unsigned candidate = initializer->firstToken())
645 unsigned CompoundLiteralAST::lastToken() const
648 if (unsigned candidate = initializer->lastToken())
651 return rparen_token + 1;
653 if (unsigned candidate = type_id->lastToken())
656 return lparen_token + 1;
661 unsigned CompoundStatementAST::firstToken() const
666 if (unsigned candidate = statement_list->firstToken())
674 unsigned CompoundStatementAST::lastToken() const
677 return rbrace_token + 1;
679 if (unsigned candidate = statement_list->lastToken())
682 return lbrace_token + 1;
687 unsigned ConditionAST::firstToken() const
689 if (type_specifier_list)
690 if (unsigned candidate = type_specifier_list->firstToken())
693 if (unsigned candidate = declarator->firstToken())
699 unsigned ConditionAST::lastToken() const
702 if (unsigned candidate = declarator->lastToken())
704 if (type_specifier_list)
705 if (unsigned candidate = type_specifier_list->lastToken())
711 unsigned ConditionalExpressionAST::firstToken() const
714 if (unsigned candidate = condition->firstToken())
717 return question_token;
719 if (unsigned candidate = left_expression->firstToken())
723 if (right_expression)
724 if (unsigned candidate = right_expression->firstToken())
730 unsigned ConditionalExpressionAST::lastToken() const
732 if (right_expression)
733 if (unsigned candidate = right_expression->lastToken())
736 return colon_token + 1;
738 if (unsigned candidate = left_expression->lastToken())
741 return question_token + 1;
743 if (unsigned candidate = condition->lastToken())
749 unsigned ContinueStatementAST::firstToken() const
752 return continue_token;
754 return semicolon_token;
759 unsigned ContinueStatementAST::lastToken() const
762 return semicolon_token + 1;
764 return continue_token + 1;
769 unsigned ConversionFunctionIdAST::firstToken() const
772 return operator_token;
773 if (type_specifier_list)
774 if (unsigned candidate = type_specifier_list->firstToken())
776 if (ptr_operator_list)
777 if (unsigned candidate = ptr_operator_list->firstToken())
783 unsigned ConversionFunctionIdAST::lastToken() const
785 if (ptr_operator_list)
786 if (unsigned candidate = ptr_operator_list->lastToken())
788 if (type_specifier_list)
789 if (unsigned candidate = type_specifier_list->lastToken())
792 return operator_token + 1;
797 unsigned CppCastExpressionAST::firstToken() const
804 if (unsigned candidate = type_id->firstToken())
807 return greater_token;
811 if (unsigned candidate = expression->firstToken())
819 unsigned CppCastExpressionAST::lastToken() const
822 return rparen_token + 1;
824 if (unsigned candidate = expression->lastToken())
827 return lparen_token + 1;
829 return greater_token + 1;
831 if (unsigned candidate = type_id->lastToken())
834 return less_token + 1;
836 return cast_token + 1;
841 unsigned CtorInitializerAST::firstToken() const
845 if (member_initializer_list)
846 if (unsigned candidate = member_initializer_list->firstToken())
848 if (dot_dot_dot_token)
849 return dot_dot_dot_token;
854 unsigned CtorInitializerAST::lastToken() const
856 if (dot_dot_dot_token)
857 return dot_dot_dot_token + 1;
858 if (member_initializer_list)
859 if (unsigned candidate = member_initializer_list->lastToken())
862 return colon_token + 1;
867 unsigned DeclarationStatementAST::firstToken() const
870 if (unsigned candidate = declaration->firstToken())
876 unsigned DeclarationStatementAST::lastToken() const
879 if (unsigned candidate = declaration->lastToken())
885 unsigned DeclaratorAST::firstToken() const
888 if (unsigned candidate = attribute_list->firstToken())
890 if (ptr_operator_list)
891 if (unsigned candidate = ptr_operator_list->firstToken())
894 if (unsigned candidate = core_declarator->firstToken())
896 if (postfix_declarator_list)
897 if (unsigned candidate = postfix_declarator_list->firstToken())
899 if (post_attribute_list)
900 if (unsigned candidate = post_attribute_list->firstToken())
905 if (unsigned candidate = initializer->firstToken())
911 unsigned DeclaratorAST::lastToken() const
914 if (unsigned candidate = initializer->lastToken())
917 return equal_token + 1;
918 if (post_attribute_list)
919 if (unsigned candidate = post_attribute_list->lastToken())
921 if (postfix_declarator_list)
922 if (unsigned candidate = postfix_declarator_list->lastToken())
925 if (unsigned candidate = core_declarator->lastToken())
927 if (ptr_operator_list)
928 if (unsigned candidate = ptr_operator_list->lastToken())
931 if (unsigned candidate = attribute_list->lastToken())
937 unsigned DeclaratorIdAST::firstToken() const
939 if (dot_dot_dot_token)
940 return dot_dot_dot_token;
942 if (unsigned candidate = name->firstToken())
948 unsigned DeclaratorIdAST::lastToken() const
951 if (unsigned candidate = name->lastToken())
953 if (dot_dot_dot_token)
954 return dot_dot_dot_token + 1;
959 unsigned DeleteExpressionAST::firstToken() const
966 return lbracket_token;
968 return rbracket_token;
970 if (unsigned candidate = expression->firstToken())
976 unsigned DeleteExpressionAST::lastToken() const
979 if (unsigned candidate = expression->lastToken())
982 return rbracket_token + 1;
984 return lbracket_token + 1;
986 return delete_token + 1;
988 return scope_token + 1;
993 unsigned DestructorNameAST::firstToken() const
997 if (identifier_token)
998 return identifier_token;
1003 unsigned DestructorNameAST::lastToken() const
1005 if (identifier_token)
1006 return identifier_token + 1;
1008 return tilde_token + 1;
1013 unsigned DoStatementAST::firstToken() const
1018 if (unsigned candidate = statement->firstToken())
1023 return lparen_token;
1025 if (unsigned candidate = expression->firstToken())
1028 return rparen_token;
1029 if (semicolon_token)
1030 return semicolon_token;
1035 unsigned DoStatementAST::lastToken() const
1037 if (semicolon_token)
1038 return semicolon_token + 1;
1040 return rparen_token + 1;
1042 if (unsigned candidate = expression->lastToken())
1045 return lparen_token + 1;
1047 return while_token + 1;
1049 if (unsigned candidate = statement->lastToken())
1052 return do_token + 1;
1057 unsigned ElaboratedTypeSpecifierAST::firstToken() const
1060 return classkey_token;
1062 if (unsigned candidate = attribute_list->firstToken())
1065 if (unsigned candidate = name->firstToken())
1071 unsigned ElaboratedTypeSpecifierAST::lastToken() const
1074 if (unsigned candidate = name->lastToken())
1077 if (unsigned candidate = attribute_list->lastToken())
1080 return classkey_token + 1;
1085 unsigned EmptyDeclarationAST::firstToken() const
1087 if (semicolon_token)
1088 return semicolon_token;
1093 unsigned EmptyDeclarationAST::lastToken() const
1095 if (semicolon_token)
1096 return semicolon_token + 1;
1101 unsigned EnumSpecifierAST::firstToken() const
1106 if (unsigned candidate = name->firstToken())
1109 return lbrace_token;
1110 if (enumerator_list)
1111 if (unsigned candidate = enumerator_list->firstToken())
1113 if (stray_comma_token)
1114 return stray_comma_token;
1116 return rbrace_token;
1121 unsigned EnumSpecifierAST::lastToken() const
1124 return rbrace_token + 1;
1125 if (stray_comma_token)
1126 return stray_comma_token + 1;
1127 if (enumerator_list)
1128 if (unsigned candidate = enumerator_list->lastToken())
1131 return lbrace_token + 1;
1133 if (unsigned candidate = name->lastToken())
1136 return enum_token + 1;
1141 unsigned EnumeratorAST::firstToken() const
1143 if (identifier_token)
1144 return identifier_token;
1148 if (unsigned candidate = expression->firstToken())
1154 unsigned EnumeratorAST::lastToken() const
1157 if (unsigned candidate = expression->lastToken())
1160 return equal_token + 1;
1161 if (identifier_token)
1162 return identifier_token + 1;
1167 unsigned ExceptionDeclarationAST::firstToken() const
1169 if (type_specifier_list)
1170 if (unsigned candidate = type_specifier_list->firstToken())
1173 if (unsigned candidate = declarator->firstToken())
1175 if (dot_dot_dot_token)
1176 return dot_dot_dot_token;
1181 unsigned ExceptionDeclarationAST::lastToken() const
1183 if (dot_dot_dot_token)
1184 return dot_dot_dot_token + 1;
1186 if (unsigned candidate = declarator->lastToken())
1188 if (type_specifier_list)
1189 if (unsigned candidate = type_specifier_list->lastToken())
1195 unsigned ExceptionSpecificationAST::firstToken() const
1200 return lparen_token;
1201 if (dot_dot_dot_token)
1202 return dot_dot_dot_token;
1204 if (unsigned candidate = type_id_list->firstToken())
1207 return rparen_token;
1212 unsigned ExceptionSpecificationAST::lastToken() const
1215 return rparen_token + 1;
1217 if (unsigned candidate = type_id_list->lastToken())
1219 if (dot_dot_dot_token)
1220 return dot_dot_dot_token + 1;
1222 return lparen_token + 1;
1224 return throw_token + 1;
1229 unsigned ExpressionOrDeclarationStatementAST::firstToken() const
1232 if (unsigned candidate = expression->firstToken())
1235 if (unsigned candidate = declaration->firstToken())
1241 unsigned ExpressionOrDeclarationStatementAST::lastToken() const
1244 if (unsigned candidate = declaration->lastToken())
1247 if (unsigned candidate = expression->lastToken())
1253 unsigned ExpressionStatementAST::firstToken() const
1256 if (unsigned candidate = expression->firstToken())
1258 if (semicolon_token)
1259 return semicolon_token;
1264 unsigned ExpressionStatementAST::lastToken() const
1266 if (semicolon_token)
1267 return semicolon_token + 1;
1269 if (unsigned candidate = expression->lastToken())
1275 unsigned ForStatementAST::firstToken() const
1280 return lparen_token;
1282 if (unsigned candidate = initializer->firstToken())
1285 if (unsigned candidate = condition->firstToken())
1287 if (semicolon_token)
1288 return semicolon_token;
1290 if (unsigned candidate = expression->firstToken())
1293 return rparen_token;
1295 if (unsigned candidate = statement->firstToken())
1301 unsigned ForStatementAST::lastToken() const
1304 if (unsigned candidate = statement->lastToken())
1307 return rparen_token + 1;
1309 if (unsigned candidate = expression->lastToken())
1311 if (semicolon_token)
1312 return semicolon_token + 1;
1314 if (unsigned candidate = condition->lastToken())
1317 if (unsigned candidate = initializer->lastToken())
1320 return lparen_token + 1;
1322 return for_token + 1;
1327 unsigned ForeachStatementAST::firstToken() const
1330 return foreach_token;
1332 return lparen_token;
1333 if (type_specifier_list)
1334 if (unsigned candidate = type_specifier_list->firstToken())
1337 if (unsigned candidate = declarator->firstToken())
1340 if (unsigned candidate = initializer->firstToken())
1345 if (unsigned candidate = expression->firstToken())
1348 return rparen_token;
1350 if (unsigned candidate = statement->firstToken())
1356 unsigned ForeachStatementAST::lastToken() const
1359 if (unsigned candidate = statement->lastToken())
1362 return rparen_token + 1;
1364 if (unsigned candidate = expression->lastToken())
1367 return comma_token + 1;
1369 if (unsigned candidate = initializer->lastToken())
1372 if (unsigned candidate = declarator->lastToken())
1374 if (type_specifier_list)
1375 if (unsigned candidate = type_specifier_list->lastToken())
1378 return lparen_token + 1;
1380 return foreach_token + 1;
1385 unsigned FunctionDeclaratorAST::firstToken() const
1388 return lparen_token;
1389 if (parameter_declaration_clause)
1390 if (unsigned candidate = parameter_declaration_clause->firstToken())
1393 return rparen_token;
1394 if (cv_qualifier_list)
1395 if (unsigned candidate = cv_qualifier_list->firstToken())
1397 if (exception_specification)
1398 if (unsigned candidate = exception_specification->firstToken())
1400 if (trailing_return_type)
1401 if (unsigned candidate = trailing_return_type->firstToken())
1403 if (as_cpp_initializer)
1404 if (unsigned candidate = as_cpp_initializer->firstToken())
1410 unsigned FunctionDeclaratorAST::lastToken() const
1412 if (as_cpp_initializer)
1413 if (unsigned candidate = as_cpp_initializer->lastToken())
1415 if (trailing_return_type)
1416 if (unsigned candidate = trailing_return_type->lastToken())
1418 if (exception_specification)
1419 if (unsigned candidate = exception_specification->lastToken())
1421 if (cv_qualifier_list)
1422 if (unsigned candidate = cv_qualifier_list->lastToken())
1425 return rparen_token + 1;
1426 if (parameter_declaration_clause)
1427 if (unsigned candidate = parameter_declaration_clause->lastToken())
1430 return lparen_token + 1;
1435 unsigned FunctionDefinitionAST::firstToken() const
1437 if (qt_invokable_token)
1438 return qt_invokable_token;
1439 if (decl_specifier_list)
1440 if (unsigned candidate = decl_specifier_list->firstToken())
1443 if (unsigned candidate = declarator->firstToken())
1445 if (ctor_initializer)
1446 if (unsigned candidate = ctor_initializer->firstToken())
1449 if (unsigned candidate = function_body->firstToken())
1455 unsigned FunctionDefinitionAST::lastToken() const
1458 if (unsigned candidate = function_body->lastToken())
1460 if (ctor_initializer)
1461 if (unsigned candidate = ctor_initializer->lastToken())
1464 if (unsigned candidate = declarator->lastToken())
1466 if (decl_specifier_list)
1467 if (unsigned candidate = decl_specifier_list->lastToken())
1469 if (qt_invokable_token)
1470 return qt_invokable_token + 1;
1475 unsigned GotoStatementAST::firstToken() const
1479 if (identifier_token)
1480 return identifier_token;
1481 if (semicolon_token)
1482 return semicolon_token;
1487 unsigned GotoStatementAST::lastToken() const
1489 if (semicolon_token)
1490 return semicolon_token + 1;
1491 if (identifier_token)
1492 return identifier_token + 1;
1494 return goto_token + 1;
1499 unsigned IdExpressionAST::firstToken() const
1502 if (unsigned candidate = name->firstToken())
1508 unsigned IdExpressionAST::lastToken() const
1511 if (unsigned candidate = name->lastToken())
1517 unsigned IfStatementAST::firstToken() const
1522 return lparen_token;
1524 if (unsigned candidate = condition->firstToken())
1527 return rparen_token;
1529 if (unsigned candidate = statement->firstToken())
1534 if (unsigned candidate = else_statement->firstToken())
1540 unsigned IfStatementAST::lastToken() const
1543 if (unsigned candidate = else_statement->lastToken())
1546 return else_token + 1;
1548 if (unsigned candidate = statement->lastToken())
1551 return rparen_token + 1;
1553 if (unsigned candidate = condition->lastToken())
1556 return lparen_token + 1;
1558 return if_token + 1;
1563 unsigned LabeledStatementAST::firstToken() const
1570 if (unsigned candidate = statement->firstToken())
1576 unsigned LabeledStatementAST::lastToken() const
1579 if (unsigned candidate = statement->lastToken())
1582 return colon_token + 1;
1584 return label_token + 1;
1589 unsigned LambdaCaptureAST::firstToken() const
1591 if (default_capture_token)
1592 return default_capture_token;
1594 if (unsigned candidate = capture_list->firstToken())
1600 unsigned LambdaCaptureAST::lastToken() const
1603 if (unsigned candidate = capture_list->lastToken())
1605 if (default_capture_token)
1606 return default_capture_token + 1;
1611 unsigned LambdaDeclaratorAST::firstToken() const
1614 return lparen_token;
1615 if (parameter_declaration_clause)
1616 if (unsigned candidate = parameter_declaration_clause->firstToken())
1619 return rparen_token;
1621 if (unsigned candidate = attributes->firstToken())
1624 return mutable_token;
1625 if (exception_specification)
1626 if (unsigned candidate = exception_specification->firstToken())
1628 if (trailing_return_type)
1629 if (unsigned candidate = trailing_return_type->firstToken())
1635 unsigned LambdaDeclaratorAST::lastToken() const
1637 if (trailing_return_type)
1638 if (unsigned candidate = trailing_return_type->lastToken())
1640 if (exception_specification)
1641 if (unsigned candidate = exception_specification->lastToken())
1644 return mutable_token + 1;
1646 if (unsigned candidate = attributes->lastToken())
1649 return rparen_token + 1;
1650 if (parameter_declaration_clause)
1651 if (unsigned candidate = parameter_declaration_clause->lastToken())
1654 return lparen_token + 1;
1659 unsigned LambdaExpressionAST::firstToken() const
1661 if (lambda_introducer)
1662 if (unsigned candidate = lambda_introducer->firstToken())
1664 if (lambda_declarator)
1665 if (unsigned candidate = lambda_declarator->firstToken())
1668 if (unsigned candidate = statement->firstToken())
1674 unsigned LambdaExpressionAST::lastToken() const
1677 if (unsigned candidate = statement->lastToken())
1679 if (lambda_declarator)
1680 if (unsigned candidate = lambda_declarator->lastToken())
1682 if (lambda_introducer)
1683 if (unsigned candidate = lambda_introducer->lastToken())
1689 unsigned LambdaIntroducerAST::firstToken() const
1692 return lbracket_token;
1694 if (unsigned candidate = lambda_capture->firstToken())
1697 return rbracket_token;
1702 unsigned LambdaIntroducerAST::lastToken() const
1705 return rbracket_token + 1;
1707 if (unsigned candidate = lambda_capture->lastToken())
1710 return lbracket_token + 1;
1715 unsigned LinkageBodyAST::firstToken() const
1718 return lbrace_token;
1719 if (declaration_list)
1720 if (unsigned candidate = declaration_list->firstToken())
1723 return rbrace_token;
1728 unsigned LinkageBodyAST::lastToken() const
1731 return rbrace_token + 1;
1732 if (declaration_list)
1733 if (unsigned candidate = declaration_list->lastToken())
1736 return lbrace_token + 1;
1741 unsigned LinkageSpecificationAST::firstToken() const
1744 return extern_token;
1745 if (extern_type_token)
1746 return extern_type_token;
1748 if (unsigned candidate = declaration->firstToken())
1754 unsigned LinkageSpecificationAST::lastToken() const
1757 if (unsigned candidate = declaration->lastToken())
1759 if (extern_type_token)
1760 return extern_type_token + 1;
1762 return extern_token + 1;
1767 unsigned MemInitializerAST::firstToken() const
1770 if (unsigned candidate = name->firstToken())
1773 return lparen_token;
1774 if (expression_list)
1775 if (unsigned candidate = expression_list->firstToken())
1778 return rparen_token;
1783 unsigned MemInitializerAST::lastToken() const
1786 return rparen_token + 1;
1787 if (expression_list)
1788 if (unsigned candidate = expression_list->lastToken())
1791 return lparen_token + 1;
1793 if (unsigned candidate = name->lastToken())
1799 unsigned MemberAccessAST::firstToken() const
1801 if (base_expression)
1802 if (unsigned candidate = base_expression->firstToken())
1805 return access_token;
1807 return template_token;
1809 if (unsigned candidate = member_name->firstToken())
1815 unsigned MemberAccessAST::lastToken() const
1818 if (unsigned candidate = member_name->lastToken())
1821 return template_token + 1;
1823 return access_token + 1;
1824 if (base_expression)
1825 if (unsigned candidate = base_expression->lastToken())
1831 unsigned NamedTypeSpecifierAST::firstToken() const
1834 if (unsigned candidate = name->firstToken())
1840 unsigned NamedTypeSpecifierAST::lastToken() const
1843 if (unsigned candidate = name->lastToken())
1849 unsigned NamespaceAST::firstToken() const
1851 if (namespace_token)
1852 return namespace_token;
1853 if (identifier_token)
1854 return identifier_token;
1856 if (unsigned candidate = attribute_list->firstToken())
1859 if (unsigned candidate = linkage_body->firstToken())
1865 unsigned NamespaceAST::lastToken() const
1868 if (unsigned candidate = linkage_body->lastToken())
1871 if (unsigned candidate = attribute_list->lastToken())
1873 if (identifier_token)
1874 return identifier_token + 1;
1875 if (namespace_token)
1876 return namespace_token + 1;
1881 unsigned NamespaceAliasDefinitionAST::firstToken() const
1883 if (namespace_token)
1884 return namespace_token;
1885 if (namespace_name_token)
1886 return namespace_name_token;
1890 if (unsigned candidate = name->firstToken())
1892 if (semicolon_token)
1893 return semicolon_token;
1898 unsigned NamespaceAliasDefinitionAST::lastToken() const
1900 if (semicolon_token)
1901 return semicolon_token + 1;
1903 if (unsigned candidate = name->lastToken())
1906 return equal_token + 1;
1907 if (namespace_name_token)
1908 return namespace_name_token + 1;
1909 if (namespace_token)
1910 return namespace_token + 1;
1915 unsigned NestedDeclaratorAST::firstToken() const
1918 return lparen_token;
1920 if (unsigned candidate = declarator->firstToken())
1923 return rparen_token;
1928 unsigned NestedDeclaratorAST::lastToken() const
1931 return rparen_token + 1;
1933 if (unsigned candidate = declarator->lastToken())
1936 return lparen_token + 1;
1941 unsigned NestedExpressionAST::firstToken() const
1944 return lparen_token;
1946 if (unsigned candidate = expression->firstToken())
1949 return rparen_token;
1954 unsigned NestedExpressionAST::lastToken() const
1957 return rparen_token + 1;
1959 if (unsigned candidate = expression->lastToken())
1962 return lparen_token + 1;
1967 unsigned NestedNameSpecifierAST::firstToken() const
1969 if (class_or_namespace_name)
1970 if (unsigned candidate = class_or_namespace_name->firstToken())
1978 unsigned NestedNameSpecifierAST::lastToken() const
1981 return scope_token + 1;
1982 if (class_or_namespace_name)
1983 if (unsigned candidate = class_or_namespace_name->lastToken())
1989 unsigned NewArrayDeclaratorAST::firstToken() const
1992 return lbracket_token;
1994 if (unsigned candidate = expression->firstToken())
1997 return rbracket_token;
2002 unsigned NewArrayDeclaratorAST::lastToken() const
2005 return rbracket_token + 1;
2007 if (unsigned candidate = expression->lastToken())
2010 return lbracket_token + 1;
2015 unsigned NewExpressionAST::firstToken() const
2022 if (unsigned candidate = new_placement->firstToken())
2025 return lparen_token;
2027 if (unsigned candidate = type_id->firstToken())
2030 return rparen_token;
2032 if (unsigned candidate = new_type_id->firstToken())
2034 if (new_initializer)
2035 if (unsigned candidate = new_initializer->firstToken())
2041 unsigned NewExpressionAST::lastToken() const
2043 if (new_initializer)
2044 if (unsigned candidate = new_initializer->lastToken())
2047 if (unsigned candidate = new_type_id->lastToken())
2050 return rparen_token + 1;
2052 if (unsigned candidate = type_id->lastToken())
2055 return lparen_token + 1;
2057 if (unsigned candidate = new_placement->lastToken())
2060 return new_token + 1;
2062 return scope_token + 1;
2067 unsigned NewInitializerAST::firstToken() const
2070 return lparen_token;
2072 if (unsigned candidate = expression->firstToken())
2075 return rparen_token;
2080 unsigned NewInitializerAST::lastToken() const
2083 return rparen_token + 1;
2085 if (unsigned candidate = expression->lastToken())
2088 return lparen_token + 1;
2093 unsigned NewPlacementAST::firstToken() const
2096 return lparen_token;
2097 if (expression_list)
2098 if (unsigned candidate = expression_list->firstToken())
2101 return rparen_token;
2106 unsigned NewPlacementAST::lastToken() const
2109 return rparen_token + 1;
2110 if (expression_list)
2111 if (unsigned candidate = expression_list->lastToken())
2114 return lparen_token + 1;
2119 unsigned NewTypeIdAST::firstToken() const
2121 if (type_specifier_list)
2122 if (unsigned candidate = type_specifier_list->firstToken())
2124 if (ptr_operator_list)
2125 if (unsigned candidate = ptr_operator_list->firstToken())
2127 if (new_array_declarator_list)
2128 if (unsigned candidate = new_array_declarator_list->firstToken())
2134 unsigned NewTypeIdAST::lastToken() const
2136 if (new_array_declarator_list)
2137 if (unsigned candidate = new_array_declarator_list->lastToken())
2139 if (ptr_operator_list)
2140 if (unsigned candidate = ptr_operator_list->lastToken())
2142 if (type_specifier_list)
2143 if (unsigned candidate = type_specifier_list->lastToken())
2149 unsigned NumericLiteralAST::firstToken() const
2152 return literal_token;
2157 unsigned NumericLiteralAST::lastToken() const
2160 return literal_token + 1;
2165 unsigned ObjCClassDeclarationAST::firstToken() const
2168 if (unsigned candidate = attribute_list->firstToken())
2170 if (interface_token)
2171 return interface_token;
2172 if (implementation_token)
2173 return implementation_token;
2175 if (unsigned candidate = class_name->firstToken())
2178 return lparen_token;
2180 if (unsigned candidate = category_name->firstToken())
2183 return rparen_token;
2187 if (unsigned candidate = superclass->firstToken())
2190 if (unsigned candidate = protocol_refs->firstToken())
2193 if (unsigned candidate = inst_vars_decl->firstToken())
2195 if (member_declaration_list)
2196 if (unsigned candidate = member_declaration_list->firstToken())
2204 unsigned ObjCClassDeclarationAST::lastToken() const
2207 return end_token + 1;
2208 if (member_declaration_list)
2209 if (unsigned candidate = member_declaration_list->lastToken())
2212 if (unsigned candidate = inst_vars_decl->lastToken())
2215 if (unsigned candidate = protocol_refs->lastToken())
2218 if (unsigned candidate = superclass->lastToken())
2221 return colon_token + 1;
2223 return rparen_token + 1;
2225 if (unsigned candidate = category_name->lastToken())
2228 return lparen_token + 1;
2230 if (unsigned candidate = class_name->lastToken())
2232 if (implementation_token)
2233 return implementation_token + 1;
2234 if (interface_token)
2235 return interface_token + 1;
2237 if (unsigned candidate = attribute_list->lastToken())
2243 unsigned ObjCClassForwardDeclarationAST::firstToken() const
2246 if (unsigned candidate = attribute_list->firstToken())
2250 if (identifier_list)
2251 if (unsigned candidate = identifier_list->firstToken())
2253 if (semicolon_token)
2254 return semicolon_token;
2259 unsigned ObjCClassForwardDeclarationAST::lastToken() const
2261 if (semicolon_token)
2262 return semicolon_token + 1;
2263 if (identifier_list)
2264 if (unsigned candidate = identifier_list->lastToken())
2267 return class_token + 1;
2269 if (unsigned candidate = attribute_list->lastToken())
2275 unsigned ObjCDynamicPropertiesDeclarationAST::firstToken() const
2278 return dynamic_token;
2279 if (property_identifier_list)
2280 if (unsigned candidate = property_identifier_list->firstToken())
2282 if (semicolon_token)
2283 return semicolon_token;
2288 unsigned ObjCDynamicPropertiesDeclarationAST::lastToken() const
2290 if (semicolon_token)
2291 return semicolon_token + 1;
2292 if (property_identifier_list)
2293 if (unsigned candidate = property_identifier_list->lastToken())
2296 return dynamic_token + 1;
2301 unsigned ObjCEncodeExpressionAST::firstToken() const
2304 return encode_token;
2306 if (unsigned candidate = type_name->firstToken())
2312 unsigned ObjCEncodeExpressionAST::lastToken() const
2315 if (unsigned candidate = type_name->lastToken())
2318 return encode_token + 1;
2323 unsigned ObjCFastEnumerationAST::firstToken() const
2328 return lparen_token;
2329 if (type_specifier_list)
2330 if (unsigned candidate = type_specifier_list->firstToken())
2333 if (unsigned candidate = declarator->firstToken())
2336 if (unsigned candidate = initializer->firstToken())
2340 if (fast_enumeratable_expression)
2341 if (unsigned candidate = fast_enumeratable_expression->firstToken())
2344 return rparen_token;
2346 if (unsigned candidate = statement->firstToken())
2352 unsigned ObjCFastEnumerationAST::lastToken() const
2355 if (unsigned candidate = statement->lastToken())
2358 return rparen_token + 1;
2359 if (fast_enumeratable_expression)
2360 if (unsigned candidate = fast_enumeratable_expression->lastToken())
2363 return in_token + 1;
2365 if (unsigned candidate = initializer->lastToken())
2368 if (unsigned candidate = declarator->lastToken())
2370 if (type_specifier_list)
2371 if (unsigned candidate = type_specifier_list->lastToken())
2374 return lparen_token + 1;
2376 return for_token + 1;
2381 unsigned ObjCInstanceVariablesDeclarationAST::firstToken() const
2384 return lbrace_token;
2385 if (instance_variable_list)
2386 if (unsigned candidate = instance_variable_list->firstToken())
2389 return rbrace_token;
2394 unsigned ObjCInstanceVariablesDeclarationAST::lastToken() const
2397 return rbrace_token + 1;
2398 if (instance_variable_list)
2399 if (unsigned candidate = instance_variable_list->lastToken())
2402 return lbrace_token + 1;
2407 unsigned ObjCMessageArgumentAST::firstToken() const
2409 if (parameter_value_expression)
2410 if (unsigned candidate = parameter_value_expression->firstToken())
2416 unsigned ObjCMessageArgumentAST::lastToken() const
2418 if (parameter_value_expression)
2419 if (unsigned candidate = parameter_value_expression->lastToken())
2425 unsigned ObjCMessageArgumentDeclarationAST::firstToken() const
2428 if (unsigned candidate = type_name->firstToken())
2431 if (unsigned candidate = attribute_list->firstToken())
2434 if (unsigned candidate = param_name->firstToken())
2440 unsigned ObjCMessageArgumentDeclarationAST::lastToken() const
2443 if (unsigned candidate = param_name->lastToken())
2446 if (unsigned candidate = attribute_list->lastToken())
2449 if (unsigned candidate = type_name->lastToken())
2455 unsigned ObjCMessageExpressionAST::firstToken() const
2458 return lbracket_token;
2459 if (receiver_expression)
2460 if (unsigned candidate = receiver_expression->firstToken())
2463 if (unsigned candidate = selector->firstToken())
2466 if (unsigned candidate = argument_list->firstToken())
2469 return rbracket_token;
2474 unsigned ObjCMessageExpressionAST::lastToken() const
2477 return rbracket_token + 1;
2479 if (unsigned candidate = argument_list->lastToken())
2482 if (unsigned candidate = selector->lastToken())
2484 if (receiver_expression)
2485 if (unsigned candidate = receiver_expression->lastToken())
2488 return lbracket_token + 1;
2493 unsigned ObjCMethodDeclarationAST::firstToken() const
2495 if (method_prototype)
2496 if (unsigned candidate = method_prototype->firstToken())
2499 if (unsigned candidate = function_body->firstToken())
2501 if (semicolon_token)
2502 return semicolon_token;
2507 unsigned ObjCMethodDeclarationAST::lastToken() const
2509 if (semicolon_token)
2510 return semicolon_token + 1;
2512 if (unsigned candidate = function_body->lastToken())
2514 if (method_prototype)
2515 if (unsigned candidate = method_prototype->lastToken())
2521 unsigned ObjCMethodPrototypeAST::firstToken() const
2523 if (method_type_token)
2524 return method_type_token;
2526 if (unsigned candidate = type_name->firstToken())
2529 if (unsigned candidate = selector->firstToken())
2532 if (unsigned candidate = argument_list->firstToken())
2534 if (dot_dot_dot_token)
2535 return dot_dot_dot_token;
2537 if (unsigned candidate = attribute_list->firstToken())
2543 unsigned ObjCMethodPrototypeAST::lastToken() const
2546 if (unsigned candidate = attribute_list->lastToken())
2548 if (dot_dot_dot_token)
2549 return dot_dot_dot_token + 1;
2551 if (unsigned candidate = argument_list->lastToken())
2554 if (unsigned candidate = selector->lastToken())
2557 if (unsigned candidate = type_name->lastToken())
2559 if (method_type_token)
2560 return method_type_token + 1;
2565 unsigned ObjCPropertyAttributeAST::firstToken() const
2567 if (attribute_identifier_token)
2568 return attribute_identifier_token;
2570 return equals_token;
2571 if (method_selector)
2572 if (unsigned candidate = method_selector->firstToken())
2578 unsigned ObjCPropertyAttributeAST::lastToken() const
2580 if (method_selector)
2581 if (unsigned candidate = method_selector->lastToken())
2584 return equals_token + 1;
2585 if (attribute_identifier_token)
2586 return attribute_identifier_token + 1;
2591 unsigned ObjCPropertyDeclarationAST::firstToken() const
2594 if (unsigned candidate = attribute_list->firstToken())
2597 return property_token;
2599 return lparen_token;
2600 if (property_attribute_list)
2601 if (unsigned candidate = property_attribute_list->firstToken())
2604 return rparen_token;
2605 if (simple_declaration)
2606 if (unsigned candidate = simple_declaration->firstToken())
2612 unsigned ObjCPropertyDeclarationAST::lastToken() const
2614 if (simple_declaration)
2615 if (unsigned candidate = simple_declaration->lastToken())
2618 return rparen_token + 1;
2619 if (property_attribute_list)
2620 if (unsigned candidate = property_attribute_list->lastToken())
2623 return lparen_token + 1;
2625 return property_token + 1;
2627 if (unsigned candidate = attribute_list->lastToken())
2633 unsigned ObjCProtocolDeclarationAST::firstToken() const
2636 if (unsigned candidate = attribute_list->firstToken())
2639 return protocol_token;
2641 if (unsigned candidate = name->firstToken())
2644 if (unsigned candidate = protocol_refs->firstToken())
2646 if (member_declaration_list)
2647 if (unsigned candidate = member_declaration_list->firstToken())
2655 unsigned ObjCProtocolDeclarationAST::lastToken() const
2658 return end_token + 1;
2659 if (member_declaration_list)
2660 if (unsigned candidate = member_declaration_list->lastToken())
2663 if (unsigned candidate = protocol_refs->lastToken())
2666 if (unsigned candidate = name->lastToken())
2669 return protocol_token + 1;
2671 if (unsigned candidate = attribute_list->lastToken())
2677 unsigned ObjCProtocolExpressionAST::firstToken() const
2680 return protocol_token;
2682 return lparen_token;
2683 if (identifier_token)
2684 return identifier_token;
2686 return rparen_token;
2691 unsigned ObjCProtocolExpressionAST::lastToken() const
2694 return rparen_token + 1;
2695 if (identifier_token)
2696 return identifier_token + 1;
2698 return lparen_token + 1;
2700 return protocol_token + 1;
2705 unsigned ObjCProtocolForwardDeclarationAST::firstToken() const
2708 if (unsigned candidate = attribute_list->firstToken())
2711 return protocol_token;
2712 if (identifier_list)
2713 if (unsigned candidate = identifier_list->firstToken())
2715 if (semicolon_token)
2716 return semicolon_token;
2721 unsigned ObjCProtocolForwardDeclarationAST::lastToken() const
2723 if (semicolon_token)
2724 return semicolon_token + 1;
2725 if (identifier_list)
2726 if (unsigned candidate = identifier_list->lastToken())
2729 return protocol_token + 1;
2731 if (unsigned candidate = attribute_list->lastToken())
2737 unsigned ObjCProtocolRefsAST::firstToken() const
2741 if (identifier_list)
2742 if (unsigned candidate = identifier_list->firstToken())
2745 return greater_token;
2750 unsigned ObjCProtocolRefsAST::lastToken() const
2753 return greater_token + 1;
2754 if (identifier_list)
2755 if (unsigned candidate = identifier_list->lastToken())
2758 return less_token + 1;
2763 unsigned ObjCSelectorAST::firstToken() const
2765 if (selector_argument_list)
2766 if (unsigned candidate = selector_argument_list->firstToken())
2772 unsigned ObjCSelectorAST::lastToken() const
2774 if (selector_argument_list)
2775 if (unsigned candidate = selector_argument_list->lastToken())
2781 unsigned ObjCSelectorArgumentAST::firstToken() const
2791 unsigned ObjCSelectorArgumentAST::lastToken() const
2794 return colon_token + 1;
2796 return name_token + 1;
2801 unsigned ObjCSelectorExpressionAST::firstToken() const
2804 return selector_token;
2806 return lparen_token;
2808 if (unsigned candidate = selector->firstToken())
2811 return rparen_token;
2816 unsigned ObjCSelectorExpressionAST::lastToken() const
2819 return rparen_token + 1;
2821 if (unsigned candidate = selector->lastToken())
2824 return lparen_token + 1;
2826 return selector_token + 1;
2831 unsigned ObjCSynchronizedStatementAST::firstToken() const
2833 if (synchronized_token)
2834 return synchronized_token;
2836 return lparen_token;
2837 if (synchronized_object)
2838 if (unsigned candidate = synchronized_object->firstToken())
2841 return rparen_token;
2843 if (unsigned candidate = statement->firstToken())
2849 unsigned ObjCSynchronizedStatementAST::lastToken() const
2852 if (unsigned candidate = statement->lastToken())
2855 return rparen_token + 1;
2856 if (synchronized_object)
2857 if (unsigned candidate = synchronized_object->lastToken())
2860 return lparen_token + 1;
2861 if (synchronized_token)
2862 return synchronized_token + 1;
2867 unsigned ObjCSynthesizedPropertiesDeclarationAST::firstToken() const
2869 if (synthesized_token)
2870 return synthesized_token;
2871 if (property_identifier_list)
2872 if (unsigned candidate = property_identifier_list->firstToken())
2874 if (semicolon_token)
2875 return semicolon_token;
2880 unsigned ObjCSynthesizedPropertiesDeclarationAST::lastToken() const
2882 if (semicolon_token)
2883 return semicolon_token + 1;
2884 if (property_identifier_list)
2885 if (unsigned candidate = property_identifier_list->lastToken())
2887 if (synthesized_token)
2888 return synthesized_token + 1;
2893 unsigned ObjCSynthesizedPropertyAST::firstToken() const
2895 if (property_identifier_token)
2896 return property_identifier_token;
2898 return equals_token;
2899 if (alias_identifier_token)
2900 return alias_identifier_token;
2905 unsigned ObjCSynthesizedPropertyAST::lastToken() const
2907 if (alias_identifier_token)
2908 return alias_identifier_token + 1;
2910 return equals_token + 1;
2911 if (property_identifier_token)
2912 return property_identifier_token + 1;
2917 unsigned ObjCTypeNameAST::firstToken() const
2920 return lparen_token;
2921 if (type_qualifier_token)
2922 return type_qualifier_token;
2924 if (unsigned candidate = type_id->firstToken())
2927 return rparen_token;
2932 unsigned ObjCTypeNameAST::lastToken() const
2935 return rparen_token + 1;
2937 if (unsigned candidate = type_id->lastToken())
2939 if (type_qualifier_token)
2940 return type_qualifier_token + 1;
2942 return lparen_token + 1;
2947 unsigned ObjCVisibilityDeclarationAST::firstToken() const
2949 if (visibility_token)
2950 return visibility_token;
2955 unsigned ObjCVisibilityDeclarationAST::lastToken() const
2957 if (visibility_token)
2958 return visibility_token + 1;
2963 unsigned OperatorAST::firstToken() const
2975 unsigned OperatorAST::lastToken() const
2978 return close_token + 1;
2980 return open_token + 1;
2982 return op_token + 1;
2987 unsigned OperatorFunctionIdAST::firstToken() const
2990 return operator_token;
2992 if (unsigned candidate = op->firstToken())
2998 unsigned OperatorFunctionIdAST::lastToken() const
3001 if (unsigned candidate = op->lastToken())
3004 return operator_token + 1;
3009 unsigned ParameterDeclarationAST::firstToken() const
3011 if (type_specifier_list)
3012 if (unsigned candidate = type_specifier_list->firstToken())
3015 if (unsigned candidate = declarator->firstToken())
3020 if (unsigned candidate = expression->firstToken())
3026 unsigned ParameterDeclarationAST::lastToken() const
3029 if (unsigned candidate = expression->lastToken())
3032 return equal_token + 1;
3034 if (unsigned candidate = declarator->lastToken())
3036 if (type_specifier_list)
3037 if (unsigned candidate = type_specifier_list->lastToken())
3043 unsigned ParameterDeclarationClauseAST::firstToken() const
3045 if (parameter_declaration_list)
3046 if (unsigned candidate = parameter_declaration_list->firstToken())
3048 if (dot_dot_dot_token)
3049 return dot_dot_dot_token;
3054 unsigned ParameterDeclarationClauseAST::lastToken() const
3056 if (dot_dot_dot_token)
3057 return dot_dot_dot_token + 1;
3058 if (parameter_declaration_list)
3059 if (unsigned candidate = parameter_declaration_list->lastToken())
3065 unsigned PointerAST::firstToken() const
3069 if (cv_qualifier_list)
3070 if (unsigned candidate = cv_qualifier_list->firstToken())
3076 unsigned PointerAST::lastToken() const
3078 if (cv_qualifier_list)
3079 if (unsigned candidate = cv_qualifier_list->lastToken())
3082 return star_token + 1;
3087 unsigned PointerToMemberAST::firstToken() const
3089 if (global_scope_token)
3090 return global_scope_token;
3091 if (nested_name_specifier_list)
3092 if (unsigned candidate = nested_name_specifier_list->firstToken())
3096 if (cv_qualifier_list)
3097 if (unsigned candidate = cv_qualifier_list->firstToken())
3103 unsigned PointerToMemberAST::lastToken() const
3105 if (cv_qualifier_list)
3106 if (unsigned candidate = cv_qualifier_list->lastToken())
3109 return star_token + 1;
3110 if (nested_name_specifier_list)
3111 if (unsigned candidate = nested_name_specifier_list->lastToken())
3113 if (global_scope_token)
3114 return global_scope_token + 1;
3119 unsigned PostIncrDecrAST::firstToken() const
3121 if (base_expression)
3122 if (unsigned candidate = base_expression->firstToken())
3124 if (incr_decr_token)
3125 return incr_decr_token;
3130 unsigned PostIncrDecrAST::lastToken() const
3132 if (incr_decr_token)
3133 return incr_decr_token + 1;
3134 if (base_expression)
3135 if (unsigned candidate = base_expression->lastToken())
3141 unsigned QtEnumDeclarationAST::firstToken() const
3143 if (enum_specifier_token)
3144 return enum_specifier_token;
3146 return lparen_token;
3147 if (enumerator_list)
3148 if (unsigned candidate = enumerator_list->firstToken())
3151 return rparen_token;
3156 unsigned QtEnumDeclarationAST::lastToken() const
3159 return rparen_token + 1;
3160 if (enumerator_list)
3161 if (unsigned candidate = enumerator_list->lastToken())
3164 return lparen_token + 1;
3165 if (enum_specifier_token)
3166 return enum_specifier_token + 1;
3171 unsigned QtFlagsDeclarationAST::firstToken() const
3173 if (flags_specifier_token)
3174 return flags_specifier_token;
3176 return lparen_token;
3177 if (flag_enums_list)
3178 if (unsigned candidate = flag_enums_list->firstToken())
3181 return rparen_token;
3186 unsigned QtFlagsDeclarationAST::lastToken() const
3189 return rparen_token + 1;
3190 if (flag_enums_list)
3191 if (unsigned candidate = flag_enums_list->lastToken())
3194 return lparen_token + 1;
3195 if (flags_specifier_token)
3196 return flags_specifier_token + 1;
3201 unsigned QtInterfaceNameAST::firstToken() const
3204 if (unsigned candidate = interface_name->firstToken())
3206 if (constraint_list)
3207 if (unsigned candidate = constraint_list->firstToken())
3213 unsigned QtInterfaceNameAST::lastToken() const
3215 if (constraint_list)
3216 if (unsigned candidate = constraint_list->lastToken())
3219 if (unsigned candidate = interface_name->lastToken())
3225 unsigned QtInterfacesDeclarationAST::firstToken() const
3227 if (interfaces_token)
3228 return interfaces_token;
3230 return lparen_token;
3231 if (interface_name_list)
3232 if (unsigned candidate = interface_name_list->firstToken())
3235 return rparen_token;
3240 unsigned QtInterfacesDeclarationAST::lastToken() const
3243 return rparen_token + 1;
3244 if (interface_name_list)
3245 if (unsigned candidate = interface_name_list->lastToken())
3248 return lparen_token + 1;
3249 if (interfaces_token)
3250 return interfaces_token + 1;
3255 unsigned QtMemberDeclarationAST::firstToken() const
3260 return lparen_token;
3262 if (unsigned candidate = type_id->firstToken())
3265 return rparen_token;
3270 unsigned QtMemberDeclarationAST::lastToken() const
3273 return rparen_token + 1;
3275 if (unsigned candidate = type_id->lastToken())
3278 return lparen_token + 1;
3285 unsigned QtMethodAST::firstToken() const
3288 return method_token;
3290 return lparen_token;
3292 if (unsigned candidate = declarator->firstToken())
3295 return rparen_token;
3300 unsigned QtMethodAST::lastToken() const
3303 return rparen_token + 1;
3305 if (unsigned candidate = declarator->lastToken())
3308 return lparen_token + 1;
3310 return method_token + 1;
3315 unsigned QtObjectTagAST::firstToken() const
3318 return q_object_token;
3323 unsigned QtObjectTagAST::lastToken() const
3326 return q_object_token + 1;
3331 unsigned QtPrivateSlotAST::firstToken() const
3333 if (q_private_slot_token)
3334 return q_private_slot_token;
3336 return lparen_token;
3339 if (dptr_lparen_token)
3340 return dptr_lparen_token;
3341 if (dptr_rparen_token)
3342 return dptr_rparen_token;
3345 if (type_specifier_list)
3346 if (unsigned candidate = type_specifier_list->firstToken())
3349 if (unsigned candidate = declarator->firstToken())
3352 return rparen_token;
3357 unsigned QtPrivateSlotAST::lastToken() const
3360 return rparen_token + 1;
3362 if (unsigned candidate = declarator->lastToken())
3364 if (type_specifier_list)
3365 if (unsigned candidate = type_specifier_list->lastToken())
3368 return comma_token + 1;
3369 if (dptr_rparen_token)
3370 return dptr_rparen_token + 1;
3371 if (dptr_lparen_token)
3372 return dptr_lparen_token + 1;
3374 return dptr_token + 1;
3376 return lparen_token + 1;
3377 if (q_private_slot_token)
3378 return q_private_slot_token + 1;
3383 unsigned QtPropertyDeclarationAST::firstToken() const
3385 if (property_specifier_token)
3386 return property_specifier_token;
3388 return lparen_token;
3390 if (unsigned candidate = expression->firstToken())
3395 if (unsigned candidate = type_id->firstToken())
3398 if (unsigned candidate = property_name->firstToken())
3400 if (property_declaration_item_list)
3401 if (unsigned candidate = property_declaration_item_list->firstToken())
3404 return rparen_token;
3409 unsigned QtPropertyDeclarationAST::lastToken() const
3412 return rparen_token + 1;
3413 if (property_declaration_item_list)
3414 if (unsigned candidate = property_declaration_item_list->lastToken())
3417 if (unsigned candidate = property_name->lastToken())
3420 if (unsigned candidate = type_id->lastToken())
3423 return comma_token + 1;
3425 if (unsigned candidate = expression->lastToken())
3428 return lparen_token + 1;
3429 if (property_specifier_token)
3430 return property_specifier_token + 1;
3435 unsigned QtPropertyDeclarationItemAST::firstToken() const
3437 if (item_name_token)
3438 return item_name_token;
3440 if (unsigned candidate = expression->firstToken())
3446 unsigned QtPropertyDeclarationItemAST::lastToken() const
3449 if (unsigned candidate = expression->lastToken())
3451 if (item_name_token)
3452 return item_name_token + 1;
3457 unsigned QualifiedNameAST::firstToken() const
3459 if (global_scope_token)
3460 return global_scope_token;
3461 if (nested_name_specifier_list)
3462 if (unsigned candidate = nested_name_specifier_list->firstToken())
3464 if (unqualified_name)
3465 if (unsigned candidate = unqualified_name->firstToken())
3471 unsigned QualifiedNameAST::lastToken() const
3473 if (unqualified_name)
3474 if (unsigned candidate = unqualified_name->lastToken())
3476 if (nested_name_specifier_list)
3477 if (unsigned candidate = nested_name_specifier_list->lastToken())
3479 if (global_scope_token)
3480 return global_scope_token + 1;
3485 unsigned ReferenceAST::firstToken() const
3487 if (reference_token)
3488 return reference_token;
3493 unsigned ReferenceAST::lastToken() const
3495 if (reference_token)
3496 return reference_token + 1;
3501 unsigned ReturnStatementAST::firstToken() const
3504 return return_token;
3506 if (unsigned candidate = expression->firstToken())
3508 if (semicolon_token)
3509 return semicolon_token;
3514 unsigned ReturnStatementAST::lastToken() const
3516 if (semicolon_token)
3517 return semicolon_token + 1;
3519 if (unsigned candidate = expression->lastToken())
3522 return return_token + 1;
3527 unsigned SimpleDeclarationAST::firstToken() const
3529 if (qt_invokable_token)
3530 return qt_invokable_token;
3531 if (decl_specifier_list)
3532 if (unsigned candidate = decl_specifier_list->firstToken())
3534 if (declarator_list)
3535 if (unsigned candidate = declarator_list->firstToken())
3537 if (semicolon_token)
3538 return semicolon_token;
3543 unsigned SimpleDeclarationAST::lastToken() const
3545 if (semicolon_token)
3546 return semicolon_token + 1;
3547 if (declarator_list)
3548 if (unsigned candidate = declarator_list->lastToken())
3550 if (decl_specifier_list)
3551 if (unsigned candidate = decl_specifier_list->lastToken())
3553 if (qt_invokable_token)
3554 return qt_invokable_token + 1;
3559 unsigned SimpleNameAST::firstToken() const
3561 if (identifier_token)
3562 return identifier_token;
3567 unsigned SimpleNameAST::lastToken() const
3569 if (identifier_token)
3570 return identifier_token + 1;
3575 unsigned SimpleSpecifierAST::firstToken() const
3577 if (specifier_token)
3578 return specifier_token;
3583 unsigned SimpleSpecifierAST::lastToken() const
3585 if (specifier_token)
3586 return specifier_token + 1;
3591 unsigned SizeofExpressionAST::firstToken() const
3594 return sizeof_token;
3595 if (dot_dot_dot_token)
3596 return dot_dot_dot_token;
3598 return lparen_token;
3600 if (unsigned candidate = expression->firstToken())
3603 return rparen_token;
3608 unsigned SizeofExpressionAST::lastToken() const
3611 return rparen_token + 1;
3613 if (unsigned candidate = expression->lastToken())
3616 return lparen_token + 1;
3617 if (dot_dot_dot_token)
3618 return dot_dot_dot_token + 1;
3620 return sizeof_token + 1;
3625 unsigned StringLiteralAST::firstToken() const
3628 return literal_token;
3630 if (unsigned candidate = next->firstToken())
3636 unsigned StringLiteralAST::lastToken() const
3639 if (unsigned candidate = next->lastToken())
3642 return literal_token + 1;
3647 unsigned SwitchStatementAST::firstToken() const
3650 return switch_token;
3652 return lparen_token;
3654 if (unsigned candidate = condition->firstToken())
3657 return rparen_token;
3659 if (unsigned candidate = statement->firstToken())
3665 unsigned SwitchStatementAST::lastToken() const
3668 if (unsigned candidate = statement->lastToken())
3671 return rparen_token + 1;
3673 if (unsigned candidate = condition->lastToken())
3676 return lparen_token + 1;
3678 return switch_token + 1;
3683 unsigned TemplateDeclarationAST::firstToken() const
3686 return export_token;
3688 return template_token;
3691 if (template_parameter_list)
3692 if (unsigned candidate = template_parameter_list->firstToken())
3695 return greater_token;
3697 if (unsigned candidate = declaration->firstToken())
3703 unsigned TemplateDeclarationAST::lastToken() const
3706 if (unsigned candidate = declaration->lastToken())
3709 return greater_token + 1;
3710 if (template_parameter_list)
3711 if (unsigned candidate = template_parameter_list->lastToken())
3714 return less_token + 1;
3716 return template_token + 1;
3718 return export_token + 1;
3723 unsigned TemplateIdAST::firstToken() const
3726 return template_token;
3727 if (identifier_token)
3728 return identifier_token;
3731 if (template_argument_list)
3732 if (unsigned candidate = template_argument_list->firstToken())
3735 return greater_token;
3740 unsigned TemplateIdAST::lastToken() const
3743 return greater_token + 1;
3744 if (template_argument_list)
3745 if (unsigned candidate = template_argument_list->lastToken())
3748 return less_token + 1;
3749 if (identifier_token)
3750 return identifier_token + 1;
3752 return template_token + 1;
3757 unsigned TemplateTypeParameterAST::firstToken() const
3760 return template_token;
3763 if (template_parameter_list)
3764 if (unsigned candidate = template_parameter_list->firstToken())
3767 return greater_token;
3770 if (dot_dot_dot_token)
3771 return dot_dot_dot_token;
3773 if (unsigned candidate = name->firstToken())
3778 if (unsigned candidate = type_id->firstToken())
3784 unsigned TemplateTypeParameterAST::lastToken() const
3787 if (unsigned candidate = type_id->lastToken())
3790 return equal_token + 1;
3792 if (unsigned candidate = name->lastToken())
3794 if (dot_dot_dot_token)
3795 return dot_dot_dot_token + 1;
3797 return class_token + 1;
3799 return greater_token + 1;
3800 if (template_parameter_list)
3801 if (unsigned candidate = template_parameter_list->lastToken())
3804 return less_token + 1;
3806 return template_token + 1;
3811 unsigned ThisExpressionAST::firstToken() const
3819 unsigned ThisExpressionAST::lastToken() const
3822 return this_token + 1;
3827 unsigned ThrowExpressionAST::firstToken() const
3832 if (unsigned candidate = expression->firstToken())
3838 unsigned ThrowExpressionAST::lastToken() const
3841 if (unsigned candidate = expression->lastToken())
3844 return throw_token + 1;
3849 unsigned TrailingReturnTypeAST::firstToken() const
3854 if (unsigned candidate = attributes->firstToken())
3856 if (type_specifier_list)
3857 if (unsigned candidate = type_specifier_list->firstToken())
3860 if (unsigned candidate = declarator->firstToken())
3866 unsigned TrailingReturnTypeAST::lastToken() const
3869 if (unsigned candidate = declarator->lastToken())
3871 if (type_specifier_list)
3872 if (unsigned candidate = type_specifier_list->lastToken())
3875 if (unsigned candidate = attributes->lastToken())
3878 return arrow_token + 1;
3883 unsigned TranslationUnitAST::firstToken() const
3885 if (declaration_list)
3886 if (unsigned candidate = declaration_list->firstToken())
3892 unsigned TranslationUnitAST::lastToken() const
3894 if (declaration_list)
3895 if (unsigned candidate = declaration_list->lastToken())
3901 unsigned TryBlockStatementAST::firstToken() const
3906 if (unsigned candidate = statement->firstToken())
3908 if (catch_clause_list)
3909 if (unsigned candidate = catch_clause_list->firstToken())
3915 unsigned TryBlockStatementAST::lastToken() const
3917 if (catch_clause_list)
3918 if (unsigned candidate = catch_clause_list->lastToken())
3921 if (unsigned candidate = statement->lastToken())
3924 return try_token + 1;
3929 unsigned TypeConstructorCallAST::firstToken() const
3931 if (type_specifier_list)
3932 if (unsigned candidate = type_specifier_list->firstToken())
3935 return lparen_token;
3936 if (expression_list)
3937 if (unsigned candidate = expression_list->firstToken())
3940 return rparen_token;
3945 unsigned TypeConstructorCallAST::lastToken() const
3948 return rparen_token + 1;
3949 if (expression_list)
3950 if (unsigned candidate = expression_list->lastToken())
3953 return lparen_token + 1;
3954 if (type_specifier_list)
3955 if (unsigned candidate = type_specifier_list->lastToken())
3961 unsigned TypeIdAST::firstToken() const
3963 if (type_specifier_list)
3964 if (unsigned candidate = type_specifier_list->firstToken())
3967 if (unsigned candidate = declarator->firstToken())
3973 unsigned TypeIdAST::lastToken() const
3976 if (unsigned candidate = declarator->lastToken())
3978 if (type_specifier_list)
3979 if (unsigned candidate = type_specifier_list->lastToken())
3985 unsigned TypeidExpressionAST::firstToken() const
3988 return typeid_token;
3990 return lparen_token;
3992 if (unsigned candidate = expression->firstToken())
3995 return rparen_token;
4000 unsigned TypeidExpressionAST::lastToken() const
4003 return rparen_token + 1;
4005 if (unsigned candidate = expression->lastToken())
4008 return lparen_token + 1;
4010 return typeid_token + 1;
4015 unsigned TypenameCallExpressionAST::firstToken() const
4018 return typename_token;
4020 if (unsigned candidate = name->firstToken())
4023 return lparen_token;
4024 if (expression_list)
4025 if (unsigned candidate = expression_list->firstToken())
4028 return rparen_token;
4033 unsigned TypenameCallExpressionAST::lastToken() const
4036 return rparen_token + 1;
4037 if (expression_list)
4038 if (unsigned candidate = expression_list->lastToken())
4041 return lparen_token + 1;
4043 if (unsigned candidate = name->lastToken())
4046 return typename_token + 1;
4051 unsigned TypenameTypeParameterAST::firstToken() const
4054 return classkey_token;
4055 if (dot_dot_dot_token)
4056 return dot_dot_dot_token;
4058 if (unsigned candidate = name->firstToken())
4063 if (unsigned candidate = type_id->firstToken())
4069 unsigned TypenameTypeParameterAST::lastToken() const
4072 if (unsigned candidate = type_id->lastToken())
4075 return equal_token + 1;
4077 if (unsigned candidate = name->lastToken())
4079 if (dot_dot_dot_token)
4080 return dot_dot_dot_token + 1;
4082 return classkey_token + 1;
4087 unsigned TypeofSpecifierAST::firstToken() const
4090 return typeof_token;
4092 return lparen_token;
4094 if (unsigned candidate = expression->firstToken())
4097 return rparen_token;
4102 unsigned TypeofSpecifierAST::lastToken() const
4105 return rparen_token + 1;
4107 if (unsigned candidate = expression->lastToken())
4110 return lparen_token + 1;
4112 return typeof_token + 1;
4117 unsigned UnaryExpressionAST::firstToken() const
4120 return unary_op_token;
4122 if (unsigned candidate = expression->firstToken())
4128 unsigned UnaryExpressionAST::lastToken() const
4131 if (unsigned candidate = expression->lastToken())
4134 return unary_op_token + 1;
4139 unsigned UsingAST::firstToken() const
4144 return typename_token;
4146 if (unsigned candidate = name->firstToken())
4148 if (semicolon_token)
4149 return semicolon_token;
4154 unsigned UsingAST::lastToken() const
4156 if (semicolon_token)
4157 return semicolon_token + 1;
4159 if (unsigned candidate = name->lastToken())
4162 return typename_token + 1;
4164 return using_token + 1;
4169 unsigned UsingDirectiveAST::firstToken() const
4173 if (namespace_token)
4174 return namespace_token;
4176 if (unsigned candidate = name->firstToken())
4178 if (semicolon_token)
4179 return semicolon_token;
4184 unsigned UsingDirectiveAST::lastToken() const
4186 if (semicolon_token)
4187 return semicolon_token + 1;
4189 if (unsigned candidate = name->lastToken())
4191 if (namespace_token)
4192 return namespace_token + 1;
4194 return using_token + 1;
4199 unsigned WhileStatementAST::firstToken() const
4204 return lparen_token;
4206 if (unsigned candidate = condition->firstToken())
4209 return rparen_token;
4211 if (unsigned candidate = statement->firstToken())
4217 unsigned WhileStatementAST::lastToken() const
4220 if (unsigned candidate = statement->lastToken())
4223 return rparen_token + 1;
4225 if (unsigned candidate = condition->lastToken())
4228 return lparen_token + 1;
4230 return while_token + 1;
4235 unsigned AttributeSpecifierAST::lastToken() const
4237 if (second_rparen_token)
4238 return second_rparen_token + 1;
4239 if (first_rparen_token)
4240 return first_rparen_token + 1;
4242 if (unsigned candidate = attribute_list->lastToken())
4244 if (second_lparen_token)
4245 return second_lparen_token + 1;
4246 if (first_lparen_token)
4247 return first_lparen_token + 1;
4248 if (attribute_token)
4249 return attribute_token + 1;