summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Fix path of embedded .qm files in sub-directoriesHEADdevJoerg Bornemann2 days6-1/+68
| | | | | | | | | | | | | | | | | | Consider a project with sub-directories and a qt_add_translations call in a sub-directory. Before Qt 6.7.0, the path to the embedded .qm files was ":/i18n/foo_de.qm". With Qt 6.7.0, the path is ":/i18n/subdir/foo_de.qm". The reason is that we're called qt6_add_resources with the BASE argument "${CMAKE_CURRENT_BINARY_DIR}", and that is different if targets are automatically collected at the end of the project's directory scope. Fix this by passing the target's BINARY_DIR as BASE instead. Pick-to: 6.7 6.7.1 Fixes: QTBUG-124188 Change-Id: I6afd39c072e7dccc2ff5937c5cd312a119b68587 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot3 days1-3/+3
| | | | | Change-Id: If516477bbc5f99ecb7c7274b65e3149bab099fda Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QHelpEngineCore: Reinitialize on changing the read only modeJarek Kobus6 days1-0/+4
| | | | | | Fixes: QTBUG-119515 Change-Id: I3d80138ce9282594f7d68c440c4666a9e4896c37 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Doc: QDoc Manual: Remove duplicated documentation for a warningTopi Reinio6 days1-21/+5
| | | | | | | | | | | | | | | | | The QDoc warning: Clang couldn't find function when parsing \fn <signature> was documented twice in the manual. Remove one of the instances, together with the now-obsolete information it included. Fix phrasing in the remaining section. Fix excess whitespace and excess backslash character appearing the the \fn command name. Change-Id: I61fb69e5139cf7a60fb303a2d14579c1543d3230 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
* qdoc: validatedQDocOutput autotest: Stop relying on standard libraryTopi Reinio6 days2-2/+8
| | | | | | | | | | | | | | | | Two test cases used #include statements from the standard library. However, the test setup does not ensure that all required include paths are actually forwarded to QDoc and on to Clang. Some versions of Clang are able to correctly guess the include path(s) on some platforms/configurations, but we cannot rely on that always being the case. Replace the std lib includes with dummy declarations that should produce identical results in the expected output. Change-Id: I6f6b1bb9b176f7fa59ccdfc64c11e1586409eb5a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot7 days1-3/+3
| | | | | Change-Id: I2fdd60c193f4f49d26a96bdfcbf6beaf69dae4fb Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* CMake: Exclude all AUTOGENerated files from lupdateJoerg Bornemann7 days11-21/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix QTBUG-118808 we added code to filter ui_*.h files from lupdate's input. This was done by creating a big regular expression. Unfortunately, CMake cannot handle regular expressions that contain a certain amount of sub-expressions. See QTBUG-123995. We now fix the issue more generally by filtering out everything that's generated by CMake's AUTOGEN facility. The data flow is like follows: 1. On project configuration, .lupdate/foo_project.cmake is generated. This file contains the location of the AUTOGEN directory per target. The AUTOGEN_BUILD_DIR target property is taken into account. 2. At build time, GenerateLUpdateProject.cmake reads .lupdate/foo_project.cmake, and filters out source files that are below the AUTOGEN directory for the currently handled target. The filtered result is written to .lupdate/foo_project.json. 3. On 'update_translations', lupdate reads .lupdate/foo_project.json and runs on the source files mentioned there. Fixes: QTBUG-118808 Fixes: QTBUG-123995 Pick-to: 6.6 6.7 Change-Id: Id23b94c22b2eadeb7f96321bf631731b9f257bce Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Correct license for module and plugin filesLucie Gérard7 days6-6/+6
| | | | | | | | | | | | | | | | | According to QUIP-18 [1], all module and plugin files should be LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only or LicenseRef-Qt-Commercial OR GPL-3.0-only Also, LGPL and non LGPL should not be mixed in a given directory [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I7a0438d9b006910de0b1491b8379f66f44b795da Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Qt Designer: Use new qHash(QMap)Friedemann Kleint8 days1-4/+1
| | | | | | | | | Introduced by qtbase/e1f45ad8187947e243c8247c5cbac2d884d68d55. Amends 9b130f43b39e8bd0412530ab5b531d21eedaa4a4. Task-number: QTBUG-121823 Change-Id: I0ce26d7ca5e3cfbf16a265c56cea96ee45073375 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* qdoc: Delay processing of \relates meta-command argumentsTopi Reinio13 days11-35/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The \relates command is used for C++ entities in the global scope to associate them with a page-generating Aggregate (class, namespace, or a header file). The \relates command is a meta-command, processed after all the topic commands (in the same source file) are handled. However, if the \relates command referred an aggregate that does not exist (because its documentation is in another file, yet to be processed), we ran into problems: QDoc created a new ProxyNode to serve as the location to generate the the related node's documentation to. After the proxy node had been created, all subsequent associations were tied to that proxy, even after the real aggregate's node had been created and added to the tree. An output page was generated for the proxy, but it often ended up being orphaned. In practice this was only a problem for header file aggregates, as they are the only 'relatable' node type not constructed by ClangCodeParser during pre-compiled header generation, but later during the processing of documentation comments (\headerfile topic). Recent changes to the order of processing topic and meta-commands unmasked this issue with the current documentation sources, but the implementation was always fragile. To fix, add a new post-processing step that handles \relates arguments after all sources have been parsed. This must be done before calling Aggregate::normalizeOverloads() as the related non-member functions have an effect on overload ordering. Remove remnants of the undocumented ability to allow multiple \relates commands in the same topic - it was defunct and can be re-introduced with a proper implementation. Fixes: QTBUG-123622 Change-Id: I9b85d9c9447825d17d4a4dd345c811dfecfb2411 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Collect \fn parsing failures and process them separatelyTopi Reinio13 days9-41/+163
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When deciding whether to output a warning when Clang fails to tie an \fn signature to a declaration, information about how the base class is documented is required. Specifically, for classes that are marked \internal and therefore do not generate output in a standard build, QDoc omits subsequent warnings for that class's member functions. This information is no longer available when parsing an \fn topic, as 'internalness' is meta-information that gets assigned to entities in a later step. Introduce a new structure to collect information about parsing failures, and have ClangCodeParser::parseFnArg() return a variant; either a matched Node pointer or an error (FnMatchError). This error contains sufficient context to process it and generate a warning later on. Store these errors that occur during topic command processing into a vector, and handle them after the nodes have also completed meta-command processing. The new mechanism can be utilized for consolidating the handling of multiple types of parsing failures into a central location; for now, start with match failures for \fn. For match failures, improve the logic of resolving the parent of a function from a string representing the function signature; allow both classes and namespaces, and check the entire parent chain for the \internal command. Instead of ad-hoc string parsing, use a regular expression for resolving the scope of an \fn signature. Simplify the phrasing in the warning message related to \fn matching failures. Fixes: QTBUG-123084 Change-Id: I3478774e9141275ad8a043f643850096a146fa1c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot13 days1-3/+3
| | | | | Change-Id: I376ea22699b60bc41cf99f4ea43afda6a139385c Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QDoc: Update readme for end-to-end testPaul Wicking13 days1-0/+10
| | | | | | | | | | Add information about configuring output formats and location information to the qdocconf section for new tests, as this can be surprising or easily forgotten about. Task-number: QTBUG-119500 Change-Id: Ie6fb7b8eabfa4483d777c0438755d8b93f651c48 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Add structure to E2E test dataPaul Wicking14 days121-95/+88
| | | | | | | | | | | Ensure that test data is properly separated from test configuration and expected output by moving test data into a `src` subdirectory. This has an added benefit of ensuring uniform structure for all test cases. Task-number: QTBUG-119500 Change-Id: Iea8bc1d84f1b80b6b7f77a23330793d4cfa78891 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QHelpEngineCore: Remove the old hack for dynamic readonly propertyJarek Kobus14 days1-3/+1
| | | | | | | | | | | | | | | | [ChangeLog][QtHelp][QHelpEngineCore] Remove the old hack with setting the dynamic "_q_readonly" property to change the read only mode. Use QHelpEngineCore::setReadOnly() instead. Use public QHelpEngineCore::setReadOnly() instead. The hack had to still exist around when the amended change was done so that it was still available for Qt 5 series. Now it's not needed anymore. Amends 15d7a30d41b423846fc74d9dd252c1e2a84769e2 Change-Id: I79e23850dc597db19f0da8b4dfec9fde4b529a35 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* QDoc: Generate unique references to TOC entriesPaul Wicking14 days11-9/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QDoc generates the output for a page, the page may contain multiple `\sectionN` commands. These commands take a string as input, which becomes the title for the following section of text. If a section title is duplicated, they must have a unique `id` HTML attribute to be correctly linkable entities. This is achieved by extending `Tree::populateTocSectionTargetMap`. This method iterates over the Atoms that represent the table of contents for a given Doc for a Node. Ensure that the TOC consists of uniquely identifiable entries in case of name collisions, such that QDoc can generate correct output for all such references in a given document. For section titles that collide on a given page, unique section references are generated for all but the first instance. These unique references are then appended to the Atom::SectionHeadingLeft that follows the Atom being processed, for later retrieval. Tree::refForAtom is modified such that, for both Atom::SectionLeft and Atom::SectionHeadingLeft, the behavior is ensured to be the same. This is made possible by the fact that these Atoms appear in tandem. For Atoms of type Atom::SectionHeadingLeft, return the second entry of its stringlist if its length is two, as that indicates that a unique reference has been appended to the Atom being processed. Modify the generator subclasses to account for the new behavior, by calling the modified Tree::refForAtom to obtain the correct reference for the Atom being generated. Add E2E test case for unique anchors for duplicate section titles. Fixes: QTBUG-122261 Change-Id: I53b4871c31224210b5e9a7cbf3c5df7dec6df8a2 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Refactor Tree::refForAtomPaul Wicking14 days1-7/+12
| | | | | | | | | | Turn the conditional into a switch statement, to prepare for upcoming changes to the method. Add an assertion on the Node* argument. Update method documentation. Task-number: QTBUG-122261 Change-Id: I63952e59eef43d0c62669f6e84d8a9a900457474 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract method from Tree::resolveTargets (4/4)Paul Wicking14 days2-13/+29
| | | | | | | | | | | | | | `Tree::resolveTargets` is responsible for ensuring the maps `m_nodesByTargetRef` and `m_nodesByTargetTitle` are correct. The implementation details for the various tasks clutter reading the algorithm. Extract the code responsible for adding targets (defined with QDoc's \target command) associated with the Node being processed to the maps. Task-number: QTBUG-122261 Change-Id: If0ab471003267ab41a229ac4bf81e0eae882ad81 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract method from Tree::resolveTargets (3/4)Paul Wicking14 days2-12/+22
| | | | | | | | | | | | | | `Tree::resolveTargets` is responsible for ensuring the maps `m_nodesByTargetRef` and `m_nodesByTargetTitle` are correct. The implementation details for the various tasks clutter reading the algorithm. Extract the code that adds keywords (defined by QDoc's \keyword command) associated with the Node being processed to the maps. Task-number: QTBUG-122261 Change-Id: I5d11b8d64680046f57468871b682868318be04ac Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract method from Tree::resolveTargets (2/4)Paul Wicking14 days2-13/+25
| | | | | | | | | | | | | | `Tree::resolveTargets` is responsible for ensuring the maps `m_nodesByTargetRef` and `m_nodesByTargetTitle` are correct. The implementation details for the various tasks clutter reading the algorithm. Extract the code that is responsible for populating the maps for each section in the table of contents of the Node being processed. Task-number: QTBUG-122261 Change-Id: I72b9698b2b848bd58eade95981aae2144b536fdc Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract method from Tree::resolveTargets (1/4)Paul Wicking14 days2-22/+30
| | | | | | | | | | | | | | | | | `Tree::resolveTargets` is responsible for ensuring the maps `m_nodesByTargetRef` and `m_nodesByTargetTitle` are correct. The implementation details for the various tasks clutter reading the algorithm. Extract the code that's responsible for ensuring that each unique PageNode is stored in the `m_pageNodesByTitle` under its title and delegate to the new method from the call site. As part of the extraction, replace a manual loop with a call to the std::any_of algorithm. Task-number: QTBUG-122261 Change-Id: I391da5bc38d64e6a737a0c77874c9683cce50f48 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Add Atom::append(const QString&)Paul Wicking14 days1-0/+1
| | | | | | | | | Add `Atom::append` which appends its argument to the list of strings held by the Atom. Task-number: QTBUG-122261 Change-Id: I415a0a151b20cb4e39125fd078279641720e6b44 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2024-04-171-3/+3
| | | | | Change-Id: Ib60247eec4db96b8f1b9819571ce0a681e1c9b00 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Make Tree::refForAtom a public static methodPaul Wicking2024-04-171-1/+1
| | | | | | | | | | Tree::refForAtom is arguably ill-placed in Tree. For now, turn it into a public static, in preparation for changes in HTMLGenerator that will require access to it. Task-number: QTBUG-122261 Change-Id: I17bf0207e0b61d832006ceb28c8553407f466d64 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Rename method in AtomPaul Wicking2024-04-173-6/+6
| | | | | | | | | | | | The method `Atom::appendString` operates on a member string list. However, it doesn't append a string to the list; it concatenates its argument with the first string in the list. Rename the method to reduce ambiguity and pave the way for a method that actually appends a string to the list of strings. Task-number: QTBUG-122261 Change-Id: I68fa9401e2180c49121f1d2c9853ca149c98cd76 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Minor code cleanup in DocParserPaul Wicking2024-04-171-2/+3
| | | | | | | | Substitute C-style cast with static_cast, and apply curly braces to an else clause that was in violation of Qt's code style. Change-Id: Ifd5cbb56c91837da4886d60340ed580a984daa9f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Qt Designer: Add icon theme enum sub property editorFriedemann Kleint2024-04-152-2/+116
| | | | | | | | Task-number: QTBUG-121823 Pick-to: 6.7 Change-Id: Ic5f13e05ea7f836bb99acdef106c973b0a70a170 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Qt Designer: Add icon theme enums to the main icon propertyFriedemann Kleint2024-04-154-10/+76
| | | | | | | | | | Rename the old string-based editor to XDG an add a new editor for the enumerations. Task-number: QTBUG-121823 Pick-to: 6.7 Change-Id: Ib619c76d1406a1173b9eff902356f020b507057e Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Qt Designer: Add icon theme enums to the action editorFriedemann Kleint2024-04-152-16/+53
| | | | | | | | | | Rename the old string-based editor to XDG an add a new editor for the enumerations. Task-number: QTBUG-121823 Pick-to: 6.7 Change-Id: Iac32aaa75b558f564bb0add4a4747b5ac656eb6f Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Qt Designer: Add IconThemeEnumEditor and dialogFriedemann Kleint2024-04-154-29/+160
| | | | | | | Task-number: QTBUG-121823 Pick-to: 6.7 Change-Id: I4c838b469f925ab924d94520cb786114c86e3182 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* qdoc: Stop mistreating the QtQuick QML moduleTopi Reinio2024-04-127-26/+8
| | | | | | | | | | | Node::isQtQuickNode() returned true for any QML node under a module named "QtQuick". The reason why modules needed special handling based on their name is lost to history. Get rid of isQtQuickNode() and the code that uses it. Change-Id: Ia0334b9a16a07bedecd51f9428733f840f8bd913 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove CodeParser from PureDocParserLuca Di Sera2024-04-122-20/+1
| | | | | | | | | | | | | | | | | `CodeParser` is a legacy inheritance-based interface for components that needs to parse a source file. Recent changes to the code-base moved some of those components to a new interface so that `CodeParser` is not required anymore. Hence stop `PureDocParser` from inheriting from `CodeParser`. Some unused methods that were inherited from `CodeParser` and are unused were removed. Task-number: QTBUG-111686 Change-Id: Ie2bf7b0d761750193fdb6d4d13558c6354b4939c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Remove CodeParser from ClangCodeParserLuca Di Sera2024-04-123-29/+7
| | | | | | | | | | | | | | | | | | | | | | `CodeParser` is a legacy inheritance-based interface for components that needs to parse a source file. Recent changes to the code-base moved some of those components to a new interface so that `CodeParser` is not required anymore. Hence stop `ClangCodeParser` from inheriting from `CodeParser`. Some unused methods that were inherited from `CodeParser` and are unused were removed. `ClangCodeParser` makes use of a `QDocDatabase` that was previously obtained from its parent class. The dependencies is now made explicit and handled as part of the constructor. Task-number: QTBUG-111686 Change-Id: Ie4174175f669703cc1aa3fc954efe6f9a1314367 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Unify handling of Cpp and QDoc filesLuca Di Sera2024-04-124-33/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | When QDoc parses a project it parses its code-base to extract and sanitize the user-provided documentation. Due to recent changes that aim to simplify some upcoming optimization changes, the way that QDoc handles certain source file lost some abstraction leading to intermediate duplicated code. Now that some further changes around this handling were introduced we can reduce the deduplication and prepare the code-base for further changes. A new component, `SourceFileParser` was introduced, that takes care of dispatching a source file that should be parsed to the component that is able to parse it. The code in the main loop that takes care of parsing source files was modified to make use of the new component. Some related code was modified in the main loop to better support the new code and the new flow of data. Task-number: QTBUG-111686 Change-Id: I5d4a15c62f6563d29abf883a7f71c720040d4577 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Move parseFnArg out of ClangCodeParserLuca Di Sera2024-04-125-21/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QDoc processes a project, it parses its code-base to obtain and sanitize the user-provided documentation for the project. For projects that makes use of C++ code, QDoc uses Clang's APIs to obtain the required information about the code-base. Profiling shows that calls to Clang are the major bottleneck in QDoc at the current time. To reduce the time spent by Clang, QDoc is being moved to parallelize and batch certain operations that are related to Clang calls. `ClangCodeParser`, the component responsible for all of the calls to Clang libraries, is currently architectured in a way that is not usable for those optimization purposes. Hence, it is slowly being modified to be better suited for those purposes. As part of those modification, we expect `ClangCodeParser` to be split into multiple components. Currently, `ClangCodeParser` is the entry point to a series of operations that happen in different phases and have very different restriction on their scopes and their dependencies. To fullfill and simplify the parallelization efforts, those operations are being split up to so that we can reorganize their order and restrictions. When QDoc parses a project, it extracts the user-provided block-comments that comprise the documentation. Later, it processes them in multiple ways. For example, it ties a documentation block to a `Node`, an internal representation for documentable elements, by examining the usage of "topic commands" in the block. For "\fn" commands, which are used to document a C++ callable, QDoc makes calls to Clang's APIs to parse the argument of the command so that it can later compare it to the internal representation that QDoc built of the code-base. This is performed by `ClangCodeParser::parseFnArg` which is called by `CppCodeParser`, which is the component responsible for processing documentation blocks. `parseFnArg` calls are intended, later on, to be batched for performance reasons, albeit they are not expected to be parallelized at this point. Hence, we move `parseFnArg` out of `ClangCodeParser` to simplify those feature developments by having more control over which parts of `ClangCodeParser` receive which changes. `parseFnArg` was removed and replaced with the call operator of a new class, `FnCommandParser`, a component that will only take care of processing "\fn" commands. `CppCodeParser`, which depended implicitly upon `ClangCodeParser` to call `parseFnArg`, was modified to depend on `FnCommandParser` explicitly. The main loop of QDoc was modified to create and pass around an instance of `FnCommandParser` as needed. Task-number: QTBUG-111686 Change-Id: I517bd0d62b348ca39c4a8c10c4c2d78ab7c5ae15 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Move buildPCH out of ClangCodeParserLuca Di Sera2024-04-123-158/+198
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QDoc processes a project, it parses its code-base to obtain and sanitize the user-provided documentation for the project. For projects that makes use of C++ code, QDoc uses Clang's APIs to obtain the required information about the code-base. Profiling shows that calls to Clang are the major bottleneck in QDoc at the current time. To reduce the time spent by Clang, QDoc is being moved to parallelize and batch certain operations that are related to Clang calls. `ClangCodeParser`, the component responsible for all of the calls to Clang libraries, is currently architectured in a way that is not usable for those optimization purposes. Hence, it is slowly being modified to be better suited for those purposes. As part of those modification, we expect `ClangCodeParser` to be split into multiple components. Currently, `ClangCodeParser` is the entry point to a series of operations that happen in different phases and have very different restriction on their scopes and their dependencies. To fullfill and simplify the parallelization efforts, those operations are being split up to so that we can reorganize their order and restrictions. When QDoc parses the code-base of a C++ project, it builds a PCH to speed up the various compilations it performs. This is done in `ClangCodeParser::buildPCH`. The PCH is then saved as an internal state of `ClangCodeParser` and reused by different parts of the code-base. Those external dependencies that the PCH create, can cause problems with regards to the ongoing parallelization efforts so that `buildPCH` is now moved outside `ClangCodeParser`. The free function version of `buildPCH` now returns a record that contains the necessary information to work with the PCH, which will later allow us to pass this information around to the required components without posing any restriction of `ClangCodeParser` or the file-parsing process. The signature of `buildPCH` was modified to obtain all the required dependencies, which were provided by instance-members of `ClangCodeParser` before, at call-site. The implementation for `buildPCH` was modified to make use of the new arguments instead of the instance members. The structure of `buildPCH` was slighly modified, in a semantic preserving manner, to be better suited to a value-returning function, compared to the previous structure which was built around the function not returning any value. The instance member of `ClangCodeParser` that stored the PCH information were removed in favor of a new member, `m_pch`, that is compatible with the new information structure. The constructor for `ClangCodeParser` was modified to be able to obtain the built PCH at instance-creation time to support the now separated `buildPCH` format. The main loop of QDoc was modified to support the new structure. The code taking care of building the PCH was modified to support the new structure and was moved around as it now should be run before an instance of `ClangCodeParser` is obtained. The construction of the currently single `ClangCodeParser` instance was modified to make use of the value obtained by a call to `buildPCH`. `buildPCH` implicitly depends on `QDocDatabase`, a mutable singleton that owns the internal representaton of a code-base that QDoc builds when parsing the PCH and other source-files. Hence, the code taking care of the initialization of `QDocDatabase` was moved around in the main loop as it needs to be processed before `buildPCH` is called. One of the operation required to initialize the `QDocDatabase` instance implicitly depends on the `Generators`, the components that take care of building and writing the final output documentation and which follow a "singleton" like lifetime, initialization. Thus, the code that initializes the generator was moved around in the main loop to respect the required order. Task-number: QTBUG-111686 Change-Id: I894f900dc507142495abdb636d68f59eafbcd194 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Remove conflicting QDoc command in a test caseTopi Reinio2024-04-123-8/+1
| | | | | | | | | | | | | | The `comprehensiveproject` test case included two QML types that both referred to the same C++ class with `\instantiates` command. This resulted in variance in output based on the order of parsing the source files. Remove one of the conflicting commands. Change-Id: Ib398725db7aef9049ac02b519d7ea9c33f7b5623 Reviewed-by: Luca Di Sera <luca.disera@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Assistant: Update qlitehtml submoduleEike Ziller2024-04-101-0/+0
| | | | | | | | | Fixes jumping to QML properties Task-number: QTCREATORBUG-30625 Pick-to: 6.7 Change-Id: Iad9fa3d8f595726328db5b11ae6d2b29ae960e01 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Correct license for tests fileLucie Gérard2024-04-0935-35/+35
| | | | | | | | | | | | According to QUIP-18 [1], all tests file should be LicenseRef-Qt-Commercial OR GPL-3.0-only [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I5cad5b00a1455282685731d35b12887ad6819bca Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Change license for tools filesLucie Gérard2024-04-0911-11/+11
| | | | | | | | | | | | According to QUIP-18 [1], all tools files should be LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 6.7.0 Task-number: QTBUG-121787 Change-Id: I7b69118185d4237ec096dc76e78ee84c2ccd5eb2 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Correct license in Qt Widget Designer pluginsLucie Gérard2024-04-0921-21/+21
| | | | | | | | | | | | | | | | | | According to QUIP-18 [1], all module and plugin files should be LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only or LicenseRef-Qt-Commercial OR GPL-3.0-only [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I92aad08f60670faeb4396d717bd3719382dd41a7 Reviewed-by: Tino Pyssysalo <tino.pyssysalo@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Remove dead code for WinRTKai Köhne2024-04-095-907/+0
| | | | | | | Last use of this code was removed in c14e73f3c1016a38c Change-Id: I7c984872adc0c7f5bb61ce077fb67d4f5aba7109 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Update dependencies on 'dev' in qt/qttoolsQt Submodule Update Bot2024-04-051-3/+3
| | | | | Change-Id: If1e77f32b87cbad9480191fb61a569d5e55ec8cf Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Doc::quoteFromFile: refactoringsGiuseppe D'Angelo2024-04-042-5/+4
| | | | | | | | Check the return value of QFile::open before proceeding further. Also, we don't need to return a CodeMarker; no caller uses it. Change-Id: Ibf12c7e30f0b846a1823a1fdac78eef60105a8bb Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Modify name ending of python scriptLucie Gérard2024-04-042-2/+2
| | | | | | | | | | | | With the new ending it is the file is identify as a tool according to the rules in QUIP 18-[1] [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I8ce307079d37a27046afac8d9f96c095ec1effab Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Correct license for examples filesLucie Gérard2024-04-042-2/+2
| | | | | | | | | | | | According to QUIP-18 [1], all examples file should be LicenseRef-Qt-Commercial OR BSD-3-Clause [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I1b15be4279c9c85b8d6275aa0cd663a8b9f8dca1 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Correct license for documentation filesLucie Gérard2024-04-045-5/+5
| | | | | | | | | | | | According to QUIP-18 [1], all documentation files should be LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: Ifedcaf2716ca6bf5b69d373a7ddf7ec5085384b3 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* QDoc: Move properties testPaul Wicking2024-04-0325-593/+940
| | | | | | | | | | | | The `properties` test was already moved from `tst_generatedOutput` into `tst_validateQdocOutputFiles`. This change modifies the latter such that it includes the source for this particular test case, and removes the case from the former. Task-number: QTBUG-119500 Pick-to: 6.7 Change-Id: Iff241b15ca428ff5077a8bd050ad0a9891eb3031 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Move nestedmacro testPaul Wicking2024-04-037-191/+10
| | | | | | | | | | | QDoc now has better test infrastructure. Move a trivial test project from `tst_generatedOutput` into `tst_validateQdocOutputFiles` and adjust expected output accordingly. Task-number: QTBUG-119500 Pick-to: 6.7 Change-Id: I122d2aa901d7b8640df3506b89fa559b2742064d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Move `dontdocument` testPaul Wicking2024-04-0319-91/+129
| | | | | | | | | | | | | QDoc's new `tst_validateQdocOutputFiles` provides better infrastructure for testing output generated by QDoc than `tst_generatedOutput` does. Move the test data for the `dontdocument` test case of the latter into the `comprehensiveproject` of the former, and modify the expected output accordingly. Task-number: QTBUG-119500 Pick-to: 6.7 Change-Id: Ib8ca88ff2e7545c60920b0042c6d8b944ea54722 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>