Commit Graph

1332 Commits

Author SHA1 Message Date
Ivan Donchevskii
99bd0ed2a4 Clang: Rebuild overview model tree when token data is updated
In release builds overview model tree is built earlier
then the job with token information is completed.

Change-Id: I1a563551e813996001fb97924ac441e2b7d599b9
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-03-23 14:15:45 +00:00
Ivan Donchevskii
f67df4f9ab Clang: Check that follow symbol QFuture is not cancelled
We can't take QFuture result if it's cancelled.

Change-Id: I493e083c0d35e753d1b2616caf2081f472393e34
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-03-20 12:58:14 +00:00
Ivan Donchevskii
5068f9ac36 Clang: Check that local renaming QFuture is not cancelled
We can't take QFuture result if it's cancelled.

Task-number: QTCREATORBUG-20008
Change-Id: I781746cf1d638627bb5992efa23d94111908f6d0
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-03-20 10:38:26 +00:00
Ivan Donchevskii
08d1274ccc CppTools: Remove processEvents call from follow symbol
processEvents is a bad way of dealing with asynchronous
requests. Use QFutureWatcher for that purpose.

Change-Id: I3839cb9db80a6d391f6af1178e96986a325b7b99
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-03-19 13:37:46 +00:00
Ivan Donchevskii
4d153b4f67 Clang: Add combobox with tidy configuration options
The old way was not flexible enough.
With these options it's possible to just use your
config file or set tidy command line yourself.

Change-Id: I1bace40986668dee5e1b30c9d03090a3fd22e253
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-03-19 13:19:00 +00:00
Eike Ziller
4cdb9b26cf Enable Clang code model by default
It has been around for a long time now, many e.g. windows specific
issues have been fixed, and we concentrate our development effort on it.
Many bugs in the built-in model stay unfixed, and we'll definitely not
support modern C++ there, which leads to many bug reports that are
closed with "works in clang code model".
Let's switch that around.

Task-number: QTCREATORBUG-19297
Change-Id: I59ec9621ad76590db8ec33f9658af6d103c9da93
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-03-16 13:15:09 +00:00
David Schulz
5e2ad9457f ClangCodeModel: Fix crash on git diff/show
currentEditorChanged is emitted also for none TextEditors, so
check the qobject casted TextDocument before accessing it.

Change-Id: I57080221bec34b879f21e022029524818ea92569
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-03-01 11:47:32 +00:00
David Schulz
a4b5fc00a8 CodeAssist: use shared pointer to pass around proposal models
Task-number: QTCREATORBUG-17752
Change-Id: Ia41f169b86ead209830e6f15764062389ced2b67
Reviewed-by: hjk <hjk@qt.io>
2018-02-27 12:32:36 +00:00
Eike Ziller
7c3cfa166d Merge remote-tracking branch 'origin/4.6'
Conflicts:
	src/plugins/coreplugin/helpmanager.cpp

Change-Id: I2feb60ec0afb2f22f75dc137a01c3fa217b299d8
2018-02-23 10:56:52 +01:00
Ivan Donchevskii
66fe088ab8 Clang: Do not call processEvents call in local renaming
Use QFutureWatcher and lambda instead.

Task-number: QTCREATORBUG-19799
Change-Id: I00e9439d46609902cbfb02906280c0c96b8c884e
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-02-23 08:40:54 +00:00
David Schulz
9b5f4a41b9 Clang: fix qbs build
Change-Id: I969b1f3053421c7222fc04c7ba1e8324983506f0
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-02-21 11:41:07 +00:00
Ivan Donchevskii
5e872c0fcd Clang: Introduce OverviewModel for clang
Change-Id: I1473e3f679f4345a04c55f1ee80cfe35e21a4347
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-02-21 06:55:59 +00:00
Ivan Donchevskii
432ae65944 Clang: implement current document filter
Filter is based on full token infos which come
from clang code model after token infos with pure
highlighting information.

Inprovements:
- functions also provide the return type after the signature
- now supports Q_PROPERTY
- all c++ features that clang 5.0 supports

Change-Id: If3e30d238984f39df8d2c3b9ba3ee085c4117f3d
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-02-20 14:03:53 +00:00
Ivan Donchevskii
dacfc611c5 Clang: Add highlighting types for ObjectiveC
Builtin code model supports ObjectiveC classes,
properties, etc. We can easily get the same
information from clang.

Change-Id: Iede5e177d4932f404e4ccb81ae356eee8faffb71
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-02-20 13:34:37 +00:00
Ivan Donchevskii
524d3ea28b Clang: Helper function to get token IconType
Change-Id: I9de562102eded9391ab0d6b895b8d812e259efd6
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-02-20 12:44:56 +00:00
Ivan Donchevskii
66c7629814 Clang: Properly handle Q_PROPERTY in TokenInfo
Transform Q_PROPERTY into unique AST node.
Mark different parts with types and search for parent
in FullTokenInfos.

Change-Id: Iaa1ec0c73d34773edf5605d3682bd6a290d195de
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-02-20 06:49:47 +00:00
Robert Loehning
1fcd494cc7 Clang: Remove dead code
Change-Id: I609929ca7723c60e108e30b7789c4482ebff7228
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-02-14 11:06:53 +00:00
Eike Ziller
c7fdb93865 Merge remote-tracking branch 'origin/4.6'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp

Change-Id: I2445882a270731b866b04f28ff87d161224c539a
2018-02-13 13:37:37 +01:00
Ivan Donchevskii
d01b474b46 Clang: Refactor TokenInfos
Remove code duplication.

Change-Id: Ib1859f2c3a04f66d0f0b669b4e93a7fc06ab8e61
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-12 08:03:47 +00:00
Robert Loehning
43947fb868 Clang: Compile fix
Partially reverting 7282e05554

Change-Id: I114cd7d5da9905cd6ce7e1044f848aeac369be37
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2018-02-09 17:13:10 +00:00
Robert Loehning
7282e05554 Improve translated strings
Change-Id: I7a45c6f8dcbb0e1b3c17a60823664fe1943c5654
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-02-09 16:36:54 +00:00
Ivan Donchevskii
7698d95576 CppTools: Get OverviewModel from model manager
Move ownership and add the placeholder for future clang based
OverviewModel.

Change-Id: Ia44d2c1d0db59b40239d1f7934bf37a02e4b14e6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-09 13:29:37 +00:00
Eike Ziller
5432dd1f5c Merge remote-tracking branch 'origin/4.6'
Conflicts:
	src/plugins/coreplugin/locator/locator.cpp
	src/plugins/imageviewer/imageviewerplugin.cpp
	src/plugins/remotelinux/remotelinuxplugin.cpp
	src/tools/clangbackend/source/tokeninfo.cpp
	tests/unit/unittest/data/highlightingmarks.cpp

Change-Id: I74cc3ba3a2836cb9d0e65d3380d8c4f88d720c67
2018-02-07 11:58:23 +01:00
hjk
59d2505441 Remove two unneeded uses of ICore::instance()
The functions are static nowadays.

Change-Id: Ic6f6cb9c58319f3b33d8201aefb630b9381b2af3
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-02-02 07:23:23 +00:00
Ivan Donchevskii
d81580b7a3 Clang: extra clangbackend job to collect full token info
Limit document annotations job to only highlighting data
collection and move more expensive calls into separate job
that runs after it.

Change-Id: Ie792a3f741ac45c81033dd5b3a20ed061604f927
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-02 07:01:59 +00:00
Ivan Donchevskii
bdd5066665 Clang: introduce more data in TokenInfo
Data added:
- return type spelling for functions
- parent spelling
- access specifier for class fields and methods
- storage class

New highlighting types are added, therefore
types are now categorized by class, struct, etc.

Change-Id: I1739b94a6f777045fde655060d8b9a12b6e0889b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-02 07:01:28 +00:00
Ivan Donchevskii
eb1f85a971 Clang: simplify column convertion calls
Pass QTextBlock directly into clangColumn call.

Change-Id: I3410a82ed9a84da66e7b430e2aefce64ec459db8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-01 14:14:15 +00:00
Ivan Donchevskii
fbbdfd2444 Clang: Add commentary about column convertion
... to/from utf8 byte offset used by Clang.

Change-Id: I294d6cd61b416e5f2d64206ee2f3f1b4a91fb1d3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-01 12:22:45 +00:00
Eike Ziller
ecb9fae785 Merge remote-tracking branch 'origin/4.6'
Conflicts:
	share/qtcreator/qml-type-descriptions/qmlproject.qmltypes
	src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp

Change-Id: I35fb652f29a98a798be7c8b4b4c2e581eb175fb6
2018-02-01 09:58:36 +01:00
Nikolai Kosjar
33b6fe812a Clang: Make clazy/tidy options part of the diagnostic config
As a side effect, clazy/tidy options become available for project
specific customization in the projects mode.

Change-Id: Id72762dedd857915139c15f532d2f1c6d1f43edb
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-29 08:14:14 +00:00
Nikolai Kosjar
5b1ae09fbf Clang: Auto reparse if diagnostic config changes
On diagnostic config change, affected documents are closed behind the
scenes. Visible ones are parsed immediately, invisible ones are tagged
for parse once they become visible.

Task-number: QTCREATORBUG-16263
Change-Id: Id4dcc69f1a4bfccc597e798d6821f8718f86e352
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-29 08:14:08 +00:00
Nikolai Kosjar
2c74441260 Clang: Use only one ClangProjectSettings instance per project
So far we've created ClangProjectSettings objects on demand. To get
change notifications there should be only one per project alive (and
accessible).

Change-Id: I757186ceaa642c6864d02946258cc6eb18064a52
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-29 08:14:03 +00:00
Nikolai Kosjar
384128662e Clang: Avoid storing settings more than needed
There is no need to store on every key stroken when changing the
diagnostic config in the projects mode.

Change-Id: I627c11621b999527c110862365ba5c2a0b1e878b
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-29 08:13:57 +00:00
Nikolai Kosjar
49ba25e183 Clang: Let ClangProjectSettings announce changes
Change-Id: Idd6c91f5e8f0a73e4a15fe2f4b667302e6ee5e49
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-29 08:13:51 +00:00
Ivan Donchevskii
09310bcdc6 Clang: fix utf8 related column numbers
Use new clang_getFileContents to efficiently convert
utf8 byte offsets from line start to column numbers.
Also provide simplier backwards convertion to pass
resulting utf8 offset to clang.

Task-number: QTCREATORBUG-16941
Change-Id: If0e58fe01ad3e281b7e952e972b9e86f6e75aadb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-01-26 15:39:31 +00:00
Nikolai Kosjar
fa501caa76 Clang: Handle cancelled future in ClangHoverHandler
This completes

  Clang: Cancel tooltip future on backend restart
  commit 56157f739d

Task-number: QTCREATORBUG-19644
Change-Id: I4a27681368df912003a415cec809c578f7c409cd
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-26 11:18:17 +00:00
Eike Ziller
32c938c4a0 Merge remote-tracking branch 'origin/4.6'
Change-Id: I724da8f761275865e735e7dce10c3b2b2d99fe94
2018-01-25 10:20:06 +01:00
Friedemann Kleint
f482270432 Introduce Q_FALLTHROUGH()
Silence g++ 7.X warnings.

Change-Id: I9d06d04b496c9ec060e13e1be6f43d8fbadb1f3b
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-01-24 14:50:43 +00:00
Nikolai Kosjar
66488ba0b8 Clang: Remove unused functions
Change-Id: Id5bf1852b308ef84d8cfd575a60f084326729ac2
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-01-24 14:45:23 +00:00
Nikolai Kosjar
8836f2a6dc Clang: Fix crash when backend is not yet started
Due to DummyBackendSender not overriding requestToolTip() the base
implementation was called which assumed a connected backend.

To avoid this in future, derive DummyBackendSender from
ClangCodeModelServerInterface so the compiler will warn about not
overridden functions.

Task-number: QTCREATORBUG-19644
Change-Id: Ifd846cbe581092e1688719119dad5003da66d0a3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-24 14:23:46 +00:00
Eike Ziller
0448457fde Merge remote-tracking branch 'origin/4.6'
Conflicts:
	src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp

Change-Id: I4c619efd7c1060ffd759df44a03a111269d3478d
2018-01-24 13:42:40 +01:00
Nikolai Kosjar
6b38c73205 Clang: Centralize gathering file argument into one class
Similar to CompilerOptionsBuilder.

Change-Id: Ifac0efe37608562912af20a1c22f85e5e9308094
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-24 11:51:45 +00:00
Nikolai Kosjar
b31978a2f7 Clang: Use reference instead of pointer in editor processor
...because the pointer can't be null.

Change-Id: I318f5d7ff2d2ac7de188718ec6281b083965dfd4
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-24 11:51:40 +00:00
Ivan Donchevskii
92cdfc0c2a Clang: new empty locator filter classes
Introduce classes to replace builtin locator filters.

Change-Id: I5cc6f15fb0f59ea8a51b14a86301cf219cc0d6d6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-01-24 11:48:42 +00:00
Eike Ziller
437590a999 Merge remote-tracking branch 'origin/4.6'
Change-Id: I49e8b8442e2b5edffbea19cb2bba97443ebc3d2a
2018-01-23 17:06:59 +01:00
Nikolai Kosjar
30c95c937b Clang: Take over jobs if document gets new project part
We could loose jobs if e.g. the user switched to another parse context
or shuffled project files between targets/products/project-parts while
there were still jobs in the queue.

Previously, changing the project part id of a document was a two step
process:
  1) Unregister document with old project part id
  2) Register document with new project part id
On 1), we have thrown the document processors (and thus the job queue)
away. On 2), we have created a new document. Due to this separation the
backend could not take over jobs to the new document (processor) - it
could not know that these commands belong together.

Now, we avoid the explicit unregister command. On a register command the
backend has enough context to find out what to do, it can take over
relevant jobs.

Task-number: QTCREATORBUG-18856
Change-Id: Ib68a8e62140fcfdb2de58dcd2ae955b4c2e15166
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-22 14:00:03 +00:00
Nikolai Kosjar
764925eb3a Clang: Send less data on unregisterTranslationUnit
For unregisterTranslationUnit only the file path and the project part id
is needed.

Change-Id: I882d2fe07af094c07ea42413d6874539535a48ea
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-19 14:54:27 +00:00
Nikolai Kosjar
4875e07efb Clang: Add 'override' to related destructors
Change-Id: I763ec2d3462f9a3d1a1afc4270c5f1015bee758f
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-19 14:54:19 +00:00
Ivan Donchevskii
bb782f64ba Clang: Add clazy argument to ignore included files
ignore-include-files flag  does not improve performance
currently. But if we decide to use -I for some of our
include paths than this parameter will continue to skip
them for clazy diagnostics.

Change-Id: I8ff02edf224f680f88f1b178098787c0e2a629cb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-01-19 14:43:53 +00:00
Nikolai Kosjar
56157f739d Clang: Cancel tooltip future on backend restart
Change-Id: Icbc461aa765c47ae0dd708a731b4d132bfa0f7d8
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-19 14:19:55 +00:00