From 5d8ce4c43c3c2816cd5dca03ddd429f26b96d34d Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Fri, 24 Apr 2009 18:17:27 +0200 Subject: No more sugar :-) --- src/declarative/qml/parser/javascript.g | 4 ++-- src/declarative/qml/parser/javascriptast_p.h | 4 ++-- src/declarative/qml/parser/javascriptparser.cpp | 4 ++-- src/declarative/qml/qmlscriptparser.cpp | 20 +++++++++++++++----- 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(driver->nodePool(), sym(1).Statement); + sym(1).Node = makeAstNode(driver->nodePool(), sym(1).Node); } break; ./ UiObjectMember: VariableStatement ; /. case $rule_number: { - sym(1).Node = makeAstNode(driver->nodePool(), sym(1).Statement); + sym(1).Node = makeAstNode(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(driver->nodePool(), sym(1).Statement); + sym(1).Node = makeAstNode(driver->nodePool(), sym(1).Node); } break; case 25: { - sym(1).Node = makeAstNode(driver->nodePool(), sym(1).Statement); + sym(1).Node = makeAstNode(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(node->sourceElement)) + line = funDecl->functionToken.startLine; + else if (AST::VariableStatement *varStmt = AST::cast(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; -- cgit v0.12