diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-07-03 16:44:55 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-05 09:47:01 +0200 |
commit | fe6ec7bcc17f88ab1aca5a7934d047456354c942 (patch) | |
tree | 61e722685a2bb6596a3eaa9f00526a5271f9cc68 /src/qml/qml/qqmlcompiler.cpp | |
parent | a083ea8a34cad4feebcdadea33775ef6501ab884 (diff) |
Fix regression in tst_qqmlecmascript::signalAssignment
Detect errors in the signal declaration already at compile time, re-introducing
the earlier code in qqmlcompiler.cpp that checked that. This also means that
the parameter string construction can be done once for each signal and not for
each handler.
Change-Id: Icf6242a793939466bbc44d43bf041281164ad1b6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlcompiler.cpp')
-rw-r--r-- | src/qml/qml/qqmlcompiler.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlcompiler.cpp b/src/qml/qml/qqmlcompiler.cpp index a940bb256b..ddefffe8e2 100644 --- a/src/qml/qml/qqmlcompiler.cpp +++ b/src/qml/qml/qqmlcompiler.cpp @@ -1314,6 +1314,7 @@ void QQmlCompiler::genObjectBody(QQmlScript::Object *obj) Instruction::StoreSignal store; store.handlerName = output->indexForString(prop->name().toString()); + store.parameters = output->indexForString(obj->metatype->signalParameterStringForJS(prop->index)); store.signalIndex = prop->index; store.value = output->indexForString(v->value.asScript()); store.context = v->signalExpressionContextStack; @@ -1677,6 +1678,11 @@ bool QQmlCompiler::buildSignal(QQmlScript::Property *prop, QQmlScript::Object *o //to ensure all parameters are available (see qqmlboundsignal constructor for more details) prop->index = obj->metatype->originalClone(prop->index); prop->values.first()->signalExpressionContextStack = ctxt.stack; + + QString errorString; + obj->metatype->signalParameterStringForJS(prop->index, &errorString); + if (!errorString.isEmpty()) + COMPILE_EXCEPTION(prop, errorString); } } |