aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/parser/qqmljs.g
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-08-14 13:39:01 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-08-14 17:45:56 +0000
commit24a098793481c5e173e4271f775c96a37f0e6e1c (patch)
tree2688ff8d3c46076b3cb87e883f734df9d3bf87c7 /src/qml/parser/qqmljs.g
parent929ef25efd402368a9f154b61aa96b4b01a02ce2 (diff)
Simplify ES module body handling
Now that ImportDeclaration and ExportDeclaration are also statements in the AST, we can get rid of the ModuleItemList in the AST. We keep it in the grammar, but map it to a statement list. Change-Id: I4cab29fe9b075e88454fe3b194126f728000856a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/parser/qqmljs.g')
-rw-r--r--src/qml/parser/qqmljs.g23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g
index faf465e7b9..8d85a006aa 100644
--- a/src/qml/parser/qqmljs.g
+++ b/src/qml/parser/qqmljs.g
@@ -287,7 +287,6 @@ public:
AST::PatternProperty *PatternProperty;
AST::PatternPropertyList *PatternPropertyList;
AST::ClassElementList *ClassElementList;
- AST::ModuleItemList *ModuleItemList;
AST::ImportClause *ImportClause;
AST::FromClause *FromClause;
AST::NameSpaceImport *NameSpaceImport;
@@ -3991,43 +3990,47 @@ ScriptBody: StatementList;
Module: ModuleBodyOpt;
/. case $rule_number: {
- sym(1).Node = new (pool) AST::ESModule(sym(1).ModuleItemList, pool);
+ sym(1).Node = new (pool) AST::ESModule(sym(1).StatementList);
} break;
./
ModuleBody: ModuleItemList;
/.
case $rule_number: {
- sym(1).ModuleItemList = sym(1).ModuleItemList->finish();
+ sym(1).StatementList = sym(1).StatementList->finish();
} break;
./
ModuleBodyOpt: ;
/.
case $rule_number: {
- sym(1).ModuleItemList = nullptr;
+ sym(1).StatementList = nullptr;
} break;
./
ModuleBodyOpt: ModuleBody;
ModuleItemList: ModuleItem;
-/.
- case $rule_number: {
- sym(1).ModuleItemList = new (pool) AST::ModuleItemList(sym(1).Node);
- } break;
-./
ModuleItemList: ModuleItemList ModuleItem;
/.
case $rule_number: {
- sym(1).ModuleItemList = new (pool) AST::ModuleItemList(sym(1).ModuleItemList, sym(2).Node);
+ sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList);
} break;
./
ModuleItem: ImportDeclaration T_AUTOMATIC_SEMICOLON;
+/. case $rule_number: Q_FALLTHROUGH(); ./
ModuleItem: ImportDeclaration T_SEMICOLON;
+/. case $rule_number: Q_FALLTHROUGH(); ./
ModuleItem: ExportDeclaration T_AUTOMATIC_SEMICOLON;
+/. case $rule_number: Q_FALLTHROUGH(); ./
ModuleItem: ExportDeclaration T_SEMICOLON;
+/.
+ case $rule_number: {
+ sym(1).StatementList = new (pool) AST::StatementList(sym(1).Node);
+ } break;
+./
+
ModuleItem: StatementListItem;
ImportDeclaration: T_IMPORT ImportClause FromClause;