<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git/tests/auto/qml/qqmllanguage/data/nonExistingICUser4.qml, branch dev</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>QtQml: Do not store type references for properties</title>
<updated>2025-06-06T11:04:40+00:00</updated>
<author>
<name>Ulf Hermann</name>
<email>ulf.hermann@qt.io</email>
</author>
<published>2025-05-12T14:31:06+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=5068a675c4318466a20a18e1443474c7d2fe7d4b'/>
<id>5068a675c4318466a20a18e1443474c7d2fe7d4b</id>
<content type='text'>
This allows a type A to have a property of type B while B also has
a property of type A. This is very helpful for list-like or otherwise
linked data structures. For example the BaseConstraint type in the
DeltaBlue benchmark wouldn't have been necessary if this feature had
been available before.

It has the side effect of making it impossible to validate inline
component types before they're instantiated. We don't actually have
the type at the point where a property is declared. However, since
you certainly want to instantiate at some point and qmllint will still
help you find the problem, this is acceptable.

We also have to intercept URLs before we create QQmlType instances now.
This is because now we only have the URLs to identify types. Having
multiple QQmlType instances referring to the same logical type wsd a bad
idea anyway.

[ChangeLog][QtQml] You can now have cyclic type references in QML
documents. A QML type A can have a property of type B while B has a
property of type A. You can still not cyclically inherit or
instantiate types in QML documents, of course

[ChangeLog][QtQml] Your URL interceptors may get called more often now,
for URLs QML neglected to intercept before. This means that more URLs
may be constructed from already-intercepted base URLs. URL interceptors
should check for this condition.

Change-Id: I84753a883c2de98e16d1c3826e7e56e897eeafb8
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows a type A to have a property of type B while B also has
a property of type A. This is very helpful for list-like or otherwise
linked data structures. For example the BaseConstraint type in the
DeltaBlue benchmark wouldn't have been necessary if this feature had
been available before.

It has the side effect of making it impossible to validate inline
component types before they're instantiated. We don't actually have
the type at the point where a property is declared. However, since
you certainly want to instantiate at some point and qmllint will still
help you find the problem, this is acceptable.

We also have to intercept URLs before we create QQmlType instances now.
This is because now we only have the URLs to identify types. Having
multiple QQmlType instances referring to the same logical type wsd a bad
idea anyway.

[ChangeLog][QtQml] You can now have cyclic type references in QML
documents. A QML type A can have a property of type B while B has a
property of type A. You can still not cyclically inherit or
instantiate types in QML documents, of course

[ChangeLog][QtQml] Your URL interceptors may get called more often now,
for URLs QML neglected to intercept before. This means that more URLs
may be constructed from already-intercepted base URLs. URL interceptors
should check for this condition.

Change-Id: I84753a883c2de98e16d1c3826e7e56e897eeafb8
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Long live QML inline components</title>
<updated>2020-01-23T14:58:10+00:00</updated>
<author>
<name>Fabian Kosmale</name>
<email>fabian.kosmale@qt.io</email>
</author>
<published>2020-01-15T13:47:35+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=684f9df7849bc79f1f02a60844fb43c7a3927d2f'/>
<id>684f9df7849bc79f1f02a60844fb43c7a3927d2f</id>
<content type='text'>
[ChangeLog][QtQml] It is now possible to declare new QML components in
a QML file via the component keyword. They can be used just as if they
were declared in another file, with the only difference that the type
name needs to be prefixed with the name of the containing type outside
of the file were the inline component has been declared.

Notably, inline components are not closures: In the following
example, the output would be 42

// MyItem.qml
Item {
    property int i: 33
    component IC: Item {
        Component.onCompleted: console.log(i)
    }
}
// user.qml
Item {
    property int i: 42
    MyItem.IC {}
}

Fixes: QTBUG-79382
Change-Id: I6a5ffc43f093a76323f435cfee9bab217781b8f5
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ChangeLog][QtQml] It is now possible to declare new QML components in
a QML file via the component keyword. They can be used just as if they
were declared in another file, with the only difference that the type
name needs to be prefixed with the name of the containing type outside
of the file were the inline component has been declared.

Notably, inline components are not closures: In the following
example, the output would be 42

// MyItem.qml
Item {
    property int i: 33
    component IC: Item {
        Component.onCompleted: console.log(i)
    }
}
// user.qml
Item {
    property int i: 42
    MyItem.IC {}
}

Fixes: QTBUG-79382
Change-Id: I6a5ffc43f093a76323f435cfee9bab217781b8f5
Reviewed-by: Ulf Hermann &lt;ulf.hermann@qt.io&gt;
</pre>
</div>
</content>
</entry>
</feed>
