forked from qt-creator/qt-creator
qmljs: update parser
Update the qtcreator qmljs parser to the one of Qt 5.12. It supports EcmaScript 7. Task-number: QTCREATORBUG-20341 Change-Id: I0d1cff71402ba17e22cde6b46c65614e162280de Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
This commit is contained in:
@@ -531,7 +531,6 @@ protected:
|
||||
bool visit(UiPragma *ast) override
|
||||
{
|
||||
out("pragma ", ast->pragmaToken);
|
||||
accept(ast->pragmaType);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -666,20 +665,16 @@ protected:
|
||||
bool visit(NumericLiteral *ast) override { out(ast->literalToken); return true; }
|
||||
bool visit(RegExpLiteral *ast) override { out(ast->literalToken); return true; }
|
||||
|
||||
bool visit(ArrayLiteral *ast) override
|
||||
bool visit(ArrayPattern *ast) override
|
||||
{
|
||||
out(ast->lbracketToken);
|
||||
if (ast->elements)
|
||||
accept(ast->elements);
|
||||
if (ast->elements && ast->elision)
|
||||
out(", ", ast->commaToken);
|
||||
if (ast->elision)
|
||||
accept(ast->elision);
|
||||
out(ast->rbracketToken);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(ObjectLiteral *ast) override
|
||||
bool visit(ObjectPattern *ast) override
|
||||
{
|
||||
out(ast->lbraceToken);
|
||||
lnAcceptIndented(ast->properties);
|
||||
@@ -688,55 +683,57 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(ElementList *ast) override
|
||||
bool visit(PatternElementList *ast) override
|
||||
{
|
||||
for (ElementList *it = ast; it; it = it->next) {
|
||||
for (PatternElementList *it = ast; it; it = it->next) {
|
||||
if (it->elision)
|
||||
accept(it->elision);
|
||||
if (it->elision && it->expression)
|
||||
if (it->elision && it->element)
|
||||
out(", ");
|
||||
if (it->expression)
|
||||
accept(it->expression);
|
||||
if (it->element)
|
||||
accept(it->element);
|
||||
if (it->next)
|
||||
out(", ", ast->commaToken);
|
||||
out(", ");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(PropertyAssignmentList *ast) override
|
||||
bool visit(PatternPropertyList *ast) override
|
||||
{
|
||||
for (PropertyAssignmentList *it = ast; it; it = it->next) {
|
||||
PropertyNameAndValue *assignment = AST::cast<PropertyNameAndValue *>(it->assignment);
|
||||
for (PatternPropertyList *it = ast; it; it = it->next) {
|
||||
PatternProperty *assignment = AST::cast<PatternProperty *>(it->property);
|
||||
if (assignment) {
|
||||
out("\"");
|
||||
accept(assignment->name);
|
||||
out("\"");
|
||||
out(": ", assignment->colonToken);
|
||||
accept(assignment->value);
|
||||
accept(assignment->initializer);
|
||||
if (it->next) {
|
||||
out(",", ast->commaToken); // always invalid?
|
||||
out(","); // always invalid?
|
||||
newLine();
|
||||
}
|
||||
continue;
|
||||
}
|
||||
PropertyGetterSetter *getterSetter = AST::cast<PropertyGetterSetter *>(it->assignment);
|
||||
if (getterSetter) {
|
||||
switch (getterSetter->type) {
|
||||
case PropertyGetterSetter::Getter:
|
||||
PatternPropertyList *getterSetter = AST::cast<PatternPropertyList *>(it->next);
|
||||
if (getterSetter->property) {
|
||||
switch (getterSetter->property->type) {
|
||||
case PatternElement::Getter:
|
||||
out("get");
|
||||
break;
|
||||
case PropertyGetterSetter::Setter:
|
||||
case PatternElement::Setter:
|
||||
out("set");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
accept(getterSetter->name);
|
||||
out("(", getterSetter->lparenToken);
|
||||
accept(getterSetter->formals);
|
||||
out("(", getterSetter->rparenToken);
|
||||
out(" {", getterSetter->lbraceToken);
|
||||
accept(getterSetter->functionBody);
|
||||
out(" }", getterSetter->rbraceToken);
|
||||
accept(getterSetter->property->name);
|
||||
out("(");
|
||||
//accept(getterSetter->formals); // TODO
|
||||
out(")");
|
||||
out(" {");
|
||||
//accept(getterSetter->functionBody); // TODO
|
||||
out(" }");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -922,12 +919,15 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(VariableDeclaration *ast) override
|
||||
bool visit(PatternElement *ast) override
|
||||
{
|
||||
if (!ast->isVariableDeclaration())
|
||||
return false;
|
||||
|
||||
out(ast->identifierToken);
|
||||
if (ast->expression) {
|
||||
if (ast->initializer) {
|
||||
out(" = ");
|
||||
accept(ast->expression);
|
||||
accept(ast->initializer);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -996,45 +996,13 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(LocalForStatement *ast) override
|
||||
{
|
||||
out(ast->forToken);
|
||||
out(" ");
|
||||
out(ast->lparenToken);
|
||||
out(ast->varToken);
|
||||
out(" ");
|
||||
accept(ast->declarations);
|
||||
out("; ", ast->firstSemicolonToken);
|
||||
accept(ast->condition);
|
||||
out("; ", ast->secondSemicolonToken);
|
||||
accept(ast->expression);
|
||||
out(")", ast->rparenToken);
|
||||
acceptBlockOrIndented(ast->statement);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(ForEachStatement *ast) override
|
||||
{
|
||||
out(ast->forToken);
|
||||
out(" ");
|
||||
out(ast->lparenToken);
|
||||
accept(ast->initialiser);
|
||||
out(" in ", ast->inToken);
|
||||
accept(ast->expression);
|
||||
out(ast->rparenToken);
|
||||
acceptBlockOrIndented(ast->statement);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(LocalForEachStatement *ast) override
|
||||
{
|
||||
out(ast->forToken);
|
||||
out(" ");
|
||||
out(ast->lparenToken);
|
||||
out(ast->varToken);
|
||||
out(" ");
|
||||
accept(ast->declaration);
|
||||
out(" in ", ast->inToken);
|
||||
accept(ast->lhs);
|
||||
out(" in ");
|
||||
accept(ast->expression);
|
||||
out(ast->rparenToken);
|
||||
acceptBlockOrIndented(ast->statement);
|
||||
@@ -1245,12 +1213,6 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(UiQualifiedPragmaId *ast) override
|
||||
{
|
||||
out(ast->identifierToken);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(Elision *ast) override
|
||||
{
|
||||
for (Elision *it = ast; it; it = it->next) {
|
||||
@@ -1288,16 +1250,6 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(SourceElements *ast) override
|
||||
{
|
||||
for (SourceElements *it = ast; it; it = it->next) {
|
||||
accept(it->element);
|
||||
if (it->next)
|
||||
newLine();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visit(VariableDeclarationList *ast) override
|
||||
{
|
||||
for (VariableDeclarationList *it = ast; it; it = it->next) {
|
||||
@@ -1321,9 +1273,7 @@ protected:
|
||||
bool visit(FormalParameterList *ast) override
|
||||
{
|
||||
for (FormalParameterList *it = ast; it; it = it->next) {
|
||||
if (it->commaToken.isValid())
|
||||
out(", ", it->commaToken);
|
||||
out(it->identifierToken);
|
||||
out(it->element->bindingIdentifier.toString()); // TODO
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user