QDoc: Resolve explicit QML dot-path links
The template link resolver only attempts QML dot-path lookup when a
link explicitly requests the QML genus, and its type-only lookup
cannot resolve ordinary property and enum references. Authored links
such as Type.property therefore become plain text with false warnings.
Pass explicit-versus-automatic link intent and authored search criteria
to scoped lookup. Resolve eligible names through shared QML discovery.
Use the enclosing QML type for member-local module disambiguation and
search the selected physical tree directly when a scope is supplied.
Keep forced non-QML genus, URLs, filenames, titles and automatic
references on their existing paths, and validate fragments on the
newly resolved targets.
Cover type and member contexts, competing logical and physical
modules, forced genus, real imported-tree scopes, fragments and the
braced multiword title control in both template formats. Also cover
shared attached-property selection, chains and overloaded methods.
Keep legacy output and its intentional member-context diagnostics as
controls. Import-alias interpretation is a separate follow-up.
Task-number: QTBUG-137279
Pick-to: 6.12
Change-Id: I82d027fa98c14801784e1b7d46b2f9d4add71dba
Reviewed-by: Topi Reinio <topi.reinio@qt.io>
| commit | 1d94c76327fa0053f88d4e0a0884706753862b35 |
| parent | 8fc13eddbbfbfac0f8301d43d35d06bff73b8416 |
| author | Paul Wicking <paul.wicking@qt.io> |
| committer | Paul Wicking <paul.wicking@qt.io> |
| commit time | Wed, 21 Oct 2026 18:28:09 +0000 |
- M src/qdoc/qdoc/src/qdoc/ir/contentbuilder.cpp
- M src/qdoc/qdoc/src/qdoc/linkresolver.cpp
- M src/qdoc/qdoc/src/qdoc/qdocdatabase.cpp
- M src/qdoc/qdoc/src/qdoc/qdocdatabase.h
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expect-stderr-contains
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/layout-intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/notes.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/othermodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-othermodule-button-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-othermodule-button.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-othermodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-othermodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-testmodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-testmodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-testmodule-panel-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qml-testmodule-panel.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/qmldotpathlinkerrors.index
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html-legacy/testmodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/layout-intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/notes.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/othermodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-othermodule-button-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-othermodule-button.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-othermodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-othermodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-testmodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-testmodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-testmodule-panel-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/qml-testmodule-panel.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/html/testmodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/intro.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/layout-intro.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/notes.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/othermodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-othermodule-button-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-othermodule-button.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-othermodule-layout-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-othermodule-layout.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-testmodule-layout-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-testmodule-layout.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-testmodule-panel-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/qml-testmodule-panel.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/expected/markdown/testmodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/qml_dot_path_link_errors.qdocconf
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/Panel.qml
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/dottedpage.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/intro.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/layout.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/modules.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/notes.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_link_errors/src/other.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expect-stderr-contains
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/layout-intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/notes.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/othermodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-othermodule-button-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-othermodule-button.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-othermodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-othermodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-testmodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-testmodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-testmodule-panel-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qml-testmodule-panel.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/qmldotpathlinks.index
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html-legacy/testmodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/layout-intro.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/notes.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/othermodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-othermodule-button-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-othermodule-button.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-othermodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-othermodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-testmodule-layout-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-testmodule-layout.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-testmodule-panel-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/qml-testmodule-panel.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/html/testmodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/intro.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/layout-intro.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/notes.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/othermodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-othermodule-button-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-othermodule-button.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-othermodule-layout-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-othermodule-layout.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-testmodule-layout-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-testmodule-layout.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-testmodule-panel-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/qml-testmodule-panel.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/expected/markdown/testmodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/qml_dot_path_links.qdocconf
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/Panel.qml
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/dottedpage.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/intro.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/layout.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/modules.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/notes.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_links/src/other.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expect-stderr-contains
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/html/consumermodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/html/qml-consumermodule-button-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/html/qml-consumermodule-button.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/markdown/consumermodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/markdown/qml-consumermodule-button-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/markdown/qml-consumermodule-button.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/expected/qmldotpathscoped.index
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/qml_dot_path_scoped.qdocconf
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/qmldotpathlinks.index
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_dot_path_scoped/src/consumer.qdoc
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expect-stderr-contains
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/html/qml-testmodule-item-members.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/html/qml-testmodule-item.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/html/testmodule-qmlmodule.html
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/markdown/qml-testmodule-item-members.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/markdown/qml-testmodule-item.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/markdown/testmodule-qmlmodule.md
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/expected/qmllinkcriteria.index
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/qml_link_criteria.qdocconf
- A src/qdoc/qdoc/tests/validatetemplategeneratoroutput/testdata/qml_link_criteria/src/types.qdoc