Add QFutureSynchronizer for collecting all running
futures (including those already canceled, but not finished yet).
It could happen, that we cancel the future, while
the associated task still needs some time in order
to catch the cancel request. When a d'tor of synchronizer
is run it cancels and waits for all pending futures
to be finished.
Add extra check for isCanceled() after a call to
updateDependencyTable(). In case the cancel was detected
inside updateDependencyTable(), we should return immediately.
Don't leak CppClass object inside handleLookupItemMatch()
when the task was canceled.
Amends: c400923308
Change-Id: I709e14a0c8b563d522a8e8c32b087e5f83310b24
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
On the beginning of the process of evaluating type hierarchy
the evaluating thread may freeze on a first call to
Snapshot::updateDependencyTable() for quite a long time
(e.g. when showing the type hierarchy for IPlugin class
inside Creator project - it may freeze up to about 3 seconds).
So, when we want to cancel the evaluation (e.g. when
we switch from "Type Hierarchy" into another view or when
closing Creator) we may freeze for this period. In order to
fix it we pass a future interface as an additional argument
for Snapshot::updateDependencyTable() and cancel the update
when cancellation of task was requested.
Change-Id: I2147f10a68989587476c30369ec2ac552a57d5ae
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Don't freeze UI on request for show Type Hierarchy.
Move the lookup code into a separate thread.
Don't clear tree hierarchy when waiting for new one.
Show progress indicator on top of old hierarchy instead.
Add a task to ProgressManager when working on a new hierarchy.
Handle canceling the process of showing Type Hierarchy.
Implement simple progress reporting for this process.
Optimize a bit DerivedHierarchyVisitor.
Change-Id: I3894ac6ed3f4834831831f083f718f8385ca346f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
std::mismach() overload taking 3 arg assumes, that
second string is at least as long as the first one.
We don't guarantee this, as somethimes filePath2 is
empty string. Use 4 arg overload instead, which
ensure we don't exceed the valid range.
Fixes: QTCREATORBUG-24970
Change-Id: I8b7b11d124f69c7c9cb3246ee969f134fa026e08
Reviewed-by: hjk <hjk@qt.io>
This basically extends the existing hack to cover one more case. It may
very well break again in some other context, in which case we will
remove the custom definitions entirely, as the reason they exist in the
first place does not seem terribly relevant.
Fixes: QTCREATORBUG-24580
Change-Id: I757ac23682c81c647a5d968fa549baac5716010c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Courtesy of readability-static-accessed-through-instance
Amends: b2a766a79a
Round #2: This time done with Qt Creator's Analyzer, which
found other occurences than run-clang-tidy.py
Change-Id: I479e280c7abcf2d24baccbb0af69ae4bda05198e
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This way we silence the clang warnings about calling
virtual methods from c'tor or from d'tor:
[clang-analyzer-optin.cplusplus.VirtualCall]
Change-Id: I8d6318b490152133da4833bda2ba28622bce30dd
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Clang++ 11 has __cpp_constexpr_in_decltype
Change-Id: I450a79f2af8cd6aca51b95b11b3c06b9682c0418
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Calling first() or last() on temporary container may
unnecessarily detach the container. Fix it by calling
constFirst() and constLast().
Change-Id: I2460efd5dbee1534eec8a514d9bff2a947bfddf9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
We do it wherever possible. Some places can't be fixed
since they still rely on dynamic introspection
(mainly QQuickItem cases).
Change-Id: Ia00b4a04d8b995c9a43b7bf2dbe76a60364bb8ca
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
- Make sure the template parameters are included in the definition.
- Find the correct insertion location when using an already-defined
template member function as an anchor.
Fixes: QTCREATORBUG-24848
Change-Id: I1272ba36403904e7aed81bcef48745793c5e2217
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The code was pushing an additional QFutureInterface through the whole
chain of functions, which was used for canceling. But since it was never
started (and never finished, and never used for reporting results),
calling waitForFinshed on it never had any effect with Qt5 and locks up
with Qt6.
Instead of using a separate QFutureInterface, use the actual QFuture
that is available and intended for it.
Fixes: QTCREATORBUG-24902
Change-Id: I5a49bcecc9cf70fbffa93aee4293004f9369df58
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Add some missing includes for otherwise incomplete types.
Make LanguageServerProtocol::JsonObject's iterators and end() methods
public. Otherwise QMetaType fails for
LanguageServerProtocol::ServerCapabilities which is used in a signal
from LanguageClient.
Task-number: QTCREATORBUG-24098
Change-Id: Id7f8a4146afb927a8589fadaefe42f7fbca45dd3
Reviewed-by: hjk <hjk@qt.io>
Silence the warning:
"Call to virtual method 'CppProjectUdpater::cancel'
during destruction bypasses virtual dispatch".
CppProjectUpdater's d'tor calls cancelAndWaitForFinished(), and
the latter calls in turn virtual cancel() method.
As long as we don't have subclasses of CppProjectUdpater,
calling a virtual cancel() from the d'tor should be safe.
Change-Id: If2ebe6a190649319401d4e4b0f6977f547c51dac
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
In Qt 6 implicit conversion between QFuture and other types
is forbidden. Make it explicit instead.
See ff0ba7e2d7b91fd5809cb314935a1ca1a436f6c9.
Change-Id: Ie42e6b9b5047ba5eeec9f63fd03179e73f95314d
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
... from those without one, and display the former like write accesses.
Task-number: QTCREATORBUG-24894
Change-Id: I5e2d83b2a3ec4735054441c346687f97eeb039fb
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Various Windows related issues and issues with additional QML designer
components.
Don't use very generic template definitions if the type has to provide
not so generic base functionality (in this case providing a stream
operator for QDataStream).
Task-number: QTCREATORBUG-24098
Change-Id: Id0729c249d1b81e4e939fdaeb2e02b8a64e7e8f9
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
... in the presence of macros.
For instance, renaming a parameter of a function preceded by some sort
of DLL_EXPORT macro would not offer to apply the change to the definition,
because the macro gets expanded and the respective tokens have bogus
offsets derived from the place where the macro is defined.
Luckily, such tokens are marked as "generated" and we can skip them for
the purposes of retrieving the actual location of the function.
Fixes: QTCREATORBUG-24739
Change-Id: If5db355b1c301060a17a687c2b5582fa1ef17d3f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
These are only necessary for the code model and can prevent clazy from
finding certain issues.
Fixes: QTCREATORBUG-24845
Change-Id: I04ba6703812918c39ebbde1dbac5af85fe18622d
Reviewed-by: David Schulz <david.schulz@qt.io>
Also add the special handling for prefix and suffix like in CppHighlighter,
as not to re-introduce QTCREATORBUG-19119.
Fixes: QTCREATORBUG-16183
Change-Id: Ie264946782220a8e5a862c1d4550bcd49bc2349f
Reviewed-by: David Schulz <david.schulz@qt.io>
Introduces a QuickFix settings page where the generation of getters and
setters can be customized. The settings can be saved into a file that can
go into a VCS. All QuickFixes that generate getter/setter/signals/
Q_PROPERTIES now use the same backend. QuickFixes that generate getters/
setters are now extended to also generate signals and Q_PROPERTIES.
Fixes: QTCREATORBUG-1532
Fixes: QTCREATORBUG-17941
Fixes: QTCREATORBUG-12678
Fixes: QTCREATORBUG-15779
Fixes: QTCREATORBUG-11620
Fixes: QTCREATORBUG-22707
Fixes: QTCREATORBUG-20157
Fixes: QTCREATORBUG-21804
Fixes: QTCREATORBUG-19814
Fixes: QTCREATORBUG-14622
Fixes: QTCREATORBUG-19803
Change-Id: I50ed2dad9b4a637fbd87b3e1f2856060ad0ad920
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
... when switching via F4 from a .h file and vice versa.
Fixes: QTCREATORBUG-24418
Change-Id: I121967dbec90125b3feed0a9d2aceb9826f925f3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Fixes build issue with Qt6, for which QStringList is now a
QList<QString>.
Task-number: QTCREATORBUG-24098
Change-Id: I0c81aa5bae413b836dbedea0bb6117b46f6f24c2
Reviewed-by: hjk <hjk@qt.io>
... and make use of that in CppTool's "Find Usages" by assigning
different colors to read and write accesses.
Fixes: QTCREATORBUG-12734
Change-Id: I067db2c8d693bb2c5be44249931ee4f0269f7e52
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>