| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have been using the \qmlpropertygroup command to document complex
properties. we also have the \jspropertygroup but it hasn't been used.
However, we also have the shared comment concept, which we have used
for documenting groups of functions. This update changes qdoc to use
the shared comment concept for QML and JS property groups. The property
groups commands are therefore no longer needed. But there are several
uses of the \qmlpropertygroup command, and qdoc still recognizes these,
although it uses the shared comment concept to handle them. The property
group commands will be removed from the qdoc manual in a later update.
Change-Id: Ie98638546756fd1a70067a7cd483c3b962c02954
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment, qdoc cannot generate documentation
for python examples as it expects a .pro or
.qmlproject file for every \example command it
finds. Since Qt Creator v4.9, developers can create
a python project using the New Project wizard, which
means qdoc could use the .pyproject file to verify
the python example.
Change-Id: Idcecdffe4f798bd1409123f988e3b826247aed72
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When QDoc calls Aggregate::normalizeOverloads(), process \internal
function nodes last. This ensures that they get assigned overload
numbers higher than the public ones, and adding internal overloads
no longer shuffle around the public HTML anchors (that are based on
the overload numbers).
Also, when searching for functions, ensure that we don't return an
\internal overload if a matching public one exists. This gets rid of
a number of linking warnings.
Change-Id: Idaac077e2f88d310e3261bf5b4c3df33ca02f873
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Replace 0 as nullptr constant with nullptr.
Remove reduntant semi-colons after member function definitions.
Adjust whitespace on lines otherwise touched.
Change-Id: I6af218ca8377611040360e0a3da392e7cffd29e9
Reviewed-by: Martin Smith <martin.smith@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This update corrects the documentation pages for classes,
structs, and unions that are declared inside a class or a
struct. In Qt, a struct is often declared inside a class.
For such internal declarations, the requirements for
making the inner entity available were incorrectly shown.
All that is really necessary is to include the parent class.
So the requirements for including the inner entity are now
replaced with, for example, "Struct State is declared in
class QAccessible," where QAccessible becomes a link to the
reference page for that class.
It was easier to implement this change by teaching qdoc to
recognize structs and unions in addition to classes, so that
is also included in this change.
Change-Id: I1a0d46ef19a130506c7bcbf77b46e298f6ab2f71
Task-number: QTBUG-66872
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This update was motivated by the need to correct two known issues
in qdoc. First, linking to overloaded functions failed in some cases
because the overloads were not numbered consistently, causing links
to go to the wrong overload or to nowhere at all. Second, the
mechanism for handling the \relates command didn't support using it to
relate a function to more than one class.
For example, there are many global qHash() functions spread
around QtBase. Each is meant to compute a hash index for an
object of some class type, so the object can be inserted into a
QHash map for that class type. It is then desired to relate
qHash(type Xxx, int seed) to both QHash<type> and class Xxx, so
that the documentation for that qHash() function appears as a
related non-member function of both QHash<type> and class Xxx.
The example above also illustrates the overload numbering problem,
because all these qHash() functions are overloads of the name
qHash. To make matters worse, they are not all in the same module.
Most of them are in QtCore, but a few are in QtNetwork, and this
distribution problem will become worse over time as more qHash()
functions are added. Prior to this update, qdoc was unable to
relate a function to something in a different module, or it didn't
always work.
While designing a fix for these issues, it became clear that the
processing of the FunctionNode and the function parameters would
have to be rewritten. That's what this update does. These are
the main points:
1. A new subclass of Node is added to act as a proxy for a class
in another module. This ProxyNode acts as a place holder for the
functions (and possibly other elements) that are related to a
class in another module. This is used for the qHash() functions
in QtNetwork that are related to QHash in QtCore. qdoc generates
an html file named qtnetwork/qhash-proxy.html that contains the
documentation for these functions. But these functions are listed
as related non-members on the QHash class reference page in the
qtcore output directory. They are listed there in the summary,
but they link to the qhash-proxy.html page in qtnetwork.
2. A new, Parameters class is added to qdoc (parameters.h and
parameters.cpp), and the class Parameter is moved there from
node.h. class Parameters replaces the old QVector<Parameter>
wherever it was used. This encapsulates all the parameter
processing and matching in the Parameters class and simplifies
the code at all the places where QVector<Parameter> had been
used.
3. The assignment of overload numbers is now done in the
normalizeOverloads() function, which is called after all the
headers and sources have been processed but before the
generate phase begins. This assignment is a simple renumbering
now because all the overloads of a function are linked to
each other via a nextOverload_ link in the FunctionNode. The
first function named qHash() is inserted into the Aggregate
node's function map, but subsequent qHash() FunctionNodes
are not entered into the function map but are linked to the
first qHash() via its nextOverload_ link.
4. The \relates command can now be used multiple times in a
single qdoc comment. There remains some work to be done here
because this currently only works for global entities, but
there are several cases where \relates has been used in the
qdoc comment of a member of a class. This will be fixed soon,
I believe.
When qdoc sees the first \relates Xxx command, for example
for qHash(Yyy, seed), that qHash() is a child of the global
namespace. qdoc allows it to remain as a child of the global
namespace but it tells class Xxx to "adopt" that child (see
Node::adoptChild()). This function makes this instance of
qHash() be a child of class Xxx (in this case QHash<type>),
so that the parent of this qHash() becomes Xxx. After this
"adoption," qHash() is a child of both the global namespace
and class Xxx, but qHash() only knows it is a child of Xxx,
i.e. its parent pointer is Xxx. If this is the first qHash()
to become a child of Xxx, it is inserted into the function
map of Xxx, but its nextOverload_ link is not changed. This
is because all the global qHash() functions have already been
linked into the nextOverload_ linked list, and this list must
not be changed. Hence, when qdoc searches for qHash(something)
to make a link to it, it will find it as a child of the global
namespace, but it will correctly link to it using its actual
parent pointer.
When qdoc sees the second \relates Yyy for this qHash()
function, qdoc sees that this FunctionNode has already been
made a related non-member of Xxx, so it can't let Yyy "adopt"
it. Instead, it tells Yyy to clone this qHash(), which creates
a shallow copy of it but resets its nextOverload_ pointer to
nullptr. I believe this clone of qHash() won't be found in a
search for a function named qHash(), because the global one
(the adopted one) will be found first. Or, if it is found, a
link to the clone will be generated, but that's ok because
the documentation is identical.
Note that the existence of qHash in two child lists is taken
into account at destruction time. The only place where a Node
is destroyed is in the destructor of Tree, which destroys the
Node tree from the root down to the leaves. Each aggregate
node is responsible for deleting each of its child nodes, but
it only deletes a child node if it is the parent of that child
node.
All of the above revealed that some of the findFunctionNode()
functions were either no longer needed or weren't being called
in the first place, so they were deleted.
This change is now ready for testing.
Change-Id: I6da3e2e9e71d39a29d90e073ed614309a49e3d4c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
| |
Change-Id: Ia715d6f5685363e4ccc22172ea45e43f1da72a17
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
| |
An early return lets it declare its returned pointer later and a
terser name for this variable is entirely sufficient. (This also
prepares the ground for changing its return type and de-virtualising.)
Change-Id: Ia94d810d341535d2d81aa28820696bfb2eec1652
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
| |
Add a missing null-check to a loop over nodes. Tidied up handling of
the case where the node is an Aggregate, in the process.
Change-Id: Iec39efdc9565c730baa8e0118de7cef50acd84f8
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
|
|
|
|
| |
Change-Id: Ie2ea694bd319f483e9a70f5934031028e0894976
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
CppCodeParser::processTopicArgs() neglected to check whether nodes are
internal (or internals are to be included) before including them.
Add Doc::isInternal() and CodeParser::showInternal() to let it check
this and add the check. Tidied up surrounding code in the process.
Change-Id: I9e1ca379a8e58c1519c345bbf98f441915998061
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
| |
Change-Id: I62692b4b667a32fe77ee9dc51be15114aae9387b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
|
|
|
|
|
|
|
|
| |
The \indexpage command is no longer used. This update removes it
from qdoc and from the qdoc manual.
Change-Id: I7ac0cdc2d7fffc91dda01024740478e7da5570f0
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a significant refactoring of QDoc's Node class hierarchy,
which is meant to make maintenance of QDoc easier, and which will
enable further development of QDoc as a library and plugin.
Class DocumentNode is renamed to class PageNode, and it inherits
the Node base class instead of inheriting class Aggregate. Class
Aggregate inherits class PageNode instead of the Node base class.
IOW, class DocumentNode and class Aggregate have swapped places
in the class hierarchy, and DocumentNode has changed its name to
PageNode.
This makes the Node hierarchy more logical because:
1. Every entity that causes a documentation page to be written
is a PageNode.
2. Only those PageNodes that can have children are Aggregates.
Thus the HeaderFile subtype of the former DocumentNode has been
promoted to class HeaderNode, which is a subclass of Aggregate.
This makes sense because the old HeaderFile DocumentNode caused
a documentation page to be generated, and that documentation page
was very much like a class reference page. The \headerfile command
is not used a lot in the Qt documentation but there are some useful
cases, so it is worth making a subclass of Aggregate to handle them.
The HeaderNode is now processed very much like the ClassNode and the
NamespaceNode.
Developers should be advised that isDocumentNode() is now isPageNode(),
but isPageNode() can no longer be used to decide if an Aggregate* is
a PageNode* (DocumentNode*), because Aggregate is now a subclass of
PageNode. So a new convenience function is added: isTextPageNode(),
which returns true if your Node* is a PageNode but not an Aggregate.
IOW, isTextPageNode() returns true if the Node* is some kind of text
page that doesn't represent a C++ or QML declaration.
Class ExampleNode is a subclass of PageNode, not Aggregate. IOW, an
ExampleNode no longer has children. Instead, the example files and
example images that belong to the example are stored as string lists.
It seems to work, but there might be problems in help files I haven't
found yet.
Class CollectionNode is now a subclass of Node instead of LeafNode.
Class LeafNode is removed. All former subclasses of LeafNode are now
subclasses of Node.
This change also removes a lot of DITA bitrot.
Work remaining to be done:
1. Remove the remaining DITA bitrot.
2. Consider letting QmlProperty and JsProperty be instances of Property
and use the Genus value to distiguish them.
3. Also consider replacing QmlPropertyGroup and JsPropertyGroup with a
single PropertyGroup and use the Genus value to distinguish them.
This update also rearranges the parameters passed to the clang parser,
and it removes some diff conflict lines that got saved by mistake.
Change-Id: I918f83030c48d96db4a5588ab53458f221a5374e
Reviewed-by: Martin Smith <martin.smith@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
| |
The \compat command is no longer needed in QDoc, and the code that
supports it makes some parts of QDoc needlessly complex. This update
removes it, along with the documentation for it in the QDoc manual.
Change-Id: I249b571e24ff8c3530d1ae5dbb4fff9186dba49d
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
qdoc didn't handle this. This update fixes most of what was wrong,
but tuning the details of the namespace reference pages might follow.
We have namespace Qt as an example. Most of the elements in the Qt
namespace are in QtCore, but a few functions are declared in QtGui.
Before this update, qdoc used the hack of using #ifdef to remove the
declarations from qtextdocument.h in QtGui and .cpp and then added
them back into qtnamespace.h and .cpp in QtCore.
Now that hack is no longer necessary. The functions in the Qt namespace
that are declared in QtGui are documented there, but the documentation
is linked to from the namespace reference page, which remains in QtCore.
That is, only one \namespace command is used to document the Qt namespace,
and it appears in qnamespace.qdoc where it always did, but the documentation
for the Qt namespace functions declared in QtGui is now appears in
qtextdocument.cpp where it belongs.
This also allows qdoc to report when a namespace contains elements that are
public and documented, but the namespace itself is not documented, which was
not possible before this change. qdoc also reports if a namespace is documented
in more than one module. That is, for example, when \namespace Qt is used in
both QtCore and QtGui.
Note that this change will increase the number of qdoc warnings in
QtBase, but the new warnings are expacted.
Change-Id: If978a59209b7b2ae90713d3ae809ae03361df72f
Task-number: QTBUG-67267
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A class node must have pointers to the class nodes of its base classes, but these
pointers might not exist when qdoc creates the class node for the class. They might
not exist until all the index files and include files have been parsewd. qdoc was
trying to resolve the base classes too early. This update lets qdoc wait until it
is known that everything has been built before attempting to resolve inheritance.
This update also delays finding the pointer to the function node for the overridden
function for a function marked "override" until the pointer is needed. Instead of
storing the pointer to the node, the qualification path to the function is stored
as a string, and the string is used to look up the overridden function when it is
needed, which is only when the \reimp command is processed during output.
The function that resolves the pointer to the overridden function was moved to the
function node class, where it makes more sense. The way a few qdoc warnings are
reported was also changed.
Change-Id: Ia54642d11242386ae75139065f481e5d30f79fb5
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
| |
Task-number: PYSIDE-363
Change-Id: If076c9a77a5a11c05035f6fc30e6d68e60a35045
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have the case where multiple different topic commands can
appear in a qdoc comment in a .cpp file, when C++ is being
documented as QML. Specifically, a \qmlpropertygroup command
can be used with multiple \qmlproperty commands. The clang
code parser was reporting this as an error, even though clang
would never see these commaqndes because they are parsed by
the old qdoc command parser. The hasTooManyTopics() function
was changed to allow this case. It fixes many qdoc warnings
in QtDeclarative.
Change-Id: Iaea9a4b9c531f022544749819f65a48111ad0cc1
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because processing these commands do not use clang, their implementation
is moved from ClangCodeParser to CppCodeParser - this ensures
that these topic commands are processed also when they appear in
.qdoc files (PureDocParser, used for .qdoc, derives from CppCodeParser).
Also, these functions did nothing when qdoc was running in prepare
phase which in turn meant that they were not written to .index, thus
breaking cross-module linking for macros/QML methods/signals. That
check is now removed and the functions always do their thing.
Change-Id: I8d9333b02092708955b619b573254eda5d82f038
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The shared comment in qdoc was originally meant only for
use with the \fn command, and only for multiple \fn commands
in the same class. But it proved to be useful for other things,
so people started using it in other contexts, even though it
didn't work there. This update should handle them all.
For example, when listing multiple \fn commands, they no longer
need be for functions in the same class. Also, multiple \typedef
commands are handled correctly.
Change-Id: I4be86026a227d74822f5f2295577adf0fe170d49
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qdoc/cppcodeparser.h
src/qdoc/location.cpp
src/qdoc/qmlcodeparser.h
Change-Id: I2e579ca5d83cd1c4b42acc9a07066d800cbc02cb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change replaces the last uses of qdoc's old, ad hoc
C++ parser. Clang is now used for parsing all C++ code.
\macro, \qmlxxx, and \jsxxx commands are parsed by simple
pattern matching functions using QString::split().
Change-Id: If6f95b0487d1dd3206373bc55ec8e6b8b9c55b1e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change is a partial fix for the multi-\fn documentation concept.
It outputs the documentation once but listing all the function signatures
from the \fn commands found in the qdoc comment.
Multiple \since commands are not implemented; the \until command is not
implemented, and providing text applicable to a specific \fn signature is
not implemented.
This change requires clang, which means it requires a sequence of other
updates as well, so you can't test it unless you have all that stuff.
Task-number: QTBUG-60420
Change-Id: Ib316b6f97fa427ef730c4badfc785101bff55dce
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This update makes qdoc parse and record the presence of
ref qualifiers on the end of function declarations. It
unfortunately increases the number of qdoc errors
reported in QtBase, but that is because these functions
are not documented correctly. There will be another
update to qdoc to allow documenting multiple functions
with a single comment, which is needed for documenting
these ref qualified functions but also can be useful in
other contexts.
Change-Id: If2efb1a71c683a465d66608a20e238d84ea45d9a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old qdoc C++ parser is still used for parsing function
signatures in \fn commands. The parser could not handle the
case where a formal parameter is an array declaration. Now
it parses the formal parameter, so the syntax errors have
disappeared. But there is a separate problem involving the
matching of the declaration to the same declaration in the
header file, which is parsed by clang. However, this is a
separate issue not addressed by this fix.
Change-Id: I61be810b02ac50a6ee380664a41915cc85633c66
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Allow implicitly declared special member functions to be
explicitly documented. For example, in class QFuture, the
destructor, copy constructor and assignment operatore are
implicitly declared, but they are explicitly documented
in qfuture.qdoc. clangqdoc no longer complains that it
can't find these functions in any header file. It creates
them for documentation purposes, and they are documented
as expected.
Where these function signatures appear on the class reference
page, " = default" is appended to the end to indicate that the
function is implicitly declared.
Change-Id: I7bcf16c31099439f424b438eb41589435d7254b6
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The way function signatures are specified is changing.
A basic assumption of qdoc was that in the function
signature specified with the \fn command, each formal
parameter would have a name, and the name would be
documentede in the text using the \a markup. This is
no longer valid. There are now several cases in Qt where
std::nullptr_t is used to specify a formal parameter, and
no parameter name is provided. Furthermore, there are
a few cases where some other type is used as the
parameter type and no parameter name is given.
The meaning in the first case is that the function must
be called with NULL, and the meaning in the second case
is that the parameter is not used in the function implementation.
This clean up task must be accomplished in preparation for
implementing the changes described above. The Parameter
class had become a kludge. The so-called "rightType_" data
member (which has not been used for quite a long time now
and which was marked for removal long ago) is removed here.
The change also affects the <parameter> element in the .index
file, where the "right" item is removed and the "left" item is
renamed to "type" . This index file change might break 3rd
party applications that parse qdoc's index files, but I think
there is only one, so be on the lookout for a complaint from
that guy.
Task-number: QTBUG-58277
Change-Id: I721bebdd5d0f2fcd65324373c3a3ec3ea1c33e26
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The old qdoc parser is still used for parsing \fn
commands because clang can't be used to parse code
fragments. This causes a problem when the "signed"
reserved word is used because clang doesn't keep
it if it doesn't add anything to the type, while
the old qdoc parser always appends it to the type
under construction.
The fix here is to let the old qdoc parser hold
the "signed" reserved word aside until it knows
what the next lexeme is. Then it either appends
the held "signed" or discards it, depending on
what the next lexeme is. e.g., if the next word
is "int" discard "signed" but if the next word
is "char" append the held "signed" before
appending "char".
Change-Id: I67953d964cd09410126d64fa3305c669111e74ce
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
clangqdoc now handles the type alias declaraction and provides
the \typealias command for documenting it. It is documented as
a typedef.
Task-number: QTBUG-58158
Change-Id: Iee0c8dea66026a89b3625b40b92b056cada893c1
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change allows qdoc to avoid printing warnings about
a qdoc comment, if the comment contains the \internal
command. In these cases, the comment will not be
used in the documentation, so there is no point reporting
warnings about it. However, if the showinternal option is
used, warnings about comments marked internal are printed
anyway.
Change-Id: Idcb329958681523c79e9f6a3a144ae26d44a6906
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an argument to a function is itself a function, use
the same representation of its type that clang uses.
- Omit spaces adjacent to parentheses
- The argument name is not part of the argument type.
This is required so types parsed with our parser lead to the same
string as libclang gives us.
The only function affected in QtCore is qRegisterAnimationInterpolator.
Before: void qRegisterAnimationInterpolator(QVariant(* ) ( const T & from, const T & to, qreal progress ) func)
After: void qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func)
Unfortunately, this means the documentation does not contain the parameter
names in the function type. We will probably have to adapt the documentation
of qRegisterAnimationInterpolator() to mention the meaning explicitly.
Change-Id: I00ba1854869c061fb54c6a53e6eb02b934c20459
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The file qt_find_clang.prf is inspired by qtcreator's clang_installation.pri.
The code from the while loop in ClangVisitor::parseProperty contains code
moved from CppCodeParser::matchProperty. The code in the for loop of
ClangCodeParser::parseSourceFile (from the "Doc parses the comment"), is mostly
moved from CppCodeParser::matchDocsAndStuff.
In CppCodeParser, most of the code is removed since clang is used for parsing.
We just need to leave enough to parse the declaration in the comments which
still use the old parser (\fn, ...)
Known issues:
- When the parameter name is a comment, it is lost.
(e.g. QObject::eventFilter(QObject * /* watched */, QEvent * /* event */)
- I can't compute default parameters when they are expanded from a macro.
(e.g. QObject::tr)
- Instances of #ifndef Q_QDOC need to be reviewed
Change-Id: I92d4ca4fc52810d9d3de433147a9953eea3a1802
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QML types and QML basic types were not autolinked correctly in many
instances.
- Provide correct context (genus) for code quote commands. This
guarantees that the types resolve correctly for a \qml snippet
even if there are colliding C++ target names.
Note: we do not enforce 'CPP' genus for \code command, as
it is commonly used also with QML code.
- Similarly for examples, each .qml source file is set to have QML
genus.
- Remove QML basic types from the hard-coded map for known (C++)
types/keywords. This prevented linking to these types.
Task-number: QTBUG-62440
Change-Id: I578d8d4675e99cb4ba54171031efd8dc93040160
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a bug where '\generatelist examplefiles' with no second parameter
produced an empty list, instead of listing all files.
Also, no longer restrict the searching of example image files to the
images/ subdirectory. All images under a project directory are now
listed, except those under doc/images.
Minor fixes to related QDoc documentation.
Change-Id: Id4516ba2feb98466a0e893a85f85118e3d21eae2
Reviewed-by: Martin Smith <martin.smith@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
|
|
|
|
|
|
| |
doc.cpp:632:39: error: this statement may fall through [-Werror=implicit-fallthrough=]
Change-Id: Ia3e896da908f42939148fffd14c48709a6772552
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
| |
They're faster/expand to less code.
Change-Id: I4d79abb870c7b49784be17dc174ab68d98b1a75d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
|
|
|
|
|
|
| |
Change-Id: Iad837dbdaf492eff77ced4d93dc05095e1d89400
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Michael Winkelmann <Michael.winkelmann@qt.io>
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
|
|\
| |
| |
| | |
Change-Id: I29e1f5d7d146cc77f8cf92bfbe2e41ffad50a041
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QDoc maintains a global map of base types for all QML types. This
caused issues whenever QML modules have conflicting type names;
for example, types from Qt Quick Controls (v1) were incorrectly
marked as deriving from QQC v2 'Control' type.
To improve the situation, make following changes:
- Manage 'inherited by' map in a single location. Types are
added to this map in a pre-generate step
(QDocDatabase::resolveQmlInheritance()) after parsing all
sources. This allows better control of searching - if the
QML type node has an import list, the search is now
always based on it.
- Add a safeguard against using a base type from a module
with major version different to the import statement.
- Use node pointers as keys in 'Inherited by' map,
instead of type-name strings.
Task-number: QTBUG-53529
Change-Id: I6665a520c9197fa90e84d67b12e3405b5b3f0901
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
"\page xx attribution" now marks a page as describing
a code attribution, and \generatelist{attributions}
generates an overview of all attribution pages.
Originally code attributions were meant to be handled
by \legalese ... \endlegalese and \generatelist{legalese}.
Anyhow, this fails giving more details than the pure license
text.
Change-Id: I3543f077051b361ce59fe27e50f9719dfa52ced3
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/assistant/assistant/doc/src/assistant-manual.qdoc
Change-Id: I136caf5f26eff4d1c2574459b8dff9937c2c372d
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Sort more lists before writing output
Extract an existing function for comparing nodes, and use it across the code base
Fix up the function to also sort private nodes, it is needed for reliable sorting.
Change-Id: I934c875ef3e8a36d0e684f5b67d0ca1b81e5716f
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
From Qt 5.7 -> tools & applications are licensed under GPL v3 with some
exceptions, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one
(in those files which will be under GPL 3 with exceptions)
License header tests also updated to match current headers.
Change-Id: Ia6bdacaa3c5bbc9d31334e1a0cabfe502a484dc4
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Documentation configuration variables 'excludedirs' and 'excludefiles'
had no effect on what source and image files were listed as belonging
to an example.
This commit fixes that, and refactors excludedirs/files handling:
Remove duplicated code blocks, amd simplify the code reading the
variables:
- Drop checks whether an excluded directory exists
- Drop conversion of native separators for excluded paths
Both are unnecessary; QDoc expects '/'-separated paths for many other
variables, and if an excluded dir does not exist, it won't exclude
anything.
Change-Id: Ie25511e20d33888653c23bb84975368317eb4306
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Many function clauses in the .index files show the wrong source
file line number for the function declaration. This update ensures
that the source file line number is correct.
Change-Id: I8494b649be1d1a74e5b057391566503f3d6f1424
Task-number: QTBUG-52290
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
qdoc now accepts \qmlproperty comments for QML basic types.
I didn't test it, but I think most of what was required was
added in QTBUG-51125.
Change-Id: I81fa6fa75e73f9ac2fab4794191c37730a4e7561
Task-number: QTBUG-40428
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
|