summaryrefslogtreecommitdiff
path: root/src/qdoc/cppcodeparser.cpp
Commit message (Collapse)AuthorAgeFilesLines
* qdoc: Allow overriding documentation from abstract QML base typesTopi Reinio2021-01-211-1/+1
| | | | | | | | | | | | | | | | | | 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: Allow type aliases as a parameter to \class commandTopi Reinio2020-11-091-0/+14
| | | | | | | | | | | | | | | | 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: Manage logging category in utilities.h/cppTor Arne Vestbø2020-09-241-1/+0
| | | | | Change-Id: I39ec66fbe95edc42a3dac51e8bc718ee42cc4a2a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Drop ditaref remainsPaul Wicking2020-09-111-5/+5
| | | | | | | | | | | | Most of the dita code is removed, get rid of the last few bits and the header that is no longer used. [ChangeLog][qdoc] The obsolete \ditamap has been removed. Task-number: QTBUG-71176 Fixes: QTBUG-86560 Change-Id: I7c65cc8a74d4caeabdc98d6852026f54a3c32dda Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Introduce \required command and handle REQUIRED for QML propertiesTopi Reinio2020-07-151-0/+5
| | | | | | | | | | | | | | | | | | | Q_PROPERTY macro now supports the REQUIRED keyword. This is relevant for QML types, where the type cannot be instatiated without declaring all required properties. Make QDoc parse the REQUIRED keyword, set associated QML property as required, and introduce a new command, \required, to do this explicitly in the docs. Likewise in QML visitor, check for the 'required' keyword for properties. [ChangeLog][qdoc] Support marking QML properties as required in the generated documentation. Fixes: QTBUG-85597 Change-Id: Ib8a25c5ebc1183812aec6e672b557c8fb1196741 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QDoc: Remove remnant of deprecated commandPaul Wicking2020-06-151-3/+0
| | | | | | Task-number: QTBUG-71176 Change-Id: Ic381a5642bd353ee34dc4f9749f0ce8cbafc1498 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Use QList instead of QVectorJarek Kobus2020-06-091-2/+2
| | | | | | | | Task-number: QTBUG-84469 Change-Id: I88b99ba7f5648d9da7878b7f7723f48cd86be2ac Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Extend synopsis for detailed reference sectionsTopi Reinio2020-06-081-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include \since information for detailed synopsis generation, and allow duplication of qdoc comments for C++/QML nodes on the condition that the extra comments contain no body text, only meta-commands. The use case is to have full status information in the signature/section title, and allow additional meta-commands for items that share a documentation comment. /*! \fn void A:foo() \fn void A:foo(int i) Shared documentation for overloads. */ /*! \fn void A:foo(int i) \since 2.0 */ Extract the code for 'extra' synopsis into a new helper function and use for both HTML and DocBook generators. Fixes: QTBUG-55739 Fixes: QTBUG-82902 Change-Id: I6e797d3ce7bc7b02102bb949515f88e7a0fbe929 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract ExternalPageNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: I5581a7e5f3f1b10850688a1395943fb50c43160b Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract ExampleNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: Ieae12d5a75c89470165759fb92c79897d9ad910c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract CollectionNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: Icf8db259a269d0e31f4686097addcfdde1e77f14 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract NamespaceNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: Ic5e0adbbeb27266ba1a55132a54310021f98fc21 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract HeaderNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: Iffc7c002f888f527370e200f44099eaf3934bf96 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract QmlTypeNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: Ia3a0010e9791b69ca73d12a1e98322477e1569aa Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract enum Access from NodePaul Wicking2020-06-041-2/+3
| | | | | | | | | | | | | Move Node::Access out of Node and make it a scoped enum, to break circular dependency issues between Node and RelatedClass. This is a requirement to extract struct RelatedClass from Node. Task-number: QTBUG-84578 Change-Id: I13a1ac275d46abcd04f5f712291c77c2f24a65db Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract QmlPropertyNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: If9a8eed6a01c6c7682a47572a16213f0d174087e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract SharedCommentNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: I088ffba80e191723c06c6518435afabb0ffd7a4d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Extract FunctionNode from NodePaul Wicking2020-06-041-0/+1
| | | | | | Task-number: QTBUG-84578 Change-Id: I5967054a1c802ac6daf2622dcd4e4c8c4b3977ac Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Drop half-baked translation effortPaul Wicking2020-06-041-41/+51
| | | | | | | | | | | | | | The current implementation suffers from lack of maintenance. This causes a poor user experience that adds little value, or is even detrimental to perceived value. Work to improve the situation would have to be done at the expense of something else. This patch removes the Q_DECLARE_TR_FUNCTIONS macros from QDoc, and replaces calls to tr() with QStringLiteral(). Fixes: QTBUG-84568 Change-Id: I2df71c27246ca5de816608c887cf359db8f85900 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devTopi Reinio2020-05-291-2/+2
|\ | | | | | | Change-Id: I8c1fc05462e1b99b16d52e4f43b2b4b1aa645152
| * qdoc: properly implement \typealias commandTopi Reinio2020-04-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | \typealias was already a command recognized by QDoc, but it was simply treated as a synonym for \typedef and was not documented. Implement proper support for the command: - Add [alias] designation both in type summary and details. - Auto-generate information about the aliased type, including a link if aliasing a public, documented type. - Auto-convert aliases documented with \typedef to type aliases. - Add basic support for aliases also to DocBook and WebXML generators. - Document \typealias. Fixes: QTBUG-82712 Change-Id: Iafa8c7def0a7488d7521fbc2862290a9bb3167ff Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | QDoc: Clean up in cppcodeparserPaul Wicking2020-05-281-72/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Use auto when assigning with new to avoid type name repetition. * Prefer ranged-for loop. * Call empty() on QStringList instead size() with comparison. * Prefer 'm_' prefix over '_' postfix in members. * Remove unused constructor. * Update copyright year. Task-number: QTBUG-71176 Change-Id: If979501aa58cbaa5388e2b98407f2b9845d77b83 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: hjk <hjk@qt.io>
* | QDoc: Add CMake package information to documentationPaul Wicking2020-05-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces a new command to QDoc, \qtcmakepackage. The command works exactly like the \qtvariable command. The command adds a table row in class and namespace documentation pages. This entry contains CMake: find_package(Qt6 COMPONENT Foo) target_link_libraries(mytarget PUBLIC Qt::Foo) ...immediately preceding the existing "qmake: += Foo" row. [ChangeLog][qdoc] Added a new QDoc command, \qtcmakepackage, that adds CMake snippets to class and namespace documentation. Fixes: QTBUG-84024 Pick-to: 5.15 Change-Id: I687813c76d92f20ec1eac6229ca2c5ef22ca3591 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Thibaut Cuvelier <cuvelier.thibaut@gmail.com>
* | QDoc: Get rid of Q_GLOBAL_STATICs in doc.cppPaul Wicking2020-05-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Drop the Q_GLOBAL_STATIC and return QSet<QString> on the stack if we don't already have one. Do not return const-ref as the QSet is implicitly shared anyway. const-qualify a receiving container. Task-number: QTBUG-84004 Change-Id: I8e06eb32f6ba82aeae1b727c777c5118c1f1d24f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | QDoc: Clean up includesPaul Wicking2020-05-041-2/+0
| | | | | | | | | | | | | | | | | | * Remove unused includes * Replace deprecated C++ includes with counterpart. Task-number: QTBUG-71176 Change-Id: Ie3224d9f9c19fd8f93879de6c7604a8db421b88b Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devAlexandru Croitor2020-04-151-53/+21
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: a bunch of .pro and configure.json file adjustments and some conflicting cherry-picks from dev -> 5.15 that are merged into dev again src/assistant/assistant/main.cpp Change-Id: I174c00b6a300c6d46c4e081bdcb2f15f23ae9ef2
| * qdoc: Fix regression in resolved example file pathsTopi Reinio2020-03-291-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A recent refactoring of code related to generation of example file lists caused a regression; if the parameter passed to an \example command contained subdirectories, e.g. \example tutorials/gettingstarted only the immediate example directory ('gettingstarted' above) was recorded in generated example lists and manifest files. Ensure that the file paths are prefixed with the full example location, and add a test to cover this. Fixes: QTBUG-83130 Change-Id: I061dcf6cd4e94a2c65e5a50a39f379759d7cd06f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| * QDoc: Remove commented out codePaul Wicking2020-03-261-1/+0
| | | | | | | | | | Change-Id: Ie3c74010c62fa6c468732364bd1be77024fcca5b Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| * qdoc: Extend \example command to consider CMake projectsVenugopal Shivashankar2020-03-201-52/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc looks for project file(s) in the example directories before generating docs for the example. Now that we are moving towards CMake, it's ideal that qdoc is aware of this new project file type. Refactor the code that looks for project files - add a new function to Config for this purpose, and store the project file name into ExampleNode. This allows removal of duplicated logic when generating the example-manifest.xml file. Add a unit test for Config::getExampleProjectFile(), and modify the generatedoutput test to cover output for a CMake-based example. [ChangeLog][qdoc] Added support for CMake-based example projects. Fixes: QTBUG-82908 Change-Id: If9f061c613fee94b35df277043c2f4df93da7ec0 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | QDoc: Remove \contentspage codePaul Wicking2020-03-111-4/+1
|/ | | | | | | | | | | | The \contentspage command has been unused since Qt 5.3, and the documentation was removed in 5.15. Remove the related code. [ChangeLog][qdoc] - The \contentspage command is removed. Fixes: QTBUG-75170 Change-Id: I47c7e5c35154ed0d16f7a4584015b4a338735bbe Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Add warning to use of \contentspage commandv5.15.0-beta2Paul Wicking2020-03-111-1/+3
| | | | | | | | | | | The \contentspage command doesn't produce nav links to the contents page between the next and previous pages. QDoc hasn't generated these links in html output since Qt 5.3. Remove the documentation that refers to the command and add a warning that it should not be used.. Task-number: QTBUG-75170 Change-Id: Ib16fc1cbb1e661a7519ba650e655e209c3b45b68 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Remove code for unimplemented command \pagekeywordsTopi Reinio2020-02-211-2/+0
| | | | | | | | | This undocumented command was storing a list of keywords in a node. Those keywords were never accessed. Task-number: QTBUG-82310 Change-Id: I144454667c78329a8a03ca81b9b90b047971d301 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-01-281-0/+3
|\ | | | | | | Change-Id: I30a35e0998cd2538406ae5e11e2991f855f4ecb5
| * qdoc: Sort the members of shared comment node collectiveTopi Reinio2020-01-241-0/+3
| | | | | | | | | | | | | | | | | | Nodes sharing a comment will be listed together as a group, so sort them alphabetically. Fixes: QTBUG-81265 Change-Id: Ia8dcba92d74116bf6757bfc9aaded1c65d7271fd Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | qdoc: Make Config a singletonTopi Reinio2020-01-131-2/+3
|/ | | | | | | | | | | | There is no need to pass a pointer to Config throughout the API; the only instance of it is created in main() so we can turn it into a singleton. Having access to Config without API changes makes implementation of configurable features easier. Change-Id: Ida47e067865082dfe036a7a97f7f1ffc736db346 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* clang-format QDocPaul Wicking2019-12-171-188/+126
| | | | | | | | | | | | | | | | This patch is the result of formatting all of QDoc's source with clang-format. The clang-format style is from the qt5 super repo's _clang-format definition. The purpose is unify the style across the code, to avoid spending too much time on style related issues in reviews and cleanup patches. Future changes to QDoc can benefit from using git-clang-format in combination with the git commit hook provided in qtrepotools.git as mentioned in this email to the dev list: https://lists.qt-project.org/pipermail/development/2019-October/037682.html Change-Id: I8af6a051c8334b5f35862a4dcd3becce8ac500c2 Reviewed-by: Martin Smith <martin.smith@qt.io>
* QDoc: Use QVector instead of QListPaul Wicking2019-12-121-1/+1
| | | | | | | | | | | Replace the use of QVector in most of QDoc. Also, remove one redundant C-style cast to int for result from method call that returns an int. As this happened in a macro, the result is removing a whole bunch of nagging from code inspection. Fixes: QTBUG-80669 Change-Id: Ib1aed95e01eaddd1e1213a145e815a0c4753ac67 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QDoc: Drop unnecessary sortPaul Wicking2019-12-111-2/+1
| | | | | | | | | There's no change in output by not sorting the container, so it seems to be entirely unnecessary. Also const qualify the container that is no longer sorted. Change-Id: I8d5186a70623b8db6397eb88b9b0a9b53465a34a Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QDoc: Clean up loops with iteratorsPaul Wicking2019-12-101-25/+16
| | | | | | | | | | | - Use ranged-based fors where applicable. - Use auto keyword for iterators. - Move a few variable declarations to where they're to be used. - Update docs where applicable. Fixes: QTBUG-80536 Change-Id: I859440b96428dec4ef108b01d391479d3f8dbd83 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Fix issues with shared comment nodesTopi Reinio2019-10-161-19/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc stores <sharedcomment> elements to the .index correctly, but the nodes that were sharing a comment were added after the shared comment. This meant that a shared comment node (SCN) could not find any of its members as they hadn't been read in yet. Fix this by delaying the creation of a new SCN until we have a list of sharing nodes. Also fix other related issues: - Generate content also for non-function SCN members. - Make SCN adopt the genus of a member when adding one. - Fix Node::isPropertyGroup() to return true for actual property groups (not all QML properties that share a comment) and fix usage of that method. - Fix linking to property groups when searching by the group name. - Restore indentation of property group members both in the summary section and in the All Members file. Fixes: QTBUG-79204 Change-Id: I1702f39b178f52444436b800d4fe9cb99f976a60 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Martin Smith <martin.smith@qt.io>
* QDoc: Use range-based for instead of foreachPaul Wicking2019-09-281-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change replaces the use of foreach with range-based for throughout QDoc. It also ensures that the loop body doesn't modify the container being iterated over, by: - Making a const copy when the container is a member variable or the result of an expression, and iterating over that copy. This is the preferred approach. - Using qAsConst() when the container is a (static) member variable or local to the method and not const. The latter is typical where the collection is sorted immediately before the loop. In two cases (doc.cpp), replaced Q_FOREACH + delete with qDeleteAll. In two cases (cppcodeparser.cpp), the range declaration is replaced within the loop statement. These rewrites express the behavior clearer than the original code. In two cases (codeparser.cpp), use a range-based for instead of a while loop where the condition is an iterator, for more expressive code. Finally, use the auto keyword where appropriate and improve a few variable names. QDoc warning count and generated output is unchanged after this refactoring. Change-Id: I64f02d24dca373a3a41402d535382e2c526bb55e Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QDoc: Clean up whitespacePaul Wicking2019-08-081-38/+38
| | | | | | | | | | | Ensure that QDoc conforms to Qt style, whitespace edition. For the most part, the change involves moving the pointer operators. Also remove whitespace following an opening parenthesis, or immediately preceding a closing one. In some cases, adjust the following line accordingly in methods that span multiple lines. Change-Id: I56ae125a2acf09c669c0a73dc814d05f13575f39 Reviewed-by: Martin Smith <martin.smith@qt.io>
* QDoc: Ensure all includes are uniform and according to stylePaul Wicking2019-08-031-6/+8
| | | | | | | | | | | | | | | | | | | Housekeeping. Includes are organized after recommended best practice and organized in the following order: - include self (i.e. include own header) - include local files - include Qt, e.g. <QtCore/qstring.h> - include Qt private - include externals, e.g. stdio.h in alphabetic order within each block, aside from accommodating #if-ery, in which includes follow the block they belong to. Also, updated copyright notice to year of latest edit in each file. Change-Id: I1e6b215f172fd5373d57016f7678b88b9e73231e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QDoc: Fix typo in warningPaul Wicking2019-07-311-1/+1
| | | | | Change-Id: If39e90e516017b21454a85bf6a88489f470894ae Reviewed-by: Martin Smith <martin.smith@qt.io>
* Eradicate the last Java-style iterators and mark the module free of themMarc Mutz2019-07-121-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and of QLinkedList. The change in QDesignerAbstractPropertySheetFactory is straight-forward. The rest are little buggers: - In macdeployqt, the code iterates inside an if. Weird, but portable. - In CppCodeParser, it's still somewhat harmless: just a call to std::remove_if to avoid running into quadratic complexity, even though the original loop had a good idea of iterating backwards, saving at least some copies in the process. Need to take care there that we continue to find the _first_ main.cpp, not the last, so add a check for mainCpp.isEmpty(). - In QtGradientStopsModel, however, needed to work around the absence of QMap::rbegin()/rend(), and it shows why they're missing: QMap's funky op* makes it impossible to just use std::reverse_iterator to do the heavy lifting. Use the recently-added QKeyValueIterator to get an approximation. I say 'approximation', because that one lacks operator->, so we need to use (*it).first, which brings back memories of Qt 2's iterators... Change-Id: I051e64b8d36b04ed2e7cf7695d9b797f08efaccb Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix deprecation warnings about deprecated container conversionsFriedemann Kleint2019-05-231-3/+5
| | | | | | | | | Fix warnings introduced by qtbase/92f984273262531f909ede17a324f546fe502b5c. Change-Id: Iaca85ad36591f7208f63305b885e7ff59c014a72 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* qdoc: Make QDoc warn about undocumented public classesMartin Smith2019-05-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc was marking all undocumented public API elements as "internal" and "private" because most of these undocumented elements should not be documented. The standard way to tell QDoc not to warn about an undocumented elemewnt in the public API is to give it a QDoc comment with the command "\internl" in it. But it was decided this would require too much work to eliminate all the warnings, because there are so many undocumented elements in the Qt public API that we really don't want to be documented. So we decided to just mark them all as both internal and private in QDoc itself, and that eliminated a great many useless QDoc warnings. But it also meant that QDoc would no longer warn when a public element was left undocumented by mistake. This is most often seen in C++ classes that are in the public API but are not documented. QFutureInterface is an example of a class that is not documented but should be documented because it is useful. This change lets QDoc warn that a class in the public API was not documented with a \class comment. Special cases: 1. If the undocumented class has no members, don't warn that it was not documented with a \class comment. 2. If the undocumented class's name contains the word "Private" it is probably not meant to be in the public API, so don't warn that it has no \class comment. 3. If the undocumented class has no function members, then don't warn that it has no \class comment. 4. If the undocumented class is marked DontDocument, then don't warn that it has no \class comment. The other part of this change relates to item 4 above. To mark a class or struct as DontDocument required adding a new topic command to QDoc. The new topic command is \dontdocument. The argument to this command is a list of class and struct names. The list is enclosed in parentheses. For example: \dontdocument (QMacAutoReleasePool QIncompatibleFlag ... QTextCodec::ConverterState QThreadStorageData) QDoc looks up each name in the list and marks it DontDocument. The documentation generator then sees the node is marked DontDocument and ignores the node. This makes it a lot easier to tell QDoc which public classes and structs should not generate the warning about no documentation. Task-number: QTBUG-57183 Change-Id: I7eee48de03ca7aeb72c63ae90ba373503d41612d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qdoc: Allow QML/JS types with the same name as the parent modulev5.13.0-beta3Topi Reinio2019-04-161-2/+2
| | | | | | | | | | | | | QtMultimedia QML module contains a QML type QtMultimedia. QDoc was overriding one with the other because the search function returns both types of nodes (as they have the same genus, 'QML'). Fix this by checking that we actually found an existing type, not a module. Task-number: QTBUG-75186 Change-Id: Id7a151d6db137fd337e4dd68ebe7c8aa08ed80e0 Reviewed-by: Martin Smith <martin.smith@qt.io>
* qdoc: Allow namespace members to use \relatesMartin Smith2019-04-081-1/+2
| | | | | | | | | | It had been required that \relates could only be used to relate global entities to a class. This change allows \relates to be used in the comments of entities in a named namespace. There are several cases in qtextstream.cpp Change-Id: I17b61dbdaf6b6bd8c420a2fa1fd9deef6b7125dc Reviewed-by: Martin Smith <martin.smith@qt.io>
* qdoc: Search for QML type before creating itMartin Smith2019-04-021-14/+17
| | | | | | | | | | | | | | | | | | | | Because we have QML types that represent C++ classes, it is possible for qdoc to process a \qmlproperty command before it has processed the \qmltype for the QML type where the QML property belongs. This is because the \qmlproperty command can appear in a different .cpp file from the one containing the \qmltype command. If the .cpp file is parsed first, the QML type node won't exist when the \qmlproperty is processed, resulting in a qdoc error. This update forces qdoc to always check for the exist of the QML type before creating it and before creating any QML properties for it, and if the QML type does not exist, create it. If it does exist, use it. Change-Id: I78705aa95ee5bf3abc2e17fb2b6cd52191d54b68 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Paul Wicking <paul.wicking@qt.io>