summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/qml/parser/javascript.g6
-rw-r--r--src/declarative/qml/parser/javascriptast_p.h8
-rw-r--r--src/declarative/qml/parser/javascriptparser.cpp6
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);