Commit Graph

1332 Commits

Author SHA1 Message Date
Nikolai Kosjar
09b405d11e Clang: Extract some functions in LibClangOptionsBuilder
...makes the high-level function build() less noisy.

Change-Id: Ib09fba315845a604166489fd400d0be14e16fc23
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-07-27 12:26:41 +00:00
Nikolai Kosjar
e4748fe801 Clang: Typedef some often used types
using CodeCompletions = QVector<CodeCompletion>;
using CodeCompletionChunks = QVector<CodeCompletionChunk>;

Change-Id: Id729a43566c23dc000e44d79ccf4a49e4f235f51
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-23 11:48:26 +00:00
Nikolai Kosjar
5643a45a83 Clang: Fallback to global completion if function call completion fails
We can not offer proper constructor completion with libclang <= 3.6, so
fall back to normal/global completion.

Change-Id: I90bb8d981ae20ed4c228f829ad4267221b92f8a1
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-23 11:18:55 +00:00
Nikolai Kosjar
889237f962 Clang: Mini refactorings in ClangCompletionAssistProcessor
The renames will improve the readability of the follo-up change.

Change-Id: If1f5ae2a2798c13ce7268e436dae1b3963f01d5e
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-23 11:18:50 +00:00
Marco Bubke
ae5d92d618 Clang: Refactor ClangCompletionContextAnalyzer
Change-Id: Ib42ddc672da8b068591129e2e0b9652d3e07ad58
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-23 11:13:05 +00:00
Jarek Kobus
6736331421 String fixes
Change-Id: If4fa56d283669561f61323b3ee620f6d9a7ca1b1
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-21 07:53:17 +00:00
Marco Bubke
c267a34b09 Clang: Use the CodeCompletion getter directly
Casting from a Qvariant is expensive and it happens here very often.

Change-Id: If524412f314bb8ac9e9e5e4335c7e32ff7a9ce40
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-20 14:50:24 +00:00
Nikolai Kosjar
8938addc5c Clang: Remove QTC_ASSERT
If an editor is opened, the semantic highlighter is triggered twice:

  1) From ClangEditorDocumentProcessor::onParserFinished
  2) From CppEditorDocument::applyFontSettings

Caller 1) is expected, it creates an m_unit. However, if threads are
scheduled differently, the semantic highlighter triggered from 2) will
encounter an invalid m_unit.

I'm not sure whether the call to 2) is correct at all.

Change-Id: Ia6ff2852e7d38418ebb01edc3eca3680fac1820a
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 13:20:01 +00:00
Nikolai Kosjar
91ee695c71 Clang: Extract a function
Change-Id: I3041e019c2c65d9d988d31c47823e29955cd1c51
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 13:19:58 +00:00
Marco Bubke
7b8f5d9815 Clang: Improve conversion of QHash to QList
Change-Id: I5bea89d9a432240a131311b5fed537a46b3be967
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-20 13:19:38 +00:00
Nikolai Kosjar
bf6ce59fd3 Clang: Fix occasional hang in ~SemanticHighlighter
A code path existed for which QFutureInterface<T>::reportFinished() was
not called.

Change-Id: I968c6b8cc92b9bfd49570405502da94bda8c7b56
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 13:18:21 +00:00
Nikolai Kosjar
c6b52267f4 Clang: Fix sending (un)register translation unit
Handle the following use cases:

  1. Editor is opened
    --> Register file at backend.

  2. Close editor for which a project part exists
    --> Unregister file with project part.

  3. Close editor for which no project part exists (anymore)
    --> Unregister file with empty/default project part.

Change-Id: I2b253004a920cccef989876538ab552eacf6b45c
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 13:08:32 +00:00
Nikolai Kosjar
7e7e79dedc Clang: Send modified file content only once
This introduces some

  SOFT ASSERT: "!"Got TranslationUnitDoesNotExistCommand"" in file
    clangbackendipcintegration.cpp, line 154

e.g. for include path completion. This will be addressed by a follow-up
change.

Change-Id: I97a50f5b8a44744e1379d77fc042d5e65cb191c9
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 12:55:22 +00:00
Nikolai Kosjar
f51a403518 Clang: Send unregisterProjectParts only with non-empty list
Change-Id: Id11d420c481758ccd58921dddc92c6036c9204e1
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 10:33:13 +00:00
Nikolai Kosjar
420bc69739 CppTools: Use project part ids instead of file paths
File paths are not unique since e.g. each qbs group in a file is mapped
to a project part.

Change-Id: I7df3f224dd23046b869f2588b8a34eb26cfc0b1a
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 09:49:14 +00:00
Nikolai Kosjar
95c90dcd42 Clang: Tests: Use global temporary dir to remove test file later
Change-Id: Ic31428db15ebbc3a4fc5d5a24723d3a557b77b58
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-20 09:48:40 +00:00
Nikolai Kosjar
73cee4d64a Clang: Tests: Mini refactorings
Change-Id: I4a058d4c68c126d74badfc699a239ef9b2790f3a
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-17 11:33:49 +00:00
Nikolai Kosjar
e8041f2254 Clang: Update class name in assert
Change-Id: Ib7aa42fbe8cc66fa8629cf9079e81fd0449fe14d
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-17 11:33:38 +00:00
Marco Bubke
336501943e Clang: Add tooltip for clang snippets
Change-Id: Ifccfd72c52910c6e1086d6c782552c60fbb89f5f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-16 12:54:48 +00:00
Marco Bubke
fbd549f213 Clang: Prevent double spaces for clang snippets
Change-Id: I62f9b9c217570dd6dafc45719e898cc2ac4d2937
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-15 13:53:52 +00:00
Marco Bubke
89bc1fc4c4 Clang: Rename filePaths in ids
UnregisterProjectPartsForCodeCompletionCommand is using them as ids
and not as file paths.

Change-Id: I13a82c1995c60bdb60c72f4fd794aa354fcbb4ef
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-15 08:57:42 +00:00
Marco Bubke
945c0fbc71 Clang: Add code completion for keyword snippets from clang
Change-Id: I91f7af74d811769424928bce1c586a30b5794d6f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-14 16:24:30 +00:00
Nikolai Kosjar
83d1aa0d72 Clang: Avoid heap-use-after-free in IpcCommunicator
...on shutdown.

Now the slot will be disconnected on destruction.

Change-Id: Ie511bf5400c41eee3245879ea355293e7bb5c7cd
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-14 10:19:17 +00:00
Marco Bubke
bb549770a8 Clang: Remove unused function
Change-Id: Iee4a6a4e8197db9520ad188fa872840305bca1b1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-13 10:30:40 +00:00
Nikolai Kosjar
418fc32f6a Clang: Do not call DocumentManager::modifiedDocuments() from worker thread
This is unsafe.

Change-Id: I8ac075a7289afa0d84785e37b1325d186a153000
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-10 14:04:19 +00:00
Nikolai Kosjar
5902a62298 CppTools: Let BaseEditorDocumentParser acquire the mutex
...so derived classes are freed from doing this.

Change-Id: I73f3eca54be14cfd6542a466f0e9c024457bef07
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-10 14:04:14 +00:00
Nikolai Kosjar
442bdbded2 CppTools: Avoid unnecessary blocking of main thread
Among others, BaseEditorDocumentParser::projectPart() was a blocking
operation in case the parser was running. This led to noticeable GUI
freezes for the ClangCodeModel since the function was called from the
main thread.

Rework *EditorDocumentParser to clearly separate the configuration data
(input) from the actual object state. Querying/setting configuration or
(last) state does not block anymore. update() is supposed to get the
necessary configuration and the last state at the beginning and to set
the new state at end.

Change-Id: Ib4b534fa6ff373c3059826726b3f10ece95acc21
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-10 14:04:07 +00:00
Nikolai Kosjar
91c497b1ae CppTools: Make updateProjectPart() const
...and rename to "determineProjectPart".

This is in preparation for a follow-up change. determineProjectPart()
should not set any state.

Change-Id: Iad7be8638fd97a79a4227a944896ac9af0a36862
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-07-10 14:04:01 +00:00
Nikolai Kosjar
7f4ce089d3 Clang: Tests: Make waiting for reloaded document more robust
testUnsavedFilesTrackingByModifyingIncludedFileExternally() is flaky.

Apparently the hard coded timeout is not enough for all circumstances.

Change-Id: I9f884e488d3c4bd5398e505ecee122912d946e6b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-07-10 09:30:01 +00:00
Nikolai Kosjar
cf4eae090a Clang: Clean up ClangEditorDocumentParser
Change-Id: Ib7e0b7c51b4c751b184021baac9e26d008dea06c
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-09 08:06:45 +00:00
Nikolai Kosjar
521d7cf7a3 Clang: Send in-memory generated ui header to backend
Change-Id: I59e9b1f10d1a7fe9a75cbe84117aa5cc04460dab
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-09 08:06:26 +00:00
Nikolai Kosjar
3a2c9f6d4b Clang: Fix invalid QTC_ASSERT()
The assertion failed if textDocument was of type e.g.
DiffEditorDocument.

Change-Id: I00f8734b99c1187c071ef55ff1622fe1f9c3eb56
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-07-09 08:05:33 +00:00
Marco Bubke
eb5afed10f Clang: Add sorting by priority
The priority is adjusted too provide a better completion list.

Change-Id: I1ebed1996f660046843e0c5249a91e8c2b1eeb88
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-08 12:29:27 +00:00
Marco Bubke
dd89d731cf Clang: Extract and test action sequence
Change-Id: I66f8f29d7b17be67a55560bdcc0b0a3aeb1ce480
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-08 12:29:20 +00:00
Marco Bubke
90500b0225 Clang: Rename originalItem in codeCompletion
Actually it is quite slow anyway to cast the variant to the value.

Change-Id: Ied18208455adf9d7d5eb500e139170ced597dc1c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 14:28:55 +00:00
Marco Bubke
031ec4d824 Clang: Rename ok in applies
Change-Id: I6509582616755b0821a00d264e5be657803a6962
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 14:28:46 +00:00
Marco Bubke
5467fc25ea Clang: Make ClangAssistProposalModel members private
Change-Id: Ib8089f4afdb72840d97e5286d8be631387e4d2c5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 12:41:05 +00:00
Marco Bubke
ed27414f48 Clang: Split clangcompletion.[h|cpp]
First step for refactor them.

Change-Id: If9de084e39ddf31317035ccbbc1fd57d7797d193
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 12:41:01 +00:00
Marco Bubke
07b3f65a20 Clang: Remove unused code
Change-Id: I1fa597d1cd582f8eb4a37c3bbb963441696e9f4a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 12:12:21 +00:00
Marco Bubke
aa90184581 Clang: Remove useless Q_DISABLE_COPY
Change-Id: I86f0b6aaf6da70634b1d8e191eb069f4e456f5fa
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 12:12:12 +00:00
Marco Bubke
5c74f34ebf Clang: Rename ModelManagerSupportClang::instance to instance_forTestsOnly
To make it clear that it is for testing only.

Change-Id: If257b0049e87c834b24073991f173bfc1b3e93e7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-06 12:12:06 +00:00
Nikolai Kosjar
dace404ca3 Clang: Tests: Normalize test files
The extra '\r' characters on Windows led to wrong cursor positions.

Change-Id: Ib0b831f7023b9031ee2a656dcf428a2da389213c
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-07-02 15:14:34 +00:00
Marco Bubke
5e2942a5bd Clang: Use member instead of pointer
It makes the resource allocation much more clear.

Change-Id: Ib276e089dc3db551171373d72e9b54c9d87b4c8c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-01 11:52:54 +00:00
Nikolai Kosjar
70bc5e842c CppTools: Add toolchain type to project part and use it
Making CompilerOptionsBuilder to use the toolchain from the project part
simplifies its public API, but following the code paths initiated by
ClangCodeModel and ClangStaticAnalyzer gets harder, so better enable the
separation of those by making CompilerOptionsBuilder a base class.

Change-Id: I0a6bb3f8323ba09b88135a7f9d1ef967331a8ff0
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-06-29 09:14:48 +00:00
Nikolai Kosjar
dcccb4cb8d CppTools: Use CompilerOptionsBuilder as an object
Makes the client code more readable.

Change-Id: Ie98ba93c758643039d3ebdc7550b1c4ac9473298
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-06-26 07:23:38 +00:00
Nikolai Kosjar
e50aafafe3 CppEditor: Fix semantic highlighting when zooming
...for the not visible documents.

First reset the extra additional formats, then set the new ones, not the
other way around.

Task-number: QTCREATORBUG-14579
Change-Id: Iae465bd9a7bb0a397fd4917df45955713aaf87c5
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2015-06-23 08:15:46 +00:00
Nikolai Kosjar
5e035bd740 C++: Rename semanticRehighlight to recalculateSemanticInfoDetached
semanticRehighlight() does a bit more than only rehighlighting and we
want to trigger (only) rehighlighting in a follow-up change.

Change-Id: Ic8da9ec8643f0f82f7c99ef9a8180b2868194254
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-06-22 07:20:21 +00:00
Marco Bubke
2b84d7611b Clang: Reorder includes
Change-Id: I324e88c0d295114390c1fac2745c0d2d47637ece
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-16 13:53:30 +00:00
Marco Bubke
1402c067b1 Clang: Rename CodeModelBackEnd in ClangBackEnd
Change-Id: I13e8a458634110456375956d4d4da7239c86957f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-16 13:29:27 +00:00
Nikolai Kosjar
53a941de69 Codemodelbackend: Fix location of binary in build dir and install it
Change-Id: I943e13b92bdaa2ee1e6ead81788da45b40926f60
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-06-16 12:14:56 +00:00