summaryrefslogtreecommitdiff
path: root/tests/auto/qdoc/generatedoutput
Commit message (Collapse)AuthorAgeFilesLines
* qdoc: Stop documenting ignored nodesTopi Reinio2021-06-1711-35/+38
| | | | | | | | | | | | | | | | | | | | | | | | There were multiple locations in the code where QDoc still generated links to nodes that were marked with \internal or \dontdocument, or generated lists that included entries (with links to non-existing files) representing these nodes. * Set an empty (but non-null) url for ignored nodes. This also speeds up searching for link targets as nodes can be dismissed early based on their url(). * Use Node::isDontDocument() as a conditional in Node::isInAPI(), and filter CollectionNode's members based on the latter - this removes ignored classes/functions from module pages and group listings. * Fix TagFileWriter to drop ignored nodes. Fixes: QTBUG-94555 Change-Id: Icab05f7aa78e455c15ce097b9f99f5fce7267d3f Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 1246e064caaa6243c941d795eb877c519bce69ad) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: Drop 'module' attribute from the index for page nodesTopi Reinio2021-06-147-9/+9
| | | | | | | | | | | | | | | Page nodes, regardless of the node subtype, have no relation to any C++ module. Having this attribute in the index caused QDoc to search for such a module, and create one if one was not found. This was a waste of resources, and for pure documentation modules (such as 'QDoc' - the QDoc Manual), caused broken links to a non-existing module page (qdoc-module.html). Fixes: QTBUG-94480 Change-Id: I2f608eba21ae977d3baaebf40885098ed1fe8d7e Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 3e88b552a1aac807504fa85bf752e6bd8542b573) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: \generatelist: Ensure we link to the main namespace referenceTopi Reinio2021-06-1418-5/+203
| | | | | | | | | | | | | | | | | | | | | | When there are multiple documentation modules that document items under the same namespace, we incorrectly linked to the wrong one (a sub-page generated for a single module). This happened when using \generatelist namespaces in a module that was not the one where the namespace is documented but has a dependency to it; as is the case with the main Qt reference (qtdoc). Add documentation comments to make the code slightly more understandable, and add a test case for both the main reference page and the sub-page generated for a namespace. Fixes: QTBUG-90540 Change-Id: Ie883ea53896d9d70a17bc01e072648c62a9b8aa3 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 99f57491a12c2aa778ab9c8c9d50549d65701694) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: Fix incorrect parameters generated for QML signalsTopi Reinio2021-06-105-0/+32
| | | | | | | | | | | | If no \qmlsignal command was used, but a signal declaration in a QML file was preceded by its documentation comment, the signal parameters were malformed. Fixes: QTBUG-94395 Change-Id: Ie2f084009b4fb3f27602f170fab49601c19ab987 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 8d29e7c656c430a17a30ef9e20d543bf86b9520d) Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: clean up html outputPaul Wicking2021-05-2545-168/+182
| | | | | | | | | | | | | | | | | | Clean up some of QDoc's html output: * Remove erroneous <p/>. * Do not write empty <ul></ul> for lists that don't exist. * Do not generate links with missing href. * Drop duplicated anchors in tables. * Stop writing unnecessary and broken links to qml modules. * Don't duplicate <b>'s. * Change Atom type to Autolink for Q_INVOKABLE to not generate broken <a> tag if link target cannot be resolved. Task-number: QTBUG-81209 Task-number: QTBUG-73026 Fixes: QTBUG-93876 Change-Id: I4e9f01571263a21e0c25e5d8b3b7ff10fc18bea7 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Improve Text::operator<<()Paul Wicking2021-05-2035-35/+0
| | | | | | | | | | | | | | Add a check to Text::operator<<() to stops QDoc from outputting unnecessary "empty" spans, i.e. <span class="subtitle"></span> when generating html. Task-number: QTBUG-81209 Task-number: QTBUG-73026 Change-Id: I4df7875ee1c29bc1d48e9c3e53e8ce0518f3be3e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Skip multi-line descriptions of enum values marked with \omitvalueTopi Reinio2021-05-124-4/+15
| | | | | | | | | | | | | | | Previous method did not correctly handle multi-line descriptions for enum values omitted from the documentation which we have multiple instances of in the source. These description paragraphs are now skipped entirely. After \omitvalue, skip all content until a new paragraph, a \value command, or another \omitvalue. Pick-to: 6.1 Task-number: QTBUG-92386 Change-Id: If9284ad2936019bc9afbfaa7cbf5cfbdbdd3cfa4 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Remove unused files from generatedoutput autotestTopi Reinio2021-05-1018-974/+0
| | | | | Change-Id: I71489d8736d7977eb8425b06050a8f81c32cc430 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Improve \deprecated commandPaul Wicking2021-05-1018-13/+74
| | | | | | | | | | | | | | | | | | | | | | This change allows users to specify an optional parameter to the \deprecated command to record which version something was deprecated. It also allows for free text descriptions. These descriptions become the first paragraph of the resulting documentation. Usage: \deprecated \deprecated [6.2] \deprecated [6.2] Use QFoo() instead. \deprecated Use QFoo() instead. [ChangeLog][qdoc] QDoc now lets you record the version something is deprecated and suggest replacements with the \deprecated command. Task-number: QTBUG-58249 Change-Id: I27081627132b2f8ea3dd7d48ded8e37213366074 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Remove Node::Obsolete statusTopi Reinio2021-05-109-34/+34
| | | | | | | | | | | | | | | | | QDoc had two commands for the same purpose, \obsolete and \deprecated. As 'deprecated' describes the status better, as in, something that is subject to being removed from the public API, document only the latter. Keep \obsolete for now for backward compatibility. .index file recognize the "obsolete" attribute still for backward compatibility, converting to "deprecated". [ChangeLog][qdoc] Replaced \obsolete command in favor of \deprecated as it's a more accurate description of the intended status. Task-number: QTBUG-58249 Change-Id: I3d311ebf7b4a3e8a23fa85e4efcf60965cf12a13 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Check if the module version no. is emptyVenugopal Shivashankar2021-05-0815-6/+160
| | | | | | | | | | | | | | | Assuming that the version string is always available leads to import text with just a dot in the docs. Added a test qmlmodule without the version to check if this works. In addition, updated the documentation to mention the optional version argument and made a few minor edits. Fixes: QTBUG-93265 Pick-to: 6.0 6.1 Change-Id: Ib0ee8c1e0fca43cd2cbee19374d14140a51f13fa Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Remove defunct command \granularityTopi Reinio2021-05-041-2/+0
| | | | | | | | This command was undocumented and non-functioning; Remove it, the related data structures and enum values. Change-Id: Ia95efd20d35908ea5a23e660abb2b06b354f5f5a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Revert "QDoc: Add \deprecatedsince command"Paul Wicking2021-04-3021-103/+38
| | | | | | | | | | | | This reverts commit 1637d91efd8fb389bc09bdaa960f5d9d4f9e0164. Reason for revert: User feedback shows this implementation isn't good enough. Further discussion led to the discovery of a better approach. Task-number: QTBUG-58249 Change-Id: I48e0500ac95745b1ce10a29e77c6fa515b9e048f Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* qdoc: Omit descriptions of enum values marked with \omitvalueTopi Reinio2021-04-301-1/+2
| | | | | | | | | | | For \omitvalue <enum_value>, omit also single-line descriptions that immediately follow <enum_value> or appear on a new line following the \omitvalue command. Pick-to: 6.1 Fixes: QTBUG-92386 Change-Id: Id8a70ff48102075d3b18442547773ae7f3eefefa Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Add \deprecatedsince commandPaul Wicking2021-04-2821-38/+103
| | | | | | | | | | | | | As deprecated methods may stick around over a couple of versions, add a command that lets us record which version something was deprecated in. [ChangeLog][qdoc] QDoc now lets you record the version something is deprecated in with the new \deprecatedsince command. Fixes: QTBUG-58249 Change-Id: I69de350502580f446008f717462bbc1c4c251564 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Stop writing <a name=> html tagsPaul Wicking2021-04-2655-354/+229
| | | | | | | Task-number: QTBUG-73026 Task-number: QTBUG-81209 Change-Id: I47d0fd94141d631abd8ea709c7ef0dc311312375 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix linking to scoped enumsTopi Reinio2021-04-238-2/+110
| | | | | | | | | | | The code that resolved qualified names of enum values did not expect the name of the enum to appear in the path, as is the case for enum classes. Pick-to: 6.1 Fixes: QTBUG-92355 Change-Id: I74246158f7c5ca7c5c1712bc642905bc267cb7e1 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Tag Q_INVOKABLE functions with [invokable]Topi Reinio2021-04-157-1/+38
| | | | | | | | | | The code parser already tracked the invokability of a function; tag the function signature when generating the detailed documentation. Pick-to: 6.0 6.1 Fixes: QTBUG-79698 Change-Id: I42d727f762b488b13dd10b400c5c07453c60cbac Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Revert "QDoc: Make Generator::fileBase static"Topi Reinio2021-04-151-1/+1
| | | | | | | | | | | | | | | | | | | | This reverts commit 3e67b5e4df84421b77f90cbf242abb4a3c4c93a5. The original implementation where fileBase() was a virtual function, overridden by HtmlGenerator, was needed as that generator is the only one that conditionally appends '-obsolete' to output file names. By using a shared static helper across all generators we broke that feature. Modify the revert to resolve conflicts and override fileBase() also for WebXMLGenerator; .webxml output should not refer to files with -obsolete suffix. Pick-to: 6.0 6.1 Fixes: QTBUG-92478 Change-Id: I7a7e3ef333724c96624569dd27b4812196931fb0 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Stop auto-linking to section titlesTopi Reinio2021-03-228-0/+79
| | | | | | | | | | | | | | | | | | | | | | | | The purpose of the auto-linking feature is to link strings in the text that resemble class or function names to API reference. However, QDoc did not discriminate between the types of the resolved link targets. Therefore, writing \section1 QString on a random \page would potentially redirect all autolinks to QString to that section. To fix, turn Node::Genus into attributes so we can do bitwise operations on the genus, and introduce Node::API that includes all API reference node genera. Node::API is not assigned to nodes directly, but is used in searches to match against any API reference nodes. Pick-to: 6.0 6.1 Task-number: QTBUG-91141 Change-Id: Ic0a22b7105e1278662f5ae7d4132980200638225 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Correctly handle const property typesTopi Reinio2021-03-196-1/+50
| | | | | | | | | | | The property type defined in Q_PROPERTY may contain the const qualifier. Store the qualifier and make the code a bit more robust against ill-formatted property declarations. Pick-to: 6.0 6.1 Fixes: QTBUG-91990 Change-Id: I6b06e4c8af8bb9dec3c467c6e19d9987b8340110 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Re-implement \default commandTopi Reinio2021-03-176-4/+6
| | | | | | | | | | | | | | Marking a QML property as a default property is now done with \qmldefault command; repurpose the \default command to set a default value for a property. The default value is visible in the detailed property documentation as an extra 'default: <value>' attribute. The value is taken as-is from the argument passed to the command. Fixes: QTBUG-81525 Change-Id: I7a4395e6e96046facfc3d75cc62a3bd01d04935b Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Let default be qmldefaultPaul Wicking2021-03-172-2/+2
| | | | | | | | | | | | | | | | | | | | To allow the repurposing of the \default command for the more generic default value use-case, make the current specialization explicit as \qmldefault. This patch also introduces a stub implementation of the \default command. This ensures that existing documentation sets that depend on this command will not issue new warnings. The patch is as such a prerequisite for the introduction of the new \default command. [ChangeLog][qdoc] QDoc's \default command should specify a default value. To document a default QML property, use the new \qmlproperty command. Task-number: QTBUG-81525 Change-Id: I3ed38e8a6f5a431247a2cea4ea661c87dd97d1b0 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Drop \internal entities from the indexTopi Reinio2021-03-023-28/+0
| | | | | | | | | | | | | Skip nodes marked as \internal from the generated index files, unless --showinternal option was set. This reduces the size of index files, improves performance, and also avoids linking issues in corner cases where QDoc is searching for a specific function overload but fails to find it because the link target matches with an internal node. Pick-to: 6.0 6.1 Fixes: QTBUG-91409 Change-Id: I062e261a86e737fde0f138264244324d43091270 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix regression in handling of global functionsTopi Reinio2021-02-226-0/+140
| | | | | | | | | | | | | | | | | | Commit 550c3031 improved the handling of \relates command, but introduced a regression; When relating a primary function (a first in the linked list of overloads) to another aggregate, the primary's nextOverload pointer was cleared. Subsequent \fn commands trying to document other overloads then failed. The correct way is to move the head of the linked list forward. However, if there are no overloads, we do not want to delete the list entirely, as the function (typically, a global one) must be searchable from the original (global) scope. Pick-to: 6.0 6.1 Fixes: QTBUG-91244 Change-Id: If80fa93ac5231d0676c0809f1acfa97733f9f9e8 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Remove QMake project filesJoerg Bornemann2021-02-121-15/+0
| | | | | | | | | | This includes removal of the corresponding .prev_CMakeLists.txt files. Pick-to: 6.1 Task-number: QTBUG-88742 Change-Id: I3f360105a8cd43ad37dec6bfc6509ce95c79ee76 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* qdoc: Fix generation of TOC for basic QML/JS typesTopi Reinio2021-01-281-0/+2
| | | | | | | Pick-to: 6.0 5.15 Fixes: QTBUG-90691 Change-Id: I576849bb291926461f40622278619ffe096036cf Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Allow overriding documentation from abstract QML base typesTopi Reinio2021-01-217-0/+161
| | | | | | | | | | | | | | | | | | QDoc replicates property/function documentation from abstract QML base types to the reference of the inheriting type. Attempting to override a member documentation for the inheriting type resulted in duplication: both the base and inheriting docs were rendered. As the decision on what's shown on the type reference is deferred to constructing the sections, implement this logic there. Modify FunctionNode::compare() so that we can compare methods from different parents, allowing us to override a specific overload of a method. Pick-to: 6.0 Fixes: QTBUG-89913 Change-Id: I3fb56c747e72b5a6ff387667e035a959e8f1c479 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix handling of overloads when adopting functions between parentsTopi Reinio2021-01-148-1/+81
| | | | | | | | | | | | | | | | | | | | | | | | When adopting a function node from one parent to another, QDoc did not touch the linked list of overloads for the adopted function. This caused situations where traversing the node tree, trying to find functions for an aggregate (parent), yielded also overloads that are not supposed to be found as they are not members of that parent. One visible place was the classes-with-obsolete-members generated list, where QDoc erraneously found obsolete overloads for a class that had adopted function(s) from the global namespace. To fix, remove an adoptee from the overload list of its primary function (maintained by the original parent), and re-add it to the overload list maintained by the new parent. Refactor functions that manage linked lists; using recursion is unnecessary. Pick-to: 6.0 Fixes: QTBUG-89003 Change-Id: Ibd215cd4b1d97003ac79fe02a71452e4a7a154db Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix addendums for QML signals that contain '.' in the nameTopi Reinio2021-01-116-0/+34
| | | | | | | | | | QML signals may belong to a group, and the automatic note generation for corresponding signal handler must take this into account. Pick-to: 6.0 5.15 Fixes: QTBUG-85572 Change-Id: Ibfc793475618fb78a8ba0a0344537917ad6fb0bf Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix Section::reduce() omitting sections with obsolete membersTopi Reinio2021-01-0714-0/+106
| | | | | | | | | | This caused documentation for obsolete members to go missing if a section had only obsolete members. Pick-to: 6.0 Task-number: QTBUG-89003 Change-Id: I9fb38bb76af45eda42cddc25bb4f6137e73e6fc3 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Recursively resolve QML type inheritanceTopi Reinio2020-12-173-1/+36
| | | | | | | | | | | | | | | | While we store the QML base type name into the index file, the inheritance chain was never rebuilt for nodes read from the index. Do this recursively for index nodes; this provides full inheritance information on 'All members' pages for QML types, provided that all required documentation dependencies are loaded using the 'depends' qdocconf variable. Pick-to: 6.0 Task-number: QTBUG-89479 Change-Id: Ibafcd3224d7870e7eec7c0ed88d35135b7be3eaf Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* CMake: Regenerate projects using pro2cmake one last timeAlexandru Croitor2020-12-091-0/+2
| | | | | | | Pick-to: 6.0 Change-Id: Id8b82e7838c3b142cbd9118689bafae0bbe2beb1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Doc: Use PRIVATE linkage with target_link_librariesKai Koehne2020-11-3018-18/+18
| | | | | | | | | | | | Fix the CMake snippet in the class documentation pages to use PRIVATE linkage. PUBLIC linkage is only needed if the Qt types are also used in the public API of the user's module. Task-number: QTBUG-88935 Change-Id: If4aee64a25ec8152a2a0ad5b5504f53a41d93079 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit a774889df6ee2e07d0f01580bc9e486365200ff5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: Fix CMake statementKai Koehne2020-11-2718-36/+36
| | | | | | | | | | | | find_package() only knows about COMPONENTS, not COMPONENT. While at it, also make the find_package call REQUIRED, and do use the versioned library target name. Change-Id: I1410b7c8cce84a1f24853bfcef650e440c468b33 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit c57c4836d627406f33b80e4a188c93f79331a1bc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: Fix example attributes being incorrectly appliedKai Koehne2020-11-241-1/+1
| | | | | | | | | | | | | Once an example had an attribute associated - for instance isHighlighted - all the other examples afterward got the attribute too. This caused a (more or less) random list of examples to be highlighted in Qt Creator. Change-Id: Id09c232f56328d345deb9521651af40ecf750a36 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit e2c263a1b980636b62dbfd2037e70ee665a0ad39) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qdoc: Allow \generatelist to list collections with no membersTopi Reinio2020-11-165-0/+69
| | | | | | | | | | It's allowed for a collection node (e.g. a QML module page) to have no members (QML types), and still be considered valid. List these types of pages when processing the \generatelist command. Fixes: QTBUG-88536 Change-Id: I23c890c4752039f29489a7504f73f8078fe01fe3 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* tst_generatedoutput: find expected files correctlyDavid Faure2020-11-111-1/+1
| | | | | | | | | | | | | | QFINDTESTDATA(.) first matches :/. (in the resource subsystem) so this led to QFAIL("Cannot open expected data file!"); because it was looking for :/./expected_output/qdoctests-qdocfileoutput.html Not sure how this ever passed on CI. Change-Id: Ia4de8e35eb352b2c560d1fc92a1f837be0c20b9d Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix linking to property groupsTopi Reinio2020-11-118-8/+97
| | | | | | | | | Only the members of a property group were written to .index, not the group itself; this made cross-module linking to the group fail. Fixes: QTBUG-88386 Change-Id: I096a2bbdd2b0af00c4d0e9a6974b6dc7dce075a2 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Unify generated documentation between \typedef and \typealiasTopi Reinio2020-11-0920-57/+48
| | | | | | | | | | | | | | | | | | | | | | | | \typedef can be used as a substitute for \typealias for documenting aliases. Since they are identical in terms of usage, unify also the way they are documented: - Remove 'typedef' and '(alias)' from both the summary and details sections, making both appear as types. - Remove automatically generated 'This is a type alias for ...' note for type aliases. This typically resulted in duplicate statements. - Use '-typedef' anchor suffix for both. - Use 'typedef' as element for both in .index files and webxml output format. - Add template parameters for type aliases for DocBook generator; these were previously missing. Fixes: QTBUG-87622 Change-Id: I93986a2dc91c3c3dff9e21f5bf5cf19d0b55c4df Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Allow type aliases as a parameter to \class commandTopi Reinio2020-11-094-0/+52
| | | | | | | | | | | | | | | | In Qt 6, some types that used to be classes are now type aliases or specializations of a templated class; for example, QPair is now an alias to std::pair. While the \typedef command supports aliases, it's not always clear where the reference of such type should live, as a \typedef cannot generate a page of its own and needs to be related to some other aggregate (class, header, or namespace). Therefore, allow aliases to generate a type page using the \class command. Fixes: QTBUG-88012 Change-Id: Ice67d58eb036299c0fd04f6ed48a846bfed8ed1d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Allow excluding examples from the generated manifest fileTopi Reinio2020-11-095-3/+43
| | | | | | | | | | | | | | | | This allows us to cleanly control whether an example appears in Qt Creator's welcome mode or not, while still generating the example documentation. This can be done with \example path/to/example \meta tag broken Delay writing the manifest attributes until we know whether to generate the example element or not. Fixes: QTBUG-88181 Change-Id: Idbd23244ffdb0c6b7ca87f927cb6d2ed3a526b2a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix issues in \include commandTopi Reinio2020-10-288-0/+21
| | | | | | | | | | | | | | - 'sources' configuration variable was not considered when searching for file to include. - An empty QString was pushed to the location stack in DocParser::include(), resulting in vague warning messages - The search algorithm chose the first path that ended in the filename to find, with the potential of incorrectly choosing 'foobar.cpp' over 'bar.cpp'. Fixes: QTBUG-86844 Change-Id: If180ffe0817b2e786356b49f7e679e158fbc407d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix handling of \fn signatures with unnamed parametersTopi Reinio2020-10-2716-45/+56
| | | | | | | | | | | | | | | | A misplaced 'i++' caused an error where names of documented parameters were shifted around if one or more of the parameters were unnamed. Fixing the above uncovered issues with handling of \fn commands with [tag] argument; improve and simplify related code. Finally, avoid redundant space characters when generating signatures with unnamed parameters or in 'All Members' page where parameter names are omitted. Fixes: QTBUG-87855 Change-Id: I526c89c10c66572b8c71106660f43346a4751e4e Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Add 'private signal' attribute for private signalsTopi Reinio2020-10-202-2/+2
| | | | | Change-Id: Ifa2682c8bc3864dfd11abbb475b064e74c105a52 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix parsing of private signalsTopi Reinio2020-10-206-0/+35
| | | | | | | | | | | Parameters with a type QPrivateSignal were already removed when constructing a FunctionNode from header declaration. This was erraneously subtracted from the number of stored parameters when parsing an \fn command. Fixes: QTBUG-87731 Change-Id: I01409c0fcdab0dfbf8a0b9d22cded99618bdcc2d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Allow documenting implicitly generated special member functionsTopi Reinio2020-10-1617-1/+163
| | | | | | | | | | | | | | | | | Implicitly generated class members such as default constructor are not visible in the Clang AST, and QDoc failed to match \fn commands for such functions. Fix this by visiting the translation unit generated for the \fn command, and constructing a temporary FunctionNode. If this temporary node is of any of the special member types that can be implicit, add that function as a child to the class node. Add 'default' attribute for such functions in the generated docs. Fixes: QTBUG-86984 Change-Id: I6c662e4ca030d80b68dd22f3639526093c27c20b Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Store group membership for all node types into index filesTopi Reinio2020-10-126-11/+30
| | | | | | | | | | | | | | | | | | | | | Up until now, only select node types (PageNodes) stored the information about \ingroup command argument(s) into the index file. This meant that generating lists that contain non-page nodes (e.g. functions) did not produce correct results, if group members included non-page nodes from other modules. Add a helper function QDocDatabase::groupNamesForNode() that returns a list of groups regardless of node type, and use that when generating the index file. [ChangeLog][qdoc] QDoc's \generatelist and \annotatedlist commands now produce correct output when listing functions from external documentation modules. Fixes: QTBUG-87161 Change-Id: Id3079729891ec22716e4b7606bec604a7ebff74a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: Fix processing of related non-members read from indexTopi Reinio2020-10-123-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | QDoc writes a node using \relates twice into the index; once under the original (lexical) parent (typically, the global scope), and again under the adoptive parent specified with \relates. This is by design, as it allows searching for the node under both scopes. However, when the nodes are read back in, what was originally a single node was duplicated. This caused issues e.g. when that node is part of a group; when generating a list for a group, a line representing the node appeared twice. Use Aggregate::adoptChild() when reading nodes from index, instead of constructing multiple nodes. This is similar to what the code parser does when processing the \relates command. To identify an index entry appearing twice as a representation of a single node, repurpose the "related" attribute to track the index of each related node. Fixes: QTBUG-87311 Change-Id: I2aa8a97b9be26ee3945b3e4ce222b0f8dc4ca8b5 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qdoc: generatedOutput autotest: Don't regenerate files twiceTopi Reinio2020-10-091-1/+4
| | | | | | | | | | | One of the steps (crossModuleLinking), calls another step to generate its .index file. This caused also those files to be copied twice when -regenerate option was set. Disable the regeneration flag for the step. Change-Id: Ia3ed90c014a8ec89db18a7e7168a4bc167d4b82b Reviewed-by: Paul Wicking <paul.wicking@qt.io>