summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-04-24 16:17:27 (GMT)
committerRoberto Raggi <roberto.raggi@nokia.com>2009-04-24 16:17:27 (GMT)
commit5d8ce4c43c3c2816cd5dca03ddd429f26b96d34d (patch)
tree0f7f9076d6254b0f4b75c971a168e45dded635ea /src
parent3ee74e1f66eb8c00857aafcbd05b6130af11507a (diff)
downloadQt-5d8ce4c43c3c2816cd5dca03ddd429f26b96d34d.zip
Qt-5d8ce4c43c3c2816cd5dca03ddd429f26b96d34d.tar.gz
Qt-5d8ce4c43c3c2816cd5dca03ddd429f26b96d34d.tar.bz2
No more sugar :-)
Diffstat (limited to 'src')
-rw-r--r--src/declarative/qml/parser/javascript.g4
-rw-r--r--src/declarative/qml/parser/javascriptast_p.h4
-rw-r--r--src/declarative/qml/parser/javascriptparser.cpp4
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp20
4 files changed, 21 insertions, 11 deletions
diff --git a/src/declarative/qml/parser/javascript.g b/src/declarative/qml/parser/javascript.g
index b1bd49f..0712828 100644
--- a/src/declarative/qml/parser/javascript.g
+++ b/src/declarative/qml/parser/javascript.g
@@ -645,14 +645,14 @@ case $rule_number: {
UiObjectMember: FunctionDeclaration ;
/.
case $rule_number: {
- sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Statement);
+ sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
./
UiObjectMember: VariableStatement ;
/.
case $rule_number: {
- sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Statement);
+ sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
./
diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h
index 5176726..267a697 100644
--- a/src/declarative/qml/parser/javascriptast_p.h
+++ b/src/declarative/qml/parser/javascriptast_p.h
@@ -1954,14 +1954,14 @@ class UiSourceElement: public UiObjectMember
public:
JAVASCRIPT_DECLARE_AST_NODE(UiSourceElement)
- UiSourceElement(Statement *sourceElement)
+ UiSourceElement(Node *sourceElement)
: sourceElement(sourceElement)
{ kind = K; }
virtual void accept0(Visitor *visitor);
// attributes
- Statement *sourceElement;
+ Node *sourceElement;
};
class UiObjectBinding: public UiObjectMember
diff --git a/src/declarative/qml/parser/javascriptparser.cpp b/src/declarative/qml/parser/javascriptparser.cpp
index 9959e58..f9661d5 100644
--- a/src/declarative/qml/parser/javascriptparser.cpp
+++ b/src/declarative/qml/parser/javascriptparser.cpp
@@ -276,11 +276,11 @@ case 23: {
} break;
case 24: {
- sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Statement);
+ sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
case 25: {
- sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Statement);
+ sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
case 26: {
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index 3d406e7..099985e 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -240,7 +240,7 @@ Object *ProcessAST::defineObjectBinding(int line,
const QString &objectType,
AST::UiObjectInitializer *initializer)
{
-
+#if 0
if (objectType == QLatin1String("Connection")) {
AST::UiObjectMemberList *it = initializer->members;
@@ -410,6 +410,7 @@ Object *ProcessAST::defineObjectBinding(int line,
_stateStack.pop();
return obj;
}
+#endif
return defineObjectBinding_helper(line, qualifiedId, objectType, initializer);
}
@@ -599,19 +600,28 @@ bool ProcessAST::visit(AST::UiArrayBinding *node)
bool ProcessAST::visit(AST::UiSourceElement *node)
{
+ QmlParser::Object *obj = currentObject();
+ if (! (obj && obj->typeName == "Script")) {
+ // ### warning
+ return false;
+ }
+
QString source;
QTextStream out(&source);
PrettyPretty pp(out);
pp(node->sourceElement);
- Object *obj = defineObjectBinding(-1, // ### line
- 0,
- QLatin1String("Script"));
+ int line = 0;
+ if (AST::FunctionDeclaration *funDecl = AST::cast<AST::FunctionDeclaration *>(node->sourceElement))
+ line = funDecl->functionToken.startLine;
+ else if (AST::VariableStatement *varStmt = AST::cast<AST::VariableStatement *>(node->sourceElement))
+ line = varStmt->declarationKindToken.startLine;
Value *value = new Value;
value->primitive = source;
- value->line = -1; // ### fix me
+ value->line = line;
+
obj->getDefaultProperty()->addValue(value);
return false;