diff options
Diffstat (limited to 'src/declarative/qml/parser')
-rw-r--r-- | src/declarative/qml/parser/javascript.g | 6 | ||||
-rw-r--r-- | src/declarative/qml/parser/javascriptast_p.h | 8 | ||||
-rw-r--r-- | src/declarative/qml/parser/javascriptparser.cpp | 6 |
3 files changed, 15 insertions, 5 deletions
diff --git a/src/declarative/qml/parser/javascript.g b/src/declarative/qml/parser/javascript.g index 0da7571..5482392 100644 --- a/src/declarative/qml/parser/javascript.g +++ b/src/declarative/qml/parser/javascript.g @@ -688,7 +688,8 @@ UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER ; case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval); node->isDefaultMember = true; - node->propertyToken = loc(1); + node->defaultToken = loc(1); + node->propertyToken = loc(2); node->typeToken = loc(3); node->identifierToken = loc(4); sym(1).Node = node; @@ -714,7 +715,8 @@ case $rule_number: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, sym(6).Expression); node->isDefaultMember = true; - node->propertyToken = loc(1); + node->defaultToken = loc(1); + node->propertyToken = loc(2); node->typeToken = loc(3); node->identifierToken = loc(4); node->colonToken = loc(5); diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h index 3a22fff..ad317e8 100644 --- a/src/declarative/qml/parser/javascriptast_p.h +++ b/src/declarative/qml/parser/javascriptast_p.h @@ -2336,7 +2336,12 @@ public: { kind = K; } virtual SourceLocation firstSourceLocation() const - { return propertyToken; } + { + if (defaultToken.isValid()) + return defaultToken; + + return propertyToken; + } virtual SourceLocation lastSourceLocation() const { @@ -2359,6 +2364,7 @@ public: JavaScriptNameIdImpl *name; ExpressionNode *expression; bool isDefaultMember; + SourceLocation defaultToken; SourceLocation propertyToken; SourceLocation typeToken; SourceLocation identifierToken; diff --git a/src/declarative/qml/parser/javascriptparser.cpp b/src/declarative/qml/parser/javascriptparser.cpp index b241297..185a824 100644 --- a/src/declarative/qml/parser/javascriptparser.cpp +++ b/src/declarative/qml/parser/javascriptparser.cpp @@ -298,7 +298,8 @@ case 30: { case 31: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval); node->isDefaultMember = true; - node->propertyToken = loc(1); + node->defaultToken = loc(1); + node->propertyToken = loc(2); node->typeToken = loc(3); node->identifierToken = loc(4); sym(1).Node = node; @@ -318,7 +319,8 @@ case 33: { AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval, sym(6).Expression); node->isDefaultMember = true; - node->propertyToken = loc(1); + node->defaultToken = loc(1); + node->propertyToken = loc(2); node->typeToken = loc(3); node->identifierToken = loc(4); node->colonToken = loc(5); |