[Development] Feature freeze exception for QTBUG-95587

Ulf Hermann ulf.hermann at qt.io
Mon Sep 13 12:30:24 CEST 2021

>> However, if we nail down the meaning of @"string" to "create and
>> resolve a URL", then we cannot use a plain '@' for much else.
> it would be kinda logical for @ applied to a structure to mean resolving
> all urls inside it, which would be a clear clash with
> https://bugreports.qt.io/browse/QBS-58 (i was once told that this would
> be interesting for declaring state machines in quick as well).

The way it's implemented now, it only reacts to types that can easily be 
converted to url. That is strings, QVariant of QUrl, and the JavaScript 
URL object. Furthermore, I've added provisions that allow specific 
semantics for '@' to be specified via a prefix in the future. Plain '@' 
is now a shorthand for 'url@'. So, QBS could define a 'str@' or similar 
to do its array thing, or even give '@' a special meaning for arrays of 
strings (_that_ sounds a bit wasteful, though).

See https://codereview.qt-project.org/c/qt/qtdeclarative/+/369987

> the @ is about the only punctuation char that has no syntactical meaning
> in js (or at least didn't when i checked last time), so it does seem
> perfect for language extensions, and therefore a waste to use for just
> a single thing.

With the prefixes we retain the capability for generic extension of the 
language. I would still like to make '@' a shorthand for 'url@' so that 
people actually use it.

> specifically for urls, one could do something more extreme to limit the
> impact on the "syntax space", e.g., use @<url>, i.e., replace the
> quotation chars as well. of course, this may be even more confusing for
> tooling that doesn't natively speak the new qml version.

It should not only work for literals, but also for other expressions. 
Therefore, special quotes won't do.

More information about the Development mailing list