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

@@ -306,14 +306,14 @@ bool Bind::visit(UiArrayBinding *)
return true;
}
bool Bind::visit(VariableDeclaration *ast)
bool Bind::visit(PatternElement *ast)
{
if (ast->name.isEmpty())
if (ast->bindingIdentifier.isEmpty() || !ast->isVariableDeclaration())
return false;
ASTVariableReference *ref = new ASTVariableReference(ast, _doc, &_valueOwner);
if (_currentObjectValue)
_currentObjectValue->setMember(ast->name.toString(), ref);
_currentObjectValue->setMember(ast->bindingIdentifier, ref);
return true;
}
@@ -337,8 +337,8 @@ bool Bind::visit(FunctionExpression *ast)
// 1. Function formal arguments
for (FormalParameterList *it = ast->formals; it; it = it->next) {
if (!it->name.isEmpty())
functionScope->setMember(it->name.toString(), _valueOwner.unknownValue());
if (!it->element->bindingIdentifier.isEmpty())
functionScope->setMember(it->element->bindingIdentifier, _valueOwner.unknownValue());
}
// 2. Functions defined inside the function body