diff --git a/src/shared/qmljs/parser/qmljs.g b/src/shared/qmljs/parser/qmljs.g
index ec9a95611b38b1a9ce027a661f3a75255c62c08f..0604457bf743c068fed28f63c2d7c28db35e45fe 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 2a39aae947721aa3b8db91584864aefceb19e18d..35ae0c846e3e373bf5c8d9c940ded4c7908155f0 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 032fbb189a635a2d3012a9104d6b0813aa8d7819..6f7f5cc413345fef64b0b66359053eefdd9368b6 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 2a09a633cc7b8e8ebc95da6964e61070e962bfcf..660690b8727e2d3a3eb7a554a6cb550682a8756a 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; }