forked from qt-creator/qt-creator
QmlJs: sync qmljs parser
The last version of the grammar contains some constructs that the code model needs to know. Task-number: QTCREATORBUG-17842 Change-Id: I6250f96431acc05b19f3fd1b6cc268a07485cf0f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -1852,7 +1852,7 @@ ASTObjectValue::ASTObjectValue(UiQualifiedId *typeName,
|
||||
for (UiObjectMemberList *it = m_initializer->members; it; it = it->next) {
|
||||
UiObjectMember *member = it->member;
|
||||
if (UiPublicMember *def = cast<UiPublicMember *>(member)) {
|
||||
if (def->type == UiPublicMember::Property && !def->name.isEmpty() && !def->memberType.isEmpty()) {
|
||||
if (def->type == UiPublicMember::Property && !def->name.isEmpty() && def->isValid()) {
|
||||
ASTPropertyReference *ref = new ASTPropertyReference(def, m_doc, valueOwner);
|
||||
m_properties.append(ref);
|
||||
if (def->defaultToken.isValid())
|
||||
@@ -2117,10 +2117,10 @@ bool ASTPropertyReference::getSourceLocation(QString *fileName, int *line, int *
|
||||
const Value *ASTPropertyReference::value(ReferenceContext *referenceContext) const
|
||||
{
|
||||
if (m_ast->statement
|
||||
&& (m_ast->memberType.isEmpty()
|
||||
|| m_ast->memberType == QLatin1String("variant")
|
||||
|| m_ast->memberType == QLatin1String("var")
|
||||
|| m_ast->memberType == QLatin1String("alias"))) {
|
||||
&& (!m_ast->isValid()
|
||||
|| m_ast->memberTypeName() == QLatin1String("variant")
|
||||
|| m_ast->memberTypeName() == QLatin1String("var")
|
||||
|| m_ast->memberTypeName() == QLatin1String("alias"))) {
|
||||
|
||||
// Adjust the context for the current location - expensive!
|
||||
// ### Improve efficiency by caching the 'use chain' constructed in ScopeBuilder.
|
||||
@@ -2136,7 +2136,7 @@ const Value *ASTPropertyReference::value(ReferenceContext *referenceContext) con
|
||||
return evaluator(m_ast->statement);
|
||||
}
|
||||
|
||||
const QString memberType = m_ast->memberType.toString();
|
||||
const QString memberType = m_ast->memberTypeName().toString();
|
||||
|
||||
const Value *builtin = valueOwner()->defaultValueForBuiltinType(memberType);
|
||||
if (!builtin->asUndefinedValue())
|
||||
@@ -2160,7 +2160,7 @@ ASTSignal::ASTSignal(UiPublicMember *ast, const Document *doc, ValueOwner *value
|
||||
ObjectValue *v = valueOwner->newObject(/*prototype=*/0);
|
||||
for (UiParameterList *it = ast->parameters; it; it = it->next) {
|
||||
if (!it->name.isEmpty())
|
||||
v->setMember(it->name.toString(), valueOwner->defaultValueForBuiltinType(it->type.toString()));
|
||||
v->setMember(it->name.toString(), valueOwner->defaultValueForBuiltinType(it->type->name.toString()));
|
||||
}
|
||||
m_bodyScope = v;
|
||||
}
|
||||
@@ -2187,9 +2187,9 @@ const Value *ASTSignal::argument(int index) const
|
||||
UiParameterList *param = m_ast->parameters;
|
||||
for (int i = 0; param && i < index; ++i)
|
||||
param = param->next;
|
||||
if (!param || param->type.isEmpty())
|
||||
if (!param || param->type->name.isEmpty())
|
||||
return valueOwner()->unknownValue();
|
||||
return valueOwner()->defaultValueForBuiltinType(param->type.toString());
|
||||
return valueOwner()->defaultValueForBuiltinType(param->type->name.toString());
|
||||
}
|
||||
|
||||
QString ASTSignal::argumentName(int index) const
|
||||
|
||||
Reference in New Issue
Block a user