From aa8d5a45930dcfce7f25878fa36c1595b1dfc023 Mon Sep 17 00:00:00 2001 From: "Evgeniy A. Dushistov" Date: Thu, 18 Jun 2020 21:52:58 +0300 Subject: qmllint: search methods and properties also in attached type I changed the strategy of traverse via related types. Before: traversal happens only via linked list type -> type->superClass After: traversal via binary tree formed by attachedType and superClass I use pre-order strategy, current type, then all attached types, then all super classes Fixes: QTBUG-84861 Change-Id: I4a8fce869bc541de6900514d29575174d2753f02 Reviewed-by: Fabian Kosmale --- tests/auto/qml/qmllint/data/AttachedType.qml | 5 +++++ .../auto/qml/qmllint/data/Things/plugins.qmltypes | 25 ++++++++++++++++++++++ tests/auto/qml/qmllint/tst_qmllint.cpp | 1 + 3 files changed, 31 insertions(+) create mode 100644 tests/auto/qml/qmllint/data/AttachedType.qml (limited to 'tests/auto/qml/qmllint') diff --git a/tests/auto/qml/qmllint/data/AttachedType.qml b/tests/auto/qml/qmllint/data/AttachedType.qml new file mode 100644 index 0000000000..02fa514e83 --- /dev/null +++ b/tests/auto/qml/qmllint/data/AttachedType.qml @@ -0,0 +1,5 @@ +import Things 1.0 + +Item { + property real test: Screen.pixelDensity * 0.5 +} diff --git a/tests/auto/qml/qmllint/data/Things/plugins.qmltypes b/tests/auto/qml/qmllint/data/Things/plugins.qmltypes index 95ff95eb7d..448a966145 100644 --- a/tests/auto/qml/qmllint/data/Things/plugins.qmltypes +++ b/tests/auto/qml/qmllint/data/Things/plugins.qmltypes @@ -30,4 +30,29 @@ Module { Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } } + Component { + name: "MyScreen" + prototype: "QObject" + exports: [ + "Things.Window/Screen 1.0", + ] + isCreatable: false + attachedType: "MyScreenAttached" + } + Component { + name: "MyScreenAttached" + prototype: "MyScreenInfo" + exports: [ + "Things.Window/ScreenAttached 1.0", + ] + } + Component { + name: "MyScreenInfo" + prototype: "QObject" + exports: [ + "Things.Window/ScreenInfo 1.0", + ] + isCreatable: false + Property { name: "pixelDensity"; type: "double"; isReadonly: true } + } } diff --git a/tests/auto/qml/qmllint/tst_qmllint.cpp b/tests/auto/qml/qmllint/tst_qmllint.cpp index 7459a813be..d5912def6b 100644 --- a/tests/auto/qml/qmllint/tst_qmllint.cpp +++ b/tests/auto/qml/qmllint/tst_qmllint.cpp @@ -223,6 +223,7 @@ void TestQmllint::cleanQmlCode_data() QTest::newRow("EnumAccess1") << QStringLiteral("EnumAccess1.qml"); QTest::newRow("EnumAccess2") << QStringLiteral("EnumAccess2.qml"); QTest::newRow("ListProperty") << QStringLiteral("ListProperty.qml"); + QTest::newRow("AttachedType") << QStringLiteral("AttachedType.qml"); } void TestQmllint::cleanQmlCode() -- cgit v1.2.3