From d19418f4d8d20f61ada12b6fa040999940de7cb3 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Mon, 18 Jan 2010 10:39:11 +0100
Subject: [PATCH] Incorporated change 4a1c0db988c87b4b4922e5a2607adadd633d99a1
 from kinetic-declarativeui.

Added a utility method to get a casted AST root node.

Reviewed-by: Christian Kamm
---
 src/shared/qmljs/parser/qmljs.g         |  8 ++++++++
 src/shared/qmljs/parser/qmljsast.cpp    | 10 ++++++++++
 src/shared/qmljs/parser/qmljsast_p.h    |  3 +++
 src/shared/qmljs/parser/qmljsparser_p.h |  8 ++++++++
 4 files changed, 29 insertions(+)

diff --git a/src/shared/qmljs/parser/qmljs.g b/src/shared/qmljs/parser/qmljs.g
index ec9a95611b3..0604457bf74 100644
--- a/src/shared/qmljs/parser/qmljs.g
+++ b/src/shared/qmljs/parser/qmljs.g
@@ -296,6 +296,14 @@ public:
         return program->uiObjectMemberCast();
     }
 
+    AST::SourceElement *sourceElement() const
+    {
+        if (! program)
+            return 0;
+
+        return program->sourceElementCast();
+    }
+
     QList<DiagnosticMessage> diagnosticMessages() const
     { return diagnostic_messages; }
 
diff --git a/src/shared/qmljs/parser/qmljsast.cpp b/src/shared/qmljs/parser/qmljsast.cpp
index 2a39aae9477..35ae0c846e3 100644
--- a/src/shared/qmljs/parser/qmljsast.cpp
+++ b/src/shared/qmljs/parser/qmljsast.cpp
@@ -81,6 +81,11 @@ UiObjectMember *Node::uiObjectMemberCast()
     return 0;
 }
 
+SourceElement *Node::sourceElementCast()
+{
+    return 0;
+}
+
 ExpressionNode *ExpressionNode::expressionCast()
 {
     return this;
@@ -772,6 +777,11 @@ void SourceElements::accept0(Visitor *visitor)
     visitor->endVisit(this);
 }
 
+SourceElement *SourceElement::sourceElementCast()
+{
+    return this;
+}
+
 void FunctionSourceElement::accept0(Visitor *visitor)
 {
     if (visitor->visit(this)) {
diff --git a/src/shared/qmljs/parser/qmljsast_p.h b/src/shared/qmljs/parser/qmljsast_p.h
index 032fbb189a6..6f7f5cc4133 100644
--- a/src/shared/qmljs/parser/qmljsast_p.h
+++ b/src/shared/qmljs/parser/qmljsast_p.h
@@ -230,6 +230,7 @@ public:
     virtual BinaryExpression *binaryExpressionCast();
     virtual Statement *statementCast();
     virtual UiObjectMember *uiObjectMemberCast();
+    virtual SourceElement *sourceElementCast();
 
     void accept(Visitor *visitor);
     static void accept(Node *node, Visitor *visitor);
@@ -2164,6 +2165,8 @@ public:
         { kind = K; }
 
     virtual ~SourceElement() {}
+
+    virtual SourceElement *sourceElementCast();
 };
 
 class QML_PARSER_EXPORT FunctionSourceElement: public SourceElement
diff --git a/src/shared/qmljs/parser/qmljsparser_p.h b/src/shared/qmljs/parser/qmljsparser_p.h
index 2a09a633cc7..660690b8727 100644
--- a/src/shared/qmljs/parser/qmljsparser_p.h
+++ b/src/shared/qmljs/parser/qmljsparser_p.h
@@ -162,6 +162,14 @@ public:
         return program->uiObjectMemberCast();
     }
 
+    AST::SourceElement *sourceElement() const
+    {
+        if (! program)
+            return 0;
+
+        return program->sourceElementCast();
+    }
+
     QList<DiagnosticMessage> diagnosticMessages() const
     { return diagnostic_messages; }
 
-- 
GitLab