forked from qt-creator/qt-creator
		
	QmlJS: Merge new parser from Qt 5.
Change-Id: I986df52b7ddb31e3bae1148eda881acc1829b102 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
		@@ -15,7 +15,7 @@ perl -p -0777 -i -e 's/QT_BEGIN_NAMESPACE\n\nclass QmlError;\nclass QmlDirParser
 | 
			
		||||
# export QmlJSGrammar
 | 
			
		||||
perl -p -0777 -i -e 's/#include <QtCore\/qglobal.h>\n\nQT_BEGIN_NAMESPACE\n\nclass QmlJSGrammar\n/#include "qmljsglobal_p.h"\n#include <QtCore\/qglobal.h>\n\nQT_BEGIN_NAMESPACE\n\nclass QML_PARSER_EXPORT QmlJSGrammar\n/' qmljsgrammar_p.h
 | 
			
		||||
# replace qmlglobal_p.h include with needed declaration
 | 
			
		||||
perl -p -0777 -i -e 's/#include \<qmlglobal_p.h\>/bool Qml_isFileCaseCorrect(const QString &) { return true; }/' qmldirparser.cpp
 | 
			
		||||
perl -p -0777 -i -e 's/#include \"qmlglobal_p.h\"/bool Qml_isFileCaseCorrect(const QString &) { return true; }/' qmldirparser.cpp
 | 
			
		||||
 | 
			
		||||
./changeLicense.py $me/../qmljs_global.h qml*.{cpp,h}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,3 @@
 | 
			
		||||
INCLUDEPATH += $$PWD
 | 
			
		||||
 | 
			
		||||
HEADERS += \
 | 
			
		||||
    $$PWD/qmljsast_p.h \
 | 
			
		||||
    $$PWD/qmljsastfwd_p.h \
 | 
			
		||||
 
 | 
			
		||||
@@ -177,7 +177,7 @@ bool QmlDirParser::parse()
 | 
			
		||||
                            QString::fromUtf8("internal types require 2 arguments, but %1 were provided").arg(sectionCount - 1));
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            Component entry(sections[1].toUtf8(), sections[2], -1, -1);
 | 
			
		||||
            Component entry(sections[1], sections[2], -1, -1);
 | 
			
		||||
            entry.internal = true;
 | 
			
		||||
            _components.append(entry);
 | 
			
		||||
        } else if (sections[0] == QLatin1String("typeinfo")) {
 | 
			
		||||
@@ -193,7 +193,7 @@ bool QmlDirParser::parse()
 | 
			
		||||
 | 
			
		||||
        } else if (sectionCount == 2) {
 | 
			
		||||
            // No version specified (should only be used for relative qmldir files)
 | 
			
		||||
            const Component entry(sections[0].toUtf8(), sections[1], -1, -1);
 | 
			
		||||
            const Component entry(sections[0], sections[1], -1, -1);
 | 
			
		||||
            _components.append(entry);
 | 
			
		||||
        } else if (sectionCount == 3) {
 | 
			
		||||
            const QString &version = sections[1];
 | 
			
		||||
@@ -211,7 +211,7 @@ bool QmlDirParser::parse()
 | 
			
		||||
                    const int minorVersion = version.mid(dotIndex + 1).toInt(&validVersionNumber);
 | 
			
		||||
 | 
			
		||||
                    if (validVersionNumber) {
 | 
			
		||||
                        const Component entry(sections[0].toUtf8(), sections[2], majorVersion, minorVersion);
 | 
			
		||||
                        const Component entry(sections[0], sections[2], majorVersion, minorVersion);
 | 
			
		||||
 | 
			
		||||
                        _components.append(entry);
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
@@ -91,11 +91,11 @@ public:
 | 
			
		||||
        Component()
 | 
			
		||||
            : majorVersion(0), minorVersion(0), internal(false) {}
 | 
			
		||||
 | 
			
		||||
        Component(const QByteArray &typeName, const QString &fileName, int majorVersion, int minorVersion)
 | 
			
		||||
        Component(const QString &typeName, const QString &fileName, int majorVersion, int minorVersion)
 | 
			
		||||
            : typeName(typeName), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion),
 | 
			
		||||
            internal(false) {}
 | 
			
		||||
 | 
			
		||||
        QByteArray typeName;
 | 
			
		||||
        QString typeName;
 | 
			
		||||
        QString fileName;
 | 
			
		||||
        int majorVersion;
 | 
			
		||||
        int minorVersion;
 | 
			
		||||
 
 | 
			
		||||
@@ -246,9 +246,6 @@ public:
 | 
			
		||||
      AST::UiObjectMemberList *UiObjectMemberList;
 | 
			
		||||
      AST::UiArrayMemberList *UiArrayMemberList;
 | 
			
		||||
      AST::UiQualifiedId *UiQualifiedId;
 | 
			
		||||
      AST::UiSignature *UiSignature;
 | 
			
		||||
      AST::UiFormalList *UiFormalList;
 | 
			
		||||
      AST::UiFormal *UiFormal;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
@@ -781,7 +778,10 @@ case $rule_number: {
 | 
			
		||||
UiScriptStatement: Block ;
 | 
			
		||||
UiScriptStatement: EmptyStatement ;
 | 
			
		||||
UiScriptStatement: ExpressionStatement ;
 | 
			
		||||
UiScriptStatement: IfStatement ;  --- ### do we really want if statement in a binding?
 | 
			
		||||
UiScriptStatement: IfStatement ;
 | 
			
		||||
UiScriptStatement: WithStatement ;
 | 
			
		||||
UiScriptStatement: SwitchStatement ;
 | 
			
		||||
UiScriptStatement: TryStatement ;
 | 
			
		||||
 | 
			
		||||
UiObjectMember: UiQualifiedId T_COLON UiScriptStatement ;
 | 
			
		||||
/.
 | 
			
		||||
@@ -816,6 +816,7 @@ UiParameterList: UiPropertyType JsIdentifier ;
 | 
			
		||||
/.
 | 
			
		||||
case $rule_number: {
 | 
			
		||||
  AST::UiParameterList *node = new (pool) AST::UiParameterList(stringRef(1), stringRef(2));
 | 
			
		||||
  node->propertyTypeToken = loc(1);
 | 
			
		||||
  node->identifierToken = loc(2);
 | 
			
		||||
  sym(1).Node = node;
 | 
			
		||||
} break;
 | 
			
		||||
@@ -1100,6 +1101,7 @@ case $rule_number: {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loc(1).length = lexer->tokenLength();
 | 
			
		||||
  yylloc = loc(1); // adjust the location of the current token
 | 
			
		||||
 | 
			
		||||
  AST::RegExpLiteral *node = new (pool) AST::RegExpLiteral(
 | 
			
		||||
    driver->newStringRef(lexer->regExpPattern()), lexer->regExpFlags());
 | 
			
		||||
@@ -1121,6 +1123,7 @@ case $rule_number: {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loc(1).length = lexer->tokenLength();
 | 
			
		||||
  yylloc = loc(1); // adjust the location of the current token
 | 
			
		||||
 | 
			
		||||
  AST::RegExpLiteral *node = new (pool) AST::RegExpLiteral(
 | 
			
		||||
    driver->newStringRef(lexer->regExpPattern()), lexer->regExpFlags());
 | 
			
		||||
@@ -2810,6 +2813,8 @@ case $rule_number: {
 | 
			
		||||
} break;
 | 
			
		||||
./
 | 
			
		||||
 | 
			
		||||
Program: Empty ;
 | 
			
		||||
 | 
			
		||||
Program: SourceElements ;
 | 
			
		||||
/.
 | 
			
		||||
case $rule_number: {
 | 
			
		||||
 
 | 
			
		||||
@@ -799,31 +799,6 @@ void UiProgram::accept0(Visitor *visitor)
 | 
			
		||||
    visitor->endVisit(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UiSignature::accept0(Visitor *visitor)
 | 
			
		||||
{
 | 
			
		||||
    if (visitor->visit(this)) {
 | 
			
		||||
        accept(formals, visitor);
 | 
			
		||||
    }
 | 
			
		||||
    visitor->endVisit(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UiFormalList::accept0(Visitor *visitor)
 | 
			
		||||
{
 | 
			
		||||
    if (visitor->visit(this)) {
 | 
			
		||||
        for (UiFormalList *it = this; it; it = it->next) {
 | 
			
		||||
            accept(it->formal, visitor);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    visitor->endVisit(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UiFormal::accept0(Visitor *visitor)
 | 
			
		||||
{
 | 
			
		||||
    if (visitor->visit(this)) {
 | 
			
		||||
    }
 | 
			
		||||
    visitor->endVisit(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UiPublicMember::accept0(Visitor *visitor)
 | 
			
		||||
{
 | 
			
		||||
    if (visitor->visit(this)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -207,10 +207,7 @@ public:
 | 
			
		||||
        Kind_UiPublicMember,
 | 
			
		||||
        Kind_UiQualifiedId,
 | 
			
		||||
        Kind_UiScriptBinding,
 | 
			
		||||
        Kind_UiSourceElement,
 | 
			
		||||
        Kind_UiFormal,
 | 
			
		||||
        Kind_UiFormalList,
 | 
			
		||||
        Kind_UiSignature
 | 
			
		||||
        Kind_UiSourceElement
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    inline Node()
 | 
			
		||||
@@ -233,6 +230,8 @@ public:
 | 
			
		||||
    { return accept(node, visitor); } // ### remove
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor) = 0;
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const = 0;
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const = 0;
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    int kind;
 | 
			
		||||
@@ -244,9 +243,6 @@ public:
 | 
			
		||||
    ExpressionNode() {}
 | 
			
		||||
 | 
			
		||||
    virtual ExpressionNode *expressionCast();
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const = 0;
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT Statement: public Node
 | 
			
		||||
@@ -255,92 +251,6 @@ public:
 | 
			
		||||
    Statement() {}
 | 
			
		||||
 | 
			
		||||
    virtual Statement *statementCast();
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const = 0;
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiFormal: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(UiFormal)
 | 
			
		||||
 | 
			
		||||
    UiFormal(const QStringRef &name, const QStringRef &alias)
 | 
			
		||||
      : name(name), alias(alias)
 | 
			
		||||
    { }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    QStringRef name;
 | 
			
		||||
    QStringRef alias;
 | 
			
		||||
    SourceLocation identifierToken;
 | 
			
		||||
    SourceLocation asToken;
 | 
			
		||||
    SourceLocation aliasToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiFormalList: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(UiFormalList)
 | 
			
		||||
 | 
			
		||||
    UiFormalList(UiFormal *formal)
 | 
			
		||||
            : formal(formal), next(this) {}
 | 
			
		||||
 | 
			
		||||
    UiFormalList(UiFormalList *previous, UiFormal *formal)
 | 
			
		||||
            : formal(formal)
 | 
			
		||||
    {
 | 
			
		||||
        next = previous->next;
 | 
			
		||||
        previous->next = this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    UiFormalList *finish()
 | 
			
		||||
    {
 | 
			
		||||
        UiFormalList *head = next;
 | 
			
		||||
        next = 0;
 | 
			
		||||
        return head;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiFormal *formal;
 | 
			
		||||
    UiFormalList *next;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiSignature: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(UiSignature)
 | 
			
		||||
 | 
			
		||||
    UiSignature(UiFormalList *formals = 0)
 | 
			
		||||
        : formals(formals)
 | 
			
		||||
    { }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceLocation lparenToken;
 | 
			
		||||
    UiFormalList *formals;
 | 
			
		||||
    SourceLocation rparenToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT NestedExpression: public ExpressionNode
 | 
			
		||||
@@ -585,6 +495,41 @@ public:
 | 
			
		||||
    SourceLocation rbraceToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT Elision: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(Elision)
 | 
			
		||||
 | 
			
		||||
    Elision():
 | 
			
		||||
        next (this) { kind = K; }
 | 
			
		||||
 | 
			
		||||
    Elision(Elision *previous)
 | 
			
		||||
    {
 | 
			
		||||
        kind = K;
 | 
			
		||||
        next = previous->next;
 | 
			
		||||
        previous->next = this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return commaToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : commaToken; }
 | 
			
		||||
 | 
			
		||||
    inline Elision *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        Elision *front = next;
 | 
			
		||||
        next = 0;
 | 
			
		||||
        return front;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Elision *next;
 | 
			
		||||
    SourceLocation commaToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT ElementList: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -611,6 +556,20 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (elision)
 | 
			
		||||
            return elision->firstSourceLocation();
 | 
			
		||||
        return expression->firstSourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (next)
 | 
			
		||||
            return next->lastSourceLocation();
 | 
			
		||||
        return expression->lastSourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Elision *elision;
 | 
			
		||||
    ExpressionNode *expression;
 | 
			
		||||
@@ -618,33 +577,21 @@ public:
 | 
			
		||||
    SourceLocation commaToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT Elision: public Node
 | 
			
		||||
class QML_PARSER_EXPORT PropertyName: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(Elision)
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(PropertyName)
 | 
			
		||||
 | 
			
		||||
    Elision():
 | 
			
		||||
        next (this) { kind = K; }
 | 
			
		||||
    PropertyName() { kind = K; }
 | 
			
		||||
 | 
			
		||||
    Elision(Elision *previous)
 | 
			
		||||
    {
 | 
			
		||||
        kind = K;
 | 
			
		||||
        next = previous->next;
 | 
			
		||||
        previous->next = this;
 | 
			
		||||
    }
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return propertyNameToken; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    inline Elision *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        Elision *front = next;
 | 
			
		||||
        next = 0;
 | 
			
		||||
        return front;
 | 
			
		||||
    }
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return propertyNameToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Elision *next;
 | 
			
		||||
    SourceLocation commaToken;
 | 
			
		||||
    SourceLocation propertyNameToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT PropertyNameAndValueList: public Node
 | 
			
		||||
@@ -666,6 +613,16 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return name->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (next)
 | 
			
		||||
            return next->lastSourceLocation();
 | 
			
		||||
        return value->lastSourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline PropertyNameAndValueList *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        PropertyNameAndValueList *front = next;
 | 
			
		||||
@@ -681,17 +638,6 @@ public:
 | 
			
		||||
    SourceLocation commaToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT PropertyName: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(PropertyName)
 | 
			
		||||
 | 
			
		||||
    PropertyName() { kind = K; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceLocation propertyNameToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT IdentifierPropertyName: public PropertyName
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -871,6 +817,16 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return expression->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (next)
 | 
			
		||||
            return next->lastSourceLocation();
 | 
			
		||||
        return expression->lastSourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline ArgumentList *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        ArgumentList *front = next;
 | 
			
		||||
@@ -1229,6 +1185,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return statement->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : statement->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    inline StatementList *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        StatementList *front = next;
 | 
			
		||||
@@ -1275,6 +1237,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return identifierToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return expression ? expression->lastSourceLocation() : identifierToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    QStringRef name;
 | 
			
		||||
    ExpressionNode *expression;
 | 
			
		||||
@@ -1301,6 +1269,16 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return declaration->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (next)
 | 
			
		||||
            return next->lastSourceLocation();
 | 
			
		||||
        return declaration->lastSourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline VariableDeclarationList *finish (bool readOnly)
 | 
			
		||||
    {
 | 
			
		||||
        VariableDeclarationList *front = next;
 | 
			
		||||
@@ -1661,6 +1639,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return lbraceToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return rbraceToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    CaseClauses *clauses;
 | 
			
		||||
    DefaultClause *defaultClause;
 | 
			
		||||
@@ -1694,6 +1678,30 @@ public:
 | 
			
		||||
    SourceLocation rparenToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT CaseClause: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(CaseClause)
 | 
			
		||||
 | 
			
		||||
    CaseClause(ExpressionNode *e, StatementList *slist):
 | 
			
		||||
        expression (e), statements (slist)
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return caseToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return statements ? statements->lastSourceLocation() : colonToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    ExpressionNode *expression;
 | 
			
		||||
    StatementList *statements;
 | 
			
		||||
    SourceLocation caseToken;
 | 
			
		||||
    SourceLocation colonToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT CaseClauses: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -1713,6 +1721,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return clause->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : clause->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    inline CaseClauses *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        CaseClauses *front = next;
 | 
			
		||||
@@ -1725,24 +1739,6 @@ public:
 | 
			
		||||
    CaseClauses *next;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT CaseClause: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(CaseClause)
 | 
			
		||||
 | 
			
		||||
    CaseClause(ExpressionNode *e, StatementList *slist):
 | 
			
		||||
        expression (e), statements (slist)
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    ExpressionNode *expression;
 | 
			
		||||
    StatementList *statements;
 | 
			
		||||
    SourceLocation caseToken;
 | 
			
		||||
    SourceLocation colonToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT DefaultClause: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -1754,6 +1750,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return defaultToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return statements ? statements->lastSourceLocation() : colonToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    StatementList *statements;
 | 
			
		||||
    SourceLocation defaultToken;
 | 
			
		||||
@@ -1817,6 +1819,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return catchToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return statement->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    QStringRef name;
 | 
			
		||||
    Block *statement;
 | 
			
		||||
@@ -1837,6 +1845,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return finallyToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return statement ? statement->lastSourceLocation() : finallyToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Block *statement;
 | 
			
		||||
    SourceLocation finallyToken;
 | 
			
		||||
@@ -1941,6 +1955,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return identifierToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : identifierToken; }
 | 
			
		||||
 | 
			
		||||
    inline FormalParameterList *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        FormalParameterList *front = next;
 | 
			
		||||
@@ -1955,34 +1975,13 @@ public:
 | 
			
		||||
    SourceLocation identifierToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT FunctionBody: public Node
 | 
			
		||||
class QML_PARSER_EXPORT SourceElement: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(FunctionBody)
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(SourceElement)
 | 
			
		||||
 | 
			
		||||
    FunctionBody(SourceElements *elts):
 | 
			
		||||
        elements (elts)
 | 
			
		||||
    inline SourceElement()
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceElements *elements;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT Program: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(Program)
 | 
			
		||||
 | 
			
		||||
    Program(SourceElements *elts):
 | 
			
		||||
        elements (elts)
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceElements *elements;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT SourceElements: public Node
 | 
			
		||||
@@ -2004,6 +2003,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return element->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : element->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    inline SourceElements *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        SourceElements *front = next;
 | 
			
		||||
@@ -2016,13 +2021,46 @@ public:
 | 
			
		||||
    SourceElements *next;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT SourceElement: public Node
 | 
			
		||||
class QML_PARSER_EXPORT FunctionBody: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(SourceElement)
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(FunctionBody)
 | 
			
		||||
 | 
			
		||||
    inline SourceElement()
 | 
			
		||||
    FunctionBody(SourceElements *elts):
 | 
			
		||||
        elements (elts)
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return elements ? elements->firstSourceLocation() : SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return elements ? elements->lastSourceLocation() : SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceElements *elements;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT Program: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(Program)
 | 
			
		||||
 | 
			
		||||
    Program(SourceElements *elts):
 | 
			
		||||
        elements (elts)
 | 
			
		||||
        { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return elements ? elements->firstSourceLocation() : SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return elements ? elements->lastSourceLocation() : SourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceElements *elements;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT FunctionSourceElement: public SourceElement
 | 
			
		||||
@@ -2036,6 +2074,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return declaration->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return declaration->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    FunctionDeclaration *declaration;
 | 
			
		||||
};
 | 
			
		||||
@@ -2051,6 +2095,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return statement->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return statement->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Statement *statement;
 | 
			
		||||
};
 | 
			
		||||
@@ -2076,22 +2126,6 @@ public:
 | 
			
		||||
    SourceLocation semicolonToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiProgram: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(UiProgram)
 | 
			
		||||
 | 
			
		||||
    UiProgram(UiImportList *imports, UiObjectMemberList *members)
 | 
			
		||||
        : imports(imports), members(members)
 | 
			
		||||
    { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiImportList *imports;
 | 
			
		||||
    UiObjectMemberList *members;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiQualifiedId: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -2118,6 +2152,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return identifierToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : identifierToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiQualifiedId *next;
 | 
			
		||||
    QStringRef name;
 | 
			
		||||
@@ -2137,14 +2177,14 @@ public:
 | 
			
		||||
        : importUri(uri)
 | 
			
		||||
    { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return importToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return semicolonToken; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    QStringRef fileName;
 | 
			
		||||
    UiQualifiedId *importUri;
 | 
			
		||||
@@ -2175,21 +2215,6 @@ public:
 | 
			
		||||
        previous->next = this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (import) return import->firstSourceLocation();
 | 
			
		||||
        else return SourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        for (const UiImportList *it = this; it; it = it->next)
 | 
			
		||||
            if (!it->next && it->import)
 | 
			
		||||
                return it->import->lastSourceLocation();
 | 
			
		||||
 | 
			
		||||
        return SourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    UiImportList *finish()
 | 
			
		||||
    {
 | 
			
		||||
        UiImportList *head = next;
 | 
			
		||||
@@ -2199,6 +2224,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return import->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : import->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiImport *import;
 | 
			
		||||
    UiImportList *next;
 | 
			
		||||
@@ -2232,6 +2263,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return member->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : member->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    UiObjectMemberList *finish()
 | 
			
		||||
    {
 | 
			
		||||
        UiObjectMemberList *head = next;
 | 
			
		||||
@@ -2244,6 +2281,40 @@ public:
 | 
			
		||||
    UiObjectMember *member;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiProgram: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    QMLJS_DECLARE_AST_NODE(UiProgram)
 | 
			
		||||
 | 
			
		||||
    UiProgram(UiImportList *imports, UiObjectMemberList *members)
 | 
			
		||||
        : imports(imports), members(members)
 | 
			
		||||
    { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (imports)
 | 
			
		||||
            return imports->firstSourceLocation();
 | 
			
		||||
        else if (members)
 | 
			
		||||
            return members->firstSourceLocation();
 | 
			
		||||
        return SourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
        if (members)
 | 
			
		||||
            return members->lastSourceLocation();
 | 
			
		||||
        else if (imports)
 | 
			
		||||
            return imports->lastSourceLocation();
 | 
			
		||||
        return SourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiImportList *imports;
 | 
			
		||||
    UiObjectMemberList *members;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class QML_PARSER_EXPORT UiArrayMemberList: public Node
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
@@ -2263,6 +2334,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return member->firstSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : member->lastSourceLocation(); }
 | 
			
		||||
 | 
			
		||||
    UiArrayMemberList *finish()
 | 
			
		||||
    {
 | 
			
		||||
        UiArrayMemberList *head = next;
 | 
			
		||||
@@ -2287,6 +2364,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return lbraceToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return rbraceToken; }
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    SourceLocation lbraceToken;
 | 
			
		||||
    UiObjectMemberList *members;
 | 
			
		||||
@@ -2312,6 +2395,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *) {}
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return propertyTypeToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return next ? next->lastSourceLocation() : identifierToken; }
 | 
			
		||||
 | 
			
		||||
    inline UiParameterList *finish ()
 | 
			
		||||
    {
 | 
			
		||||
        UiParameterList *front = next;
 | 
			
		||||
@@ -2324,6 +2413,7 @@ public:
 | 
			
		||||
    QStringRef name;
 | 
			
		||||
    UiParameterList *next;
 | 
			
		||||
    SourceLocation commaToken;
 | 
			
		||||
    SourceLocation propertyTypeToken;
 | 
			
		||||
    SourceLocation identifierToken;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -2343,6 +2433,8 @@ public:
 | 
			
		||||
        : type(Property), memberType(memberType), name(name), statement(statement), binding(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
 | 
			
		||||
    { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    {
 | 
			
		||||
      if (defaultToken.isValid())
 | 
			
		||||
@@ -2363,8 +2455,6 @@ public:
 | 
			
		||||
      return semicolonToken;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    enum { Signal, Property } type;
 | 
			
		||||
    QStringRef typeModifier;
 | 
			
		||||
@@ -2395,14 +2485,14 @@ public:
 | 
			
		||||
        : qualifiedTypeNameId(qualifiedTypeNameId), initializer(initializer)
 | 
			
		||||
    { kind = K; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation firstSourceLocation() const
 | 
			
		||||
    { return qualifiedTypeNameId->identifierToken; }
 | 
			
		||||
 | 
			
		||||
    virtual SourceLocation lastSourceLocation() const
 | 
			
		||||
    { return initializer->rbraceToken; }
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiQualifiedId *qualifiedTypeNameId;
 | 
			
		||||
    UiObjectInitializer *initializer;
 | 
			
		||||
@@ -2437,9 +2527,9 @@ public:
 | 
			
		||||
      return SourceLocation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    Node *sourceElement;
 | 
			
		||||
};
 | 
			
		||||
@@ -2471,6 +2561,7 @@ public:
 | 
			
		||||
 | 
			
		||||
    virtual void accept0(Visitor *visitor);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// attributes
 | 
			
		||||
    UiQualifiedId *qualifiedId;
 | 
			
		||||
    UiQualifiedId *qualifiedTypeNameId;
 | 
			
		||||
 
 | 
			
		||||
@@ -169,9 +169,6 @@ class UiObjectMember;
 | 
			
		||||
class UiObjectMemberList;
 | 
			
		||||
class UiArrayMemberList;
 | 
			
		||||
class UiQualifiedId;
 | 
			
		||||
class UiFormalList;
 | 
			
		||||
class UiFormal;
 | 
			
		||||
class UiSignature;
 | 
			
		||||
 | 
			
		||||
} } // namespace AST
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -74,9 +74,6 @@ public:
 | 
			
		||||
    virtual bool visit(UiObjectMemberList *) { return true; }
 | 
			
		||||
    virtual bool visit(UiArrayMemberList *) { return true; }
 | 
			
		||||
    virtual bool visit(UiQualifiedId *) { return true; }
 | 
			
		||||
    virtual bool visit(UiSignature *) { return true; }
 | 
			
		||||
    virtual bool visit(UiFormalList *) { return true; }
 | 
			
		||||
    virtual bool visit(UiFormal *) { return true; }
 | 
			
		||||
 | 
			
		||||
    virtual void endVisit(UiProgram *) {}
 | 
			
		||||
    virtual void endVisit(UiImportList *) {}
 | 
			
		||||
@@ -91,9 +88,6 @@ public:
 | 
			
		||||
    virtual void endVisit(UiObjectMemberList *) {}
 | 
			
		||||
    virtual void endVisit(UiArrayMemberList *) {}
 | 
			
		||||
    virtual void endVisit(UiQualifiedId *) {}
 | 
			
		||||
    virtual void endVisit(UiSignature *) {}
 | 
			
		||||
    virtual void endVisit(UiFormalList *) {}
 | 
			
		||||
    virtual void endVisit(UiFormal *) {}
 | 
			
		||||
 | 
			
		||||
    // QmlJS
 | 
			
		||||
    virtual bool visit(ThisExpression *) { return true; }
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,12 @@
 | 
			
		||||
#else // !QT_CREATOR
 | 
			
		||||
#  define QT_QML_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
 | 
			
		||||
#  define QT_QML_END_NAMESPACE QT_END_NAMESPACE
 | 
			
		||||
#  define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT
 | 
			
		||||
#  if defined(QT_BUILD_QMLDEVTOOLS_LIB) || defined(QT_QMLDEVTOOLS_LIB)
 | 
			
		||||
     // QmlDevTools is a static library
 | 
			
		||||
#    define QML_PARSER_EXPORT
 | 
			
		||||
#  else
 | 
			
		||||
#    define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT
 | 
			
		||||
#  endif
 | 
			
		||||
#endif // QT_CREATOR
 | 
			
		||||
 | 
			
		||||
#endif // QMLJSGLOBAL_P_H
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -157,15 +157,15 @@ public:
 | 
			
		||||
    T_XOR = 79,
 | 
			
		||||
    T_XOR_EQ = 80,
 | 
			
		||||
 | 
			
		||||
    ACCEPT_STATE = 640,
 | 
			
		||||
    RULE_COUNT = 345,
 | 
			
		||||
    STATE_COUNT = 641,
 | 
			
		||||
    ACCEPT_STATE = 644,
 | 
			
		||||
    RULE_COUNT = 349,
 | 
			
		||||
    STATE_COUNT = 645,
 | 
			
		||||
    TERMINAL_COUNT = 102,
 | 
			
		||||
    NON_TERMINAL_COUNT = 107,
 | 
			
		||||
 | 
			
		||||
    GOTO_INDEX_OFFSET = 641,
 | 
			
		||||
    GOTO_INFO_OFFSET = 2818,
 | 
			
		||||
    GOTO_CHECK_OFFSET = 2818
 | 
			
		||||
    GOTO_INDEX_OFFSET = 645,
 | 
			
		||||
    GOTO_INFO_OFFSET = 2807,
 | 
			
		||||
    GOTO_CHECK_OFFSET = 2807
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  static const char  *const    spell [];
 | 
			
		||||
 
 | 
			
		||||
@@ -97,13 +97,18 @@ Lexer::Lexer(Engine *engine)
 | 
			
		||||
    , _restrictedKeyword(false)
 | 
			
		||||
    , _terminator(false)
 | 
			
		||||
    , _followsClosingBrace(false)
 | 
			
		||||
    , _delimited(false)
 | 
			
		||||
    , _delimited(true)
 | 
			
		||||
    , _qmlMode(true)
 | 
			
		||||
{
 | 
			
		||||
    if (engine)
 | 
			
		||||
        engine->setLexer(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Lexer::qmlMode() const
 | 
			
		||||
{
 | 
			
		||||
    return _qmlMode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString Lexer::code() const
 | 
			
		||||
{
 | 
			
		||||
    return _code;
 | 
			
		||||
@@ -147,7 +152,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode)
 | 
			
		||||
    _restrictedKeyword = false;
 | 
			
		||||
    _terminator = false;
 | 
			
		||||
    _followsClosingBrace = false;
 | 
			
		||||
    _delimited = false;
 | 
			
		||||
    _delimited = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lexer::scanChar()
 | 
			
		||||
@@ -176,6 +181,7 @@ int Lexer::lex()
 | 
			
		||||
    switch (_tokenKind) {
 | 
			
		||||
    case T_LBRACE:
 | 
			
		||||
    case T_SEMICOLON:
 | 
			
		||||
    case T_COLON:
 | 
			
		||||
        _delimited = true;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -136,6 +136,8 @@ public:
 | 
			
		||||
public:
 | 
			
		||||
    Lexer(Engine *engine);
 | 
			
		||||
 | 
			
		||||
    bool qmlMode() const;
 | 
			
		||||
 | 
			
		||||
    QString code() const;
 | 
			
		||||
    void setCode(const QString &code, int lineno, bool qmlMode = true);
 | 
			
		||||
 | 
			
		||||
@@ -174,12 +176,13 @@ public:
 | 
			
		||||
        BalancedParentheses
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    int classify(const QChar *s, int n, bool qmlMode);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    inline void scanChar();
 | 
			
		||||
    int scanToken();
 | 
			
		||||
 | 
			
		||||
    int classify(const QChar *s, int n, bool qmlMode);
 | 
			
		||||
 | 
			
		||||
    bool isLineTerminator() const;
 | 
			
		||||
    static bool isIdentLetter(QChar c);
 | 
			
		||||
    static bool isDecimalDigit(ushort c);
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -108,9 +108,6 @@ public:
 | 
			
		||||
      AST::UiObjectMemberList *UiObjectMemberList;
 | 
			
		||||
      AST::UiArrayMemberList *UiArrayMemberList;
 | 
			
		||||
      AST::UiQualifiedId *UiQualifiedId;
 | 
			
		||||
      AST::UiSignature *UiSignature;
 | 
			
		||||
      AST::UiFormalList *UiFormalList;
 | 
			
		||||
      AST::UiFormal *UiFormal;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
@@ -231,9 +228,9 @@ protected:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define J_SCRIPT_REGEXPLITERAL_RULE1 76
 | 
			
		||||
#define J_SCRIPT_REGEXPLITERAL_RULE1 79
 | 
			
		||||
 | 
			
		||||
#define J_SCRIPT_REGEXPLITERAL_RULE2 77
 | 
			
		||||
#define J_SCRIPT_REGEXPLITERAL_RULE2 80
 | 
			
		||||
 | 
			
		||||
QT_QML_END_NAMESPACE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -212,21 +212,6 @@ bool Evaluate::visit(AST::UiQualifiedId *ast)
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Evaluate::visit(AST::UiSignature *)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Evaluate::visit(AST::UiFormalList *)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Evaluate::visit(AST::UiFormal *)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Evaluate::visit(AST::ThisExpression *)
 | 
			
		||||
{
 | 
			
		||||
    return false;
 | 
			
		||||
 
 | 
			
		||||
@@ -79,9 +79,6 @@ protected:
 | 
			
		||||
    virtual bool visit(AST::UiObjectMemberList *ast);
 | 
			
		||||
    virtual bool visit(AST::UiArrayMemberList *ast);
 | 
			
		||||
    virtual bool visit(AST::UiQualifiedId *ast);
 | 
			
		||||
    virtual bool visit(AST::UiSignature *ast);
 | 
			
		||||
    virtual bool visit(AST::UiFormalList *ast);
 | 
			
		||||
    virtual bool visit(AST::UiFormal *ast);
 | 
			
		||||
 | 
			
		||||
    // QmlJS
 | 
			
		||||
    virtual bool visit(AST::ThisExpression *ast);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user