diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-08-14 17:15:31 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-09-09 11:19:54 +0200 |
commit | 66e9d05bffcf14b61220f4196e70c991bd056b03 (patch) | |
tree | 35642dab6ef4d5cd5b26bac5d052c430e52d7f3e /src/qml/compiler | |
parent | 41864db3b61d9e81a9fe4906918d2cd3d6d32a0c (diff) |
Tighten verification of signal names
You can have signal names beginning with "_" and numbers, but the first
letter (if any) has to be lowercase.
Change-Id: I001b6c1c0fe4eaef1f5498cb201947fa93208f8d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler')
-rw-r--r-- | src/qml/compiler/qqmlirbuilder.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/qml/compiler/qqmlirbuilder.cpp b/src/qml/compiler/qqmlirbuilder.cpp index 171dc641d3..afe68b72cb 100644 --- a/src/qml/compiler/qqmlirbuilder.cpp +++ b/src/qml/compiler/qqmlirbuilder.cpp @@ -792,7 +792,7 @@ bool IRBuilder::visit(QQmlJS::AST::UiPublicMember *node) { if (node->type == QQmlJS::AST::UiPublicMember::Signal) { Signal *signal = New<Signal>(); - QString signalName = node->name.toString(); + const QString signalName = node->name.toString(); signal->nameIndex = registerString(signalName); QQmlJS::AST::SourceLocation loc = node->typeToken; @@ -821,8 +821,14 @@ bool IRBuilder::visit(QQmlJS::AST::UiPublicMember *node) p = p->next; } - if (signalName.at(0).isUpper()) - COMPILE_EXCEPTION(node->identifierToken, tr("Signal names cannot begin with an upper case letter")); + for (const QChar &ch : signalName) { + if (ch.isLower()) + break; + if (ch.isUpper()) { + COMPILE_EXCEPTION(node->identifierToken, + tr("Signal names cannot begin with an upper case letter")); + } + } if (illegalNames.contains(signalName)) COMPILE_EXCEPTION(node->identifierToken, tr("Illegal signal name")); |