ss.value = output->indexForString(script);
ss.scope = prop->scriptStringScope;
// ss.bindingId = rewriteBinding(script, prop->name());
- ss.bindingId = rewriteBinding(script, QString()); // XXX
+ ss.bindingId = rewriteBinding(prop->values.first()->value, QString()); // XXX
ss.line = prop->location.start.line;
output->addInstruction(ss);
}
// similar to logic of completeComponentBuild, but also sticks data
// into primitives at the end
-int QDeclarativeCompiler::rewriteBinding(const QString& expression, const QString& name)
+int QDeclarativeCompiler::rewriteBinding(const QDeclarativeScript::Variant& value, const QString& name)
{
QDeclarativeRewrite::RewriteBinding rewriteBinding;
rewriteBinding.setName(QLatin1Char('$') + name.mid(name.lastIndexOf(QLatin1Char('.')) + 1));
- QString rewrite = rewriteBinding(expression, 0, 0);
+ QString rewrite = rewriteBinding(value.asAST(), value.asScript(), 0);
return output->indexForString(rewrite);
}
int evaluateEnum(const QByteArray& script) const; // for QDeclarativeCustomParser::evaluateEnum
const QMetaObject *resolveType(const QString& name) const; // for QDeclarativeCustomParser::resolveType
- int rewriteBinding(const QString& expression, const QString& name); // for QDeclarativeCustomParser::rewriteBinding
+ int rewriteBinding(const QDeclarativeScript::Variant& value, const QString& name); // for QDeclarativeCustomParser::rewriteBinding
private:
typedef QDeclarativeCompiledData::Instruction Instruction;
}
/*!
- Rewrites \a expression and returns an identifier that can be
+ Rewrites \a value and returns an identifier that can be
used to construct the binding later. \a name
is used as the name of the rewritten function.
*/
-QDeclarativeBinding::Identifier QDeclarativeCustomParser::rewriteBinding(const QString& expression, const QString& name)
+QDeclarativeBinding::Identifier QDeclarativeCustomParser::rewriteBinding(const QDeclarativeScript::Variant &value, const QString& name)
{
- return compiler->rewriteBinding(expression, name);
+ return compiler->rewriteBinding(value, name);
}
QT_END_NAMESPACE
const QMetaObject *resolveType(const QString&) const;
- QDeclarativeBinding::Identifier rewriteBinding(const QString&, const QString&);
+ QDeclarativeBinding::Identifier rewriteBinding(const QDeclarativeScript::Variant&, const QString&);
private:
QList<QDeclarativeError> exceptions;
var = QVariant(v.asScript());
{
// Pre-rewrite the expression
- QString expression = v.asScript();
- id = rewriteBinding(expression, data.at(ii).first); //### recreates the AST, which is slow
+ id = rewriteBinding(v, data.at(ii).first);
}
break;
}
case QDeclarativeScript::Variant::Script:
var = QVariant(v.asScript());
{
- // Pre-rewrite the expression
- QString expression = v.asScript();
- id = rewriteBinding(expression, data.at(ii).first); //### recreates the AST, which is slow
+ id = rewriteBinding(v, data.at(ii).first);
}
break;
}