[clang] dc3d474 - [SyntaxTree] Migrate `ParamatersAndQualifiers` to use the new List API
Eduardo Caldas via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 26 09:51:19 PDT 2020
Author: Eduardo Caldas
Date: 2020-08-26T16:46:19Z
New Revision: dc3d4743277b47c0bc8cddbeb4b5e265252ee304
URL: https://github.com/llvm/llvm-project/commit/dc3d4743277b47c0bc8cddbeb4b5e265252ee304
DIFF: https://github.com/llvm/llvm-project/commit/dc3d4743277b47c0bc8cddbeb4b5e265252ee304.diff
LOG: [SyntaxTree] Migrate `ParamatersAndQualifiers` to use the new List API
Fix: Add missing `List::getTerminationKind()`, `List::canBeEmpty()`,
`List::getDelimiterTokenKind()` for `CallArguments`.
Differential Revision: https://reviews.llvm.org/D86600
Added:
Modified:
clang/include/clang/Tooling/Syntax/Nodes.h
clang/lib/Tooling/Syntax/BuildTree.cpp
clang/lib/Tooling/Syntax/Nodes.cpp
clang/lib/Tooling/Syntax/Tree.cpp
clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Tooling/Syntax/Nodes.h b/clang/include/clang/Tooling/Syntax/Nodes.h
index 9a14aac130b4..38f936f603dd 100644
--- a/clang/include/clang/Tooling/Syntax/Nodes.h
+++ b/clang/include/clang/Tooling/Syntax/Nodes.h
@@ -99,6 +99,7 @@ enum class NodeKind : uint16_t {
ParametersAndQualifiers,
MemberPointer,
UnqualifiedId,
+ ParameterDeclarationList,
// Nested Name Specifiers.
NestedNameSpecifier,
GlobalNameSpecifier,
@@ -173,7 +174,7 @@ enum class NodeRole : uint8_t {
ExplicitTemplateInstantiation_declaration,
ArraySubscript_sizeExpression,
TrailingReturnType_declarator,
- ParametersAndQualifiers_parameter,
+ ParametersAndQualifiers_parameters,
ParametersAndQualifiers_trailingReturn,
IdExpression_id,
IdExpression_qualifier,
@@ -988,6 +989,19 @@ class TrailingReturnType final : public Tree {
SimpleDeclarator *declarator();
};
+/// Models a `parameter-declaration-list` which appears within
+/// `parameters-and-qualifiers`. See C++ [dcl.fct]
+class ParameterDeclarationList final : public List {
+public:
+ ParameterDeclarationList() : List(NodeKind::ParameterDeclarationList) {}
+ static bool classof(const Node *N) {
+ return N->kind() == NodeKind::ParameterDeclarationList;
+ }
+ std::vector<SimpleDeclaration *> parameterDeclarations();
+ std::vector<List::ElementAndDelimiter<syntax::SimpleDeclaration>>
+ parametersAndCommas();
+};
+
/// Parameter list for a function type and a trailing return type, if the
/// function has one.
/// E.g.:
@@ -1006,8 +1020,7 @@ class ParametersAndQualifiers final : public Tree {
return N->kind() == NodeKind::ParametersAndQualifiers;
}
Leaf *lparen();
- /// FIXME: use custom iterator instead of 'vector'.
- std::vector<SimpleDeclaration *> parameters();
+ ParameterDeclarationList *parameters();
Leaf *rparen();
TrailingReturnType *trailingReturn();
};
diff --git a/clang/lib/Tooling/Syntax/BuildTree.cpp b/clang/lib/Tooling/Syntax/BuildTree.cpp
index 2e3dbc6c6fbd..deae46d58eee 100644
--- a/clang/lib/Tooling/Syntax/BuildTree.cpp
+++ b/clang/lib/Tooling/Syntax/BuildTree.cpp
@@ -1209,11 +1209,29 @@ class BuildTreeVisitor : public RecursiveASTVisitor<BuildTreeVisitor> {
return true;
}
+ syntax::ParameterDeclarationList *
+ buildParameterDeclarationList(ArrayRef<ParmVarDecl *> Params) {
+ for (auto *P : Params) {
+ Builder.markChild(P, syntax::NodeRole::List_element);
+ const auto *DelimiterToken = std::next(Builder.findToken(P->getEndLoc()));
+ if (DelimiterToken->kind() == clang::tok::TokenKind::comma)
+ Builder.markChildToken(DelimiterToken,
+ syntax::NodeRole::List_delimiter);
+ }
+ auto *Parameters = new (allocator()) syntax::ParameterDeclarationList;
+ if (!Params.empty())
+ Builder.foldNode(Builder.getRange(Params.front()->getBeginLoc(),
+ Params.back()->getEndLoc()),
+ Parameters, nullptr);
+ return Parameters;
+ }
+
bool WalkUpFromFunctionTypeLoc(FunctionTypeLoc L) {
Builder.markChildToken(L.getLParenLoc(), syntax::NodeRole::OpenParen);
- for (auto *P : L.getParams()) {
- Builder.markChild(P, syntax::NodeRole::ParametersAndQualifiers_parameter);
- }
+
+ Builder.markChild(buildParameterDeclarationList(L.getParams()),
+ syntax::NodeRole::ParametersAndQualifiers_parameters);
+
Builder.markChildToken(L.getRParenLoc(), syntax::NodeRole::CloseParen);
Builder.foldNode(Builder.getRange(L.getLParenLoc(), L.getEndLoc()),
new (allocator()) syntax::ParametersAndQualifiers, L);
diff --git a/clang/lib/Tooling/Syntax/Nodes.cpp b/clang/lib/Tooling/Syntax/Nodes.cpp
index 6a7be0f0ea79..984cc5d1f1fc 100644
--- a/clang/lib/Tooling/Syntax/Nodes.cpp
+++ b/clang/lib/Tooling/Syntax/Nodes.cpp
@@ -134,6 +134,8 @@ raw_ostream &syntax::operator<<(raw_ostream &OS, NodeKind K) {
return OS << "MemberExpression";
case NodeKind::CallArguments:
return OS << "CallArguments";
+ case NodeKind::ParameterDeclarationList:
+ return OS << "ParameterDeclarationList";
}
llvm_unreachable("unknown node kind");
}
@@ -200,8 +202,8 @@ raw_ostream &syntax::operator<<(raw_ostream &OS, NodeRole R) {
return OS << "ArraySubscript_sizeExpression";
case syntax::NodeRole::TrailingReturnType_declarator:
return OS << "TrailingReturnType_declarator";
- case syntax::NodeRole::ParametersAndQualifiers_parameter:
- return OS << "ParametersAndQualifiers_parameter";
+ case syntax::NodeRole::ParametersAndQualifiers_parameters:
+ return OS << "ParametersAndQualifiers_parameters";
case syntax::NodeRole::ParametersAndQualifiers_trailingReturn:
return OS << "ParametersAndQualifiers_trailingReturn";
case syntax::NodeRole::IdExpression_id:
@@ -269,6 +271,29 @@ syntax::CallArguments::argumentsAndCommas() {
return Children;
}
+std::vector<syntax::SimpleDeclaration *>
+syntax::ParameterDeclarationList::parameterDeclarations() {
+ auto ParametersAsNodes = getElementsAsNodes();
+ std::vector<syntax::SimpleDeclaration *> Children;
+ for (const auto &ParameterAsNode : ParametersAsNodes) {
+ Children.push_back(llvm::cast<syntax::SimpleDeclaration>(ParameterAsNode));
+ }
+ return Children;
+}
+
+std::vector<syntax::List::ElementAndDelimiter<syntax::SimpleDeclaration>>
+syntax::ParameterDeclarationList::parametersAndCommas() {
+ auto ParametersAsNodesAndCommas = getElementsAsNodesAndDelimiters();
+ std::vector<syntax::List::ElementAndDelimiter<syntax::SimpleDeclaration>>
+ Children;
+ for (const auto &ParameterAsNodeAndComma : ParametersAsNodesAndCommas) {
+ Children.push_back(
+ {llvm::cast<syntax::SimpleDeclaration>(ParameterAsNodeAndComma.element),
+ ParameterAsNodeAndComma.delimiter});
+ }
+ return Children;
+}
+
syntax::Expression *syntax::MemberExpression::object() {
return cast_or_null<syntax::Expression>(
findChild(syntax::NodeRole::MemberExpression_object));
@@ -574,14 +599,10 @@ syntax::Leaf *syntax::ParametersAndQualifiers::lparen() {
return cast_or_null<syntax::Leaf>(findChild(syntax::NodeRole::OpenParen));
}
-std::vector<syntax::SimpleDeclaration *>
+syntax::ParameterDeclarationList *
syntax::ParametersAndQualifiers::parameters() {
- std::vector<syntax::SimpleDeclaration *> Children;
- for (auto *C = firstChild(); C; C = C->nextSibling()) {
- if (C->role() == syntax::NodeRole::ParametersAndQualifiers_parameter)
- Children.push_back(cast<syntax::SimpleDeclaration>(C));
- }
- return Children;
+ return cast_or_null<syntax::ParameterDeclarationList>(
+ findChild(syntax::NodeRole::ParametersAndQualifiers_parameters));
}
syntax::Leaf *syntax::ParametersAndQualifiers::rparen() {
diff --git a/clang/lib/Tooling/Syntax/Tree.cpp b/clang/lib/Tooling/Syntax/Tree.cpp
index 7dbceedfb48f..777c24ef0cfa 100644
--- a/clang/lib/Tooling/Syntax/Tree.cpp
+++ b/clang/lib/Tooling/Syntax/Tree.cpp
@@ -359,6 +359,9 @@ clang::tok::TokenKind syntax::List::getDelimiterTokenKind() {
switch (this->kind()) {
case NodeKind::NestedNameSpecifier:
return clang::tok::coloncolon;
+ case NodeKind::CallArguments:
+ case NodeKind::ParametersAndQualifiers:
+ return clang::tok::comma;
default:
llvm_unreachable("This is not a subclass of List, thus "
"getDelimiterTokenKind() cannot be called");
@@ -369,6 +372,9 @@ syntax::List::TerminationKind syntax::List::getTerminationKind() {
switch (this->kind()) {
case NodeKind::NestedNameSpecifier:
return TerminationKind::Terminated;
+ case NodeKind::CallArguments:
+ case NodeKind::ParametersAndQualifiers:
+ return TerminationKind::Separated;
default:
llvm_unreachable("This is not a subclass of List, thus "
"getTerminationKind() cannot be called");
@@ -379,6 +385,10 @@ bool syntax::List::canBeEmpty() {
switch (this->kind()) {
case NodeKind::NestedNameSpecifier:
return false;
+ case NodeKind::CallArguments:
+ return true;
+ case NodeKind::ParametersAndQualifiers:
+ return true;
default:
llvm_unreachable("This is not a subclass of List, thus canBeEmpty() "
"cannot be called");
diff --git a/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp b/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
index e386646ee667..f0fbbe6fe9d1 100644
--- a/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
+++ b/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
@@ -85,15 +85,16 @@ TranslationUnit Detached
| |-'foo'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'a'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'b'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | |-'int'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'a'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'int'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | `-'b'
| `-')' CloseParen
`-CompoundStatement
|-'{' OpenParen
@@ -3162,8 +3163,9 @@ TranslationUnit Detached
| |-'_c'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'char'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | `-'char'
| `-')' CloseParen
`-';'
)txt"));
@@ -3219,11 +3221,12 @@ SimpleDeclaration
| |-'='
| `-ParametersAndQualifiers
| |-'(' OpenParen
-| |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | |-'const'
-| | |-'X'
-| | `-SimpleDeclarator SimpleDeclaration_declarator
-| | `-'&'
+| |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | `-SimpleDeclaration List_element
+| | |-'const'
+| | |-'X'
+| | `-SimpleDeclarator SimpleDeclaration_declarator
+| | `-'&'
| `-')' CloseParen
`-';'
)txt"}));
@@ -3249,14 +3252,15 @@ UnknownDeclaration
| |-'+'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'X'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'const'
- | | |-'X'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'&'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | `-'X'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'const'
+ | | |-'X'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | `-'&'
| `-')' CloseParen
`-';'
)txt"}));
@@ -3885,16 +3889,17 @@ TranslationUnit Detached
| |-'f'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-'xs'
- | | `-ArraySubscript
- | | |-'[' OpenParen
- | | |-'static'
- | | |-IntegerLiteralExpression ArraySubscript_sizeExpression
- | | | `-'10' LiteralToken
- | | `-']' CloseParen
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | |-'int'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | |-'xs'
+ | | `-ArraySubscript
+ | | |-'[' OpenParen
+ | | |-'static'
+ | | |-IntegerLiteralExpression ArraySubscript_sizeExpression
+ | | | `-'10' LiteralToken
+ | | `-']' CloseParen
| `-')' CloseParen
`-';'
)txt"));
@@ -3933,10 +3938,11 @@ TranslationUnit Detached
| | |-'func1'
| | `-ParametersAndQualifiers
| | |-'(' OpenParen
-| | |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | | |-'int'
-| | | `-SimpleDeclarator SimpleDeclaration_declarator
-| | | `-'a'
+| | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | | `-SimpleDeclaration List_element
+| | | |-'int'
+| | | `-SimpleDeclarator SimpleDeclaration_declarator
+| | | `-'a'
| | `-')' CloseParen
| `-';'
|-SimpleDeclaration
@@ -3945,11 +3951,12 @@ TranslationUnit Detached
| | |-'func2'
| | `-ParametersAndQualifiers
| | |-'(' OpenParen
-| | |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | | |-'int'
-| | | `-SimpleDeclarator SimpleDeclaration_declarator
-| | | |-'*'
-| | | `-'ap'
+| | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | | `-SimpleDeclaration List_element
+| | | |-'int'
+| | | `-SimpleDeclarator SimpleDeclaration_declarator
+| | | |-'*'
+| | | `-'ap'
| | `-')' CloseParen
| `-';'
`-SimpleDeclaration
@@ -3958,15 +3965,16 @@ TranslationUnit Detached
| |-'func3'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'a'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'float'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'b'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | |-'int'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'a'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'float'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | `-'b'
| `-')' CloseParen
`-';'
)txt"));
@@ -3987,8 +3995,9 @@ TranslationUnit Detached
| | |-'func1'
| | `-ParametersAndQualifiers
| | |-'(' OpenParen
-| | |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | | `-'int'
+| | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | | `-SimpleDeclaration List_element
+| | | `-'int'
| | `-')' CloseParen
| `-';'
|-SimpleDeclaration
@@ -3997,10 +4006,11 @@ TranslationUnit Detached
| | |-'func2'
| | `-ParametersAndQualifiers
| | |-'(' OpenParen
-| | |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | | |-'int'
-| | | `-SimpleDeclarator SimpleDeclaration_declarator
-| | | `-'*'
+| | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | | `-SimpleDeclaration List_element
+| | | |-'int'
+| | | `-SimpleDeclarator SimpleDeclaration_declarator
+| | | `-'*'
| | `-')' CloseParen
| `-';'
`-SimpleDeclaration
@@ -4009,11 +4019,103 @@ TranslationUnit Detached
| |-'func3'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'int'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'float'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | `-'int'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | `-'float'
+ | `-')' CloseParen
+ `-';'
+)txt"));
+}
+
+TEST_P(SyntaxTreeTest,
+ ParametersAndQualifiers_InVariadicFunctionTemplate_ParameterPack) {
+ if (!GetParam().isCXX11OrLater() || GetParam().hasDelayedTemplateParsing()) {
+ return;
+ }
+ EXPECT_TRUE(treeDumpEqualOnAnnotations(
+ R"cpp(
+template<typename T, typename... Args>
+[[void test(T , Args... );]]
+)cpp",
+ {R"txt(
+SimpleDeclaration
+|-'void'
+|-SimpleDeclarator SimpleDeclaration_declarator
+| |-'test'
+| `-ParametersAndQualifiers
+| |-'(' OpenParen
+| |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | |-SimpleDeclaration List_element
+| | | `-'T'
+| | |-',' List_delimiter
+| | `-SimpleDeclaration List_element
+| | |-'Args'
+| | `-'...'
+| `-')' CloseParen
+`-';'
+)txt"}));
+}
+
+TEST_P(SyntaxTreeTest,
+ ParametersAndQualifiers_InVariadicFunctionTemplate_NamedParameterPack) {
+ if (!GetParam().isCXX11OrLater() || GetParam().hasDelayedTemplateParsing()) {
+ return;
+ }
+ EXPECT_TRUE(treeDumpEqualOnAnnotations(
+ R"cpp(
+template<typename T, typename... Args>
+[[void test(T t, Args... args);]]
+)cpp",
+ {R"txt(
+SimpleDeclaration
+|-'void'
+|-SimpleDeclarator SimpleDeclaration_declarator
+| |-'test'
+| `-ParametersAndQualifiers
+| |-'(' OpenParen
+| |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | |-SimpleDeclaration List_element
+| | | |-'T'
+| | | `-SimpleDeclarator SimpleDeclaration_declarator
+| | | `-'t'
+| | |-',' List_delimiter
+| | `-SimpleDeclaration List_element
+| | |-'Args'
+| | |-'...'
+| | `-SimpleDeclarator SimpleDeclaration_declarator
+| | `-'args'
+| `-')' CloseParen
+`-';'
+)txt"}));
+}
+
+TEST_P(SyntaxTreeTest,
+ ParametersAndQualifiers_InFreeFunctions_VariadicArguments) {
+ if (!GetParam().isCXX11OrLater()) {
+ return;
+ }
+ EXPECT_TRUE(treeDumpEqual(
+ R"cpp(
+void test(int , char ...);
+)cpp",
+ R"txt(
+TranslationUnit Detached
+`-SimpleDeclaration
+ |-'void'
+ |-SimpleDeclarator SimpleDeclaration_declarator
+ | |-'test'
+ | `-ParametersAndQualifiers
+ | |-'(' OpenParen
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | `-'int'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | `-'char'
+ | |-'...'
| `-')' CloseParen
`-';'
)txt"));
@@ -4036,24 +4138,25 @@ TranslationUnit Detached
| |-'func'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'const'
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'a'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'volatile'
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'b'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'const'
- | | |-'volatile'
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'c'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | |-'const'
+ | | | |-'int'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'a'
+ | | |-',' List_delimiter
+ | | |-SimpleDeclaration List_element
+ | | | |-'volatile'
+ | | | |-'int'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'b'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'const'
+ | | |-'volatile'
+ | | |-'int'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | `-'c'
| `-')' CloseParen
`-';'
)txt"));
@@ -4075,11 +4178,12 @@ TranslationUnit Detached
| |-'func'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-'&'
- | | `-'a'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | |-'int'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | |-'&'
+ | | `-'a'
| `-')' CloseParen
`-';'
)txt"));
@@ -4101,11 +4205,12 @@ TranslationUnit Detached
| |-'func'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'int'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-'&&'
- | | `-'a'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | |-'int'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | |-'&&'
+ | | `-'a'
| `-')' CloseParen
`-';'
)txt"));
@@ -4403,8 +4508,9 @@ TranslationUnit Detached
| | | `-')' CloseParen
| | `-ParametersAndQualifiers
| | |-'(' OpenParen
-| | |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | | `-'int'
+| | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | | `-SimpleDeclaration List_element
+| | | `-'int'
| | `-')' CloseParen
| `-';'
`-SimpleDeclaration
@@ -4417,8 +4523,9 @@ TranslationUnit Detached
| | `-')' CloseParen
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'int'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | `-'int'
| `-')' CloseParen
`-';'
)txt"));
@@ -4523,8 +4630,9 @@ TranslationUnit Detached
| | `-')' CloseParen
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | `-'int'
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | `-SimpleDeclaration List_element
+ | | `-'int'
| |-')' CloseParen
| `-TrailingReturnType ParametersAndQualifiers_trailingReturn
| |-'->' ArrowToken
@@ -4617,11 +4725,12 @@ SimpleDeclaration
| | `-')' CloseParen
| `-ParametersAndQualifiers
| |-'(' OpenParen
-| |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | |-'const'
-| | |-'int'
-| | `-SimpleDeclarator SimpleDeclaration_declarator
-| | `-'*'
+| |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | `-SimpleDeclaration List_element
+| | |-'const'
+| | |-'int'
+| | `-SimpleDeclarator SimpleDeclaration_declarator
+| | `-'*'
| `-')' CloseParen
`-';'
)txt",
@@ -4641,14 +4750,15 @@ SimpleDeclaration
| | `-')' CloseParen
| `-ParametersAndQualifiers
| |-'(' OpenParen
-| |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | |-'const'
-| | |-'int'
-| | `-SimpleDeclarator SimpleDeclaration_declarator
-| | `-'*'
-| |-','
-| |-SimpleDeclaration ParametersAndQualifiers_parameter
-| | `-'char'
+| |-ParameterDeclarationList ParametersAndQualifiers_parameters
+| | |-SimpleDeclaration List_element
+| | | |-'const'
+| | | |-'int'
+| | | `-SimpleDeclarator SimpleDeclaration_declarator
+| | | `-'*'
+| | |-',' List_delimiter
+| | `-SimpleDeclaration List_element
+| | `-'char'
| `-')' CloseParen
`-';'
)txt"}));
@@ -4667,24 +4777,26 @@ TranslationUnit Detached
| |-'x'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'char'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'a'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'short'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-ParenDeclarator
- | | | |-'(' OpenParen
- | | | |-'*'
- | | | |-'b'
- | | | `-')' CloseParen
- | | `-ParametersAndQualifiers
- | | |-'(' OpenParen
- | | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | | `-'int'
- | | `-')' CloseParen
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | |-'char'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'a'
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'short'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | |-ParenDeclarator
+ | | | |-'(' OpenParen
+ | | | |-'*'
+ | | | |-'b'
+ | | | `-')' CloseParen
+ | | `-ParametersAndQualifiers
+ | | |-'(' OpenParen
+ | | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | | `-SimpleDeclaration List_element
+ | | | `-'int'
+ | | `-')' CloseParen
| `-')' CloseParen
`-';'
)txt"));
@@ -4703,40 +4815,43 @@ TranslationUnit Detached
| |-'x'
| `-ParametersAndQualifiers
| |-'(' OpenParen
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'char'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | `-'a'
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'short'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-ParenDeclarator
- | | | |-'(' OpenParen
- | | | |-'*'
- | | | |-'b'
- | | | `-')' CloseParen
- | | `-ParametersAndQualifiers
- | | |-'(' OpenParen
- | | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | | `-'int'
- | | `-')' CloseParen
- | |-','
- | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | |-'long'
- | | `-SimpleDeclarator SimpleDeclaration_declarator
- | | |-ParenDeclarator
- | | | |-'(' OpenParen
- | | | |-'*'
- | | | |-'*'
- | | | |-'c'
- | | | `-')' CloseParen
- | | `-ParametersAndQualifiers
- | | |-'(' OpenParen
- | | |-SimpleDeclaration ParametersAndQualifiers_parameter
- | | | |-'long'
- | | | `-'long'
- | | `-')' CloseParen
+ | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | |-SimpleDeclaration List_element
+ | | | |-'char'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | `-'a'
+ | | |-',' List_delimiter
+ | | |-SimpleDeclaration List_element
+ | | | |-'short'
+ | | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | | |-ParenDeclarator
+ | | | | |-'(' OpenParen
+ | | | | |-'*'
+ | | | | |-'b'
+ | | | | `-')' CloseParen
+ | | | `-ParametersAndQualifiers
+ | | | |-'(' OpenParen
+ | | | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | | | `-SimpleDeclaration List_element
+ | | | | `-'int'
+ | | | `-')' CloseParen
+ | | |-',' List_delimiter
+ | | `-SimpleDeclaration List_element
+ | | |-'long'
+ | | `-SimpleDeclarator SimpleDeclaration_declarator
+ | | |-ParenDeclarator
+ | | | |-'(' OpenParen
+ | | | |-'*'
+ | | | |-'*'
+ | | | |-'c'
+ | | | `-')' CloseParen
+ | | `-ParametersAndQualifiers
+ | | |-'(' OpenParen
+ | | |-ParameterDeclarationList ParametersAndQualifiers_parameters
+ | | | `-SimpleDeclaration List_element
+ | | | |-'long'
+ | | | `-'long'
+ | | `-')' CloseParen
| `-')' CloseParen
`-';'
)txt"));
More information about the cfe-commits
mailing list