aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlcompiler.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-07-03 16:44:55 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-05 09:47:01 +0200
commitfe6ec7bcc17f88ab1aca5a7934d047456354c942 (patch)
tree61e722685a2bb6596a3eaa9f00526a5271f9cc68 /src/qml/qml/qqmlcompiler.cpp
parenta083ea8a34cad4feebcdadea33775ef6501ab884 (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.cpp6
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);
}
}