diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-01 09:05:19 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-08-01 20:51:05 +0000 |
commit | 145ff3118cf27455180bbcff2d37b24cf32276f7 (patch) | |
tree | 0264e5c203bcc150805476e8759237e17a68f7f8 /src/qml/parser/qqmljs.g | |
parent | 5f9c61ca9ff8921fe8a00e4cbf30ec8a4d5c6770 (diff) |
Simplify parsing of pragma directives
We only support 'pragma Singleton' currently, so there is no need
to parse the right hand side of pragma as a member expression.
Change-Id: Ic0dcbedb52cb58db2fd1cc099f14fd399b7162e3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/parser/qqmljs.g')
-rw-r--r-- | src/qml/parser/qqmljs.g | 51 |
1 files changed, 9 insertions, 42 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g index db583ff82c..2a5970364b 100644 --- a/src/qml/parser/qqmljs.g +++ b/src/qml/parser/qqmljs.g @@ -314,7 +314,6 @@ public: AST::UiObjectMemberList *UiObjectMemberList; AST::UiArrayMemberList *UiArrayMemberList; AST::UiQualifiedId *UiQualifiedId; - AST::UiQualifiedPragmaId *UiQualifiedPragmaId; AST::UiEnumMemberList *UiEnumMemberList; }; @@ -398,7 +397,6 @@ protected: { return location_stack [tos + index - 1]; } AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr); - AST::UiQualifiedPragmaId *reparseAsQualifiedPragmaId(AST::ExpressionNode *expr); void pushToken(int token); int lookaheadToken(Lexer *lexer); @@ -551,18 +549,6 @@ AST::UiQualifiedId *Parser::reparseAsQualifiedId(AST::ExpressionNode *expr) return 0; } -AST::UiQualifiedPragmaId *Parser::reparseAsQualifiedPragmaId(AST::ExpressionNode *expr) -{ - if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(expr)) { - AST::UiQualifiedPragmaId *q = new (pool) AST::UiQualifiedPragmaId(idExpr->name); - q->identifierToken = idExpr->identifierToken; - - return q->finish(); - } - - return 0; -} - void Parser::pushToken(int token) { last_token->token = yytoken; @@ -768,18 +754,21 @@ UiHeaderItemList: UiHeaderItemList UiImport; } break; ./ -PragmaId: MemberExpression; - -ImportId: MemberExpression; +PragmaId: JsIdentifier; -UiPragma: UiPragmaHead T_AUTOMATIC_SEMICOLON; -UiPragma: UiPragmaHead T_SEMICOLON; +UiPragma: T_PRAGMA PragmaId T_AUTOMATIC_SEMICOLON; +UiPragma: T_PRAGMA PragmaId T_SEMICOLON; /. case $rule_number: { - sym(1).UiPragma->semicolonToken = loc(2); + AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2)); + pragma->pragmaToken = loc(1); + pragma->semicolonToken = loc(3); + sym(1).Node = pragma; } break; ./ +ImportId: MemberExpression; + UiImport: UiImportHead T_AUTOMATIC_SEMICOLON; UiImport: UiImportHead T_SEMICOLON; /. @@ -820,28 +809,6 @@ UiImport: UiImportHead T_AS QmlIdentifier T_SEMICOLON; } break; ./ -UiPragmaHead: T_PRAGMA PragmaId; -/. - case $rule_number: { - AST::UiPragma *node = 0; - - if (AST::UiQualifiedPragmaId *qualifiedId = reparseAsQualifiedPragmaId(sym(2).Expression)) - node = new (pool) AST::UiPragma(qualifiedId); - - sym(1).Node = node; - - if (node) { - node->pragmaToken = loc(1); - } else { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1), - QLatin1String("Expected a qualified name id"))); - - return false; // ### remove me - } - } break; -./ - - UiImportHead: T_IMPORT ImportId; /. case $rule_number: { |