[Development] Possible bug in signals and slots handling in QML.

Atlant Schmidt aschmidt at dekaresearch.com
Wed Jan 4 15:42:52 CET 2012


Thiago:

  Let me more-explicitly/completely state the rule
  that I use:

    1. Always use the canonical casing for an identifier.

    2. Don't create any other identifiers that differ
       from an existing canonical identifier only in
       their casing.

                                  Atlant


-----Original Message-----
From: development-bounces+aschmidt=dekaresearch.com at qt-project.org [mailto:development-bounces+aschmidt=dekaresearch.com at qt-project.org] On Behalf Of Thiago Macieira
Sent: Wednesday, January 04, 2012 09:33
To: development at qt-project.org
Subject: Re: [Development] Possible bug in signals and slots handling in QML.

On Wednesday, 4 de January de 2012 07.51.48, Atlant Schmidt wrote:
> Thiago, et al.:
>
>   This is another one of those "don't play in the
>   grey areas of the language" things.
>
>   Even if identifiers are case-sensitive, one should
>   probably never depend upon that; why tempt fate?

"You should not depend on case sensitiveness" reads to me as "You can depend
on being case insensitive".

Does the following work?

Rectangle {
    property int foo: 0
    private signal bar

    onBar: FOO = 1
}

I recommend deprecating the capitalisation rule and introduce a non-mangling
construct, such as:

    on property(foo):
    on signal(bar):

The "on" keyword is already reserved anyway (SequentialAnimation on foo).

For signals, it would also be a good idea to name the arguments there, instead
of depending on magic variables appearing in your context. Think of

Rectangle {
    property string name
    signal nameChanged(string name)

    onNameChanged: { otherFunction(name); }
}

Which name was used there? Does the QML interpreter warn about shadowing, like
the C++ compiler can be asked to do?

I'm not saying this can't be solved by writing better code in the beginning,
but imagine that the signal and the property (which are public) already
existed in a previous version...

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
     Intel Sweden AB - Registration Number: 556189-6027
     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden

This e-mail and the information, including any attachments, it contains are intended to be a confidential communication only to the person or entity to whom it is addressed and may contain information that is privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and destroy the original message.

Thank you.

Please consider the environment before printing this email.



More information about the Development mailing list