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:
Marco Benelli
2018-10-16 15:32:58 +02:00
parent fe8a372773
commit 4646acad0d
46 changed files with 10604 additions and 5872 deletions

View File

@@ -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;
}