Commit Graph

376 Commits

Author SHA1 Message Date
Nikolai Kosjar
c84e3a27d6 CppTools: Garbage collect if the last CppEditor is closed
Task-number: QTCREATORBUG-9828

Change-Id: Ie0ef9757cedb772702e49542b58d5b589506aa9e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-07-17 14:54:10 +02:00
Nikolai Kosjar
bc4fa63f84 CppTools: Move GC() call from CppEditorWidget to CppModelManager
There is no need to have that logic in CppEditorWidget. The
CppModelManager knows how many editors are open and can therefore call
GC() by itself.

Change-Id: I2ed4051ad7b8c87615014d73e29291027d49d2ab
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-07-17 14:54:01 +02:00
Eike Ziller
dd43d9908f Rename IDocument::fileName --> filePath
That is what it actually is, wrt how Qt API calls it.

Change-Id: Ied02055debf6aad75556b0d9d22e8ba2f72be555
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-07-09 13:51:42 +02:00
Erik Verbruggen
afa66ab9c7 C++: fix potential deadlock when closing an editor
When the editor is closed, the CppEditorSupport waits for the
highlighting and semantic info futures to finish. These futures might
access the CppEditorSupport through the CppModelManager, causing a
deadlock on the m_editorSupportMutex.

Change-Id: Ifeb3864ed3bc2666d83607ef50d7bfee8f3d118f
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-07-02 15:27:54 +02:00
Nikolai Kosjar
1fad00f999 CppTools: Fix snapshot in case another project is opened
When a second project was opened the snapshot was reset. That resulted
in all kinds of problems since from then on the code model effectively
was not aware of the files of the first project.

The regression was introduced by commit a0d6df7b.

Change-Id: I1ccc9de68177205b49a4ba8ead2bc8abe4592b32
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
2013-06-28 17:54:53 +02:00
Nikolai Kosjar
26fbefb26c CppTools: Allow to force a "Parsing" notification
Task-number: QTCREATORBUG-9597

Change-Id: I726a818c7d4af35dcb4863f74b08cd639a189bdd
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-06-24 13:10:51 +02:00
Leena Miettinen
41411165ba Doc: use standard wording in \brief commands
QDoc does some magic with the \class and \namespaces
and \brief commands, so the following wording must be used:
"The xxx class yyy ..."

Change-Id: Id231f30e8464898b776888d5423523de404aae34
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-06-20 11:22:47 +02:00
Erik Verbruggen
18dcac7ad0 C++: fix encoding/conversion of built-in macros
Task-number: QTCREATORBUG-9404

Change-Id: I732b729e64b065b4ac75c547d9370cbc64918a31
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-17 08:14:39 +02:00
Erik Verbruggen
10725c086b C++: fix Q_CREATOR_RUN macro handling
Moved it from the handleIfDefDirective to the pre-defined macros, so
that #if defined() can also see it.

Task-number: QTCREATORBUG-9322
Change-Id: Icbecad5c885dd2374b559969c99631c3ddc73844
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-03 15:41:54 +02:00
Erik Verbruggen
feff33827c C++: fix crash when failing to open non-existing file.
Change-Id: Ie7bd3b36139ab7fac1186cefa7222dff7277eb53
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-24 14:17:47 +02:00
Erik Verbruggen
09ea0d235a C++: moved the CppPreprocessor into its own file.
Change-Id: I399d667a1fccb376fadbd6ab8fbba243e86d8f4b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-26 13:56:08 +02:00
Erik Verbruggen
ecacaab7a4 C++: model-manager clean-ups.
Change-Id: I59fdb898e270af0fcc18e79ae922e119504ef10e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-26 13:00:43 +02:00
Erik Verbruggen
0c27b27658 C++ Detach the CppEditor from code-model internals.
- Moved document update handling into CppTools.
- Moved semantic info calculation into CppTools.
- Moved semantic highlighting into CppTools.

Change-Id: I253861bf074a64b1f657f7a4a8e6583871b5285f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-26 12:47:06 +02:00
Nikolai Kosjar
52825a91f9 C++: Preprocessor: Do not add configurationFileName() to the seen files
After processing configurationFileName() the first time, it was added to
the already seen files (m_included). Thus, on parsing further files, it
was ignored and with that all the project defines.

Task-number: QTCREATORBUG-9107
Change-Id: Ia4817dfa3b30ed27d142f7f3eeb6f099d0653441
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-26 09:55:32 +02:00
Erik Verbruggen
cd581ecd0b C++: do not run GC when exiting.
This operation is quite costly if a lot of files are involved, and in
case of exiting Creator, it's also useless.

Change-Id: I97d178d47a3a2f6b214f7ebc45c871edd26b8286
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-04-22 10:08:55 +02:00
hjk
fb72d5324e C++: Also cache result of misses in resolveFile()
Change-Id: Ib501bbe16548b194ff5028a1b3ab74c5f0e3230d
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-16 12:36:00 +02:00
Erik Verbruggen
a0d6df7bd8 C++: also refresh files not in the project when project changes.
System headers and other file which are not explicitly mentioned in the
project must be reparsed when the project changes.

Task-number: QTCREATORBUG-9056
Change-Id: I32f1206d241a078a4d9b15fac5813f365a1ba303
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-16 11:56:18 +02:00
Erik Verbruggen
c388c05b86 C++: fix the quick-exit for already parsed files.
When the preprocessor is asked to process a file which it has already
seen before, it can skip it, but it still has to add the file to the
list of included files for the current document.

Task-number: QTCREATORBUG-9107
Change-Id: I30cac61c1da20da7fe925168ecccb429584e9746
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-11 12:15:07 +02:00
Friedemann Kleint
4b0bafd615 Clean headers in CppTools.
Ran script to remove inludes on a trial-and-error basis and
manually corrected it.

Change-Id: Ic8464ea084ca1ab401e9f4a7d0183b92b4038902
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-10 10:55:14 +02:00
Erik Verbruggen
82e347095c C++: Untangle include file resolving from loading.
Change-Id: Iacf8cb12dd623c908538d80ee2595297a9bdde71
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-09 11:56:02 +02:00
Tobias Hunger
ea23948efb CppTools: Use namespace CppTools consistently
There were quite a few classes using CPlusPlus namespace in the
CppTools plugin. Rename them and do some other small namespace
related coding style fixups.

Change-Id: I093fc1f3fc394fd9923e3f18d5f66522e288f21d
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-08 13:21:31 +02:00
Oswald Buddenhagen
7923032022 fix include style relating to cplusplus libraries
... and adjust INCLUDEPATH accordingly.

while i'm at messing with include statements, also re-order the include
blocks according to policy and sort them within bigger blocks.

Change-Id: I7762abfd7c4ecf59432b99db2f424e4fa25733a5
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-04-03 13:40:39 +02:00
Sergey Shambir
f29902d33a CppTools: fixed bugs in change 49602
Change-Id: I14e9bbfea1bca58cdc49212b7ad1d880ab908ec8
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-03-27 10:36:13 +01:00
Sergey Shambir
63fe568b9b CppTools: improved languages support in ProjectPart
Please, read blueprint here:
http://qt-project.org/wiki/Blueprint-for-language-specs-system

Removed feature from QbsProjectManager: it not longer splits project on
separate C and C++ parts, because Qt version used only by clang parser
(not native) and can be ignored for pure C and Objective-C without C++.

Change-Id: I1c561f7f9f915cc6cb8579d19db74e8352f54c1e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-03-21 17:22:18 +01:00
Friedemann Kleint
cb08f959b9 Fix Krazy warnings about includes/header guards in Cpp-Editor.
Change-Id: I00a68d7f2b509e3934c3248765a78e9b47749127
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-03-12 16:18:59 +01:00
Erik Verbruggen
b36a53cd19 C++: use QMutexLocker everywhere in the model manager.
Change-Id: Iab4dee2a607d453b3e80fe591b70329ab48d27a9
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-03-08 15:00:14 +01:00
Friedemann Kleint
934bccbc7e Fix Krazy-warnings in CppTools.
- values or keys iteration
- non-const ref iterator

Change-Id: I6bb58793b3155243e0fbfaf33ee43ce60edea8d1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-03-08 10:56:12 +01:00
Erik Verbruggen
4e285a1186 C++: Cleanup: make the snapshot private in CppPreprocessor.
Change-Id: I69e892de34e06a0c95b3218abd8a0bb72966d875
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-02-27 10:43:42 +01:00
Erik Verbruggen
75e608ec2e C++: Cleanup, removed unused methods/fields.
Change-Id: I5636039c79be40505c707f775b228bc51f35c243
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-02-19 14:34:48 +01:00
Oswald Buddenhagen
1fda2111d4 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in
	src/plugins/debugger/qtmessageloghandler.cpp
	src/plugins/debugger/qtmessagelogwindow.cpp
	src/plugins/madde/maemodeployconfigurationwidget.cpp
	src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
	src/plugins/qmldesigner/designercore/include/widgetqueryview.h
	src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp
	src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp
	src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h
	src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
	src/plugins/qnx/bardescriptormagicmatcher.h
	src/plugins/qt4projectmanager/profilekeywords.cpp
	src/plugins/remotelinux/deployablefilesperprofile.cpp
	src/plugins/remotelinux/deployablefilesperprofile.h
	src/plugins/remotelinux/deploymentinfo.cpp
	src/plugins/remotelinux/deploymentsettingsassistant.cpp
	src/plugins/remotelinux/profilesupdatedialog.cpp
	tests/auto/icheckbuild/ichecklib.cpp
	tests/auto/icheckbuild/parsemanager.cpp
	tests/auto/icheckbuild/parsemanager.h

Change-Id: Ie465a578446a089e1c502d1cb1096e84ca058104
2013-01-31 16:25:33 +01:00
Erik Verbruggen
0135609973 C++: changed field names of the preprocessor.
Change-Id: I9b199df863b404e4cb2ce3c76c920b9010c09260
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-01-30 17:58:21 +01:00
Robert Loehning
298531e370 Incremented year in copyright info
Change-Id: Ic6a9ff0359625021ebc061d22db6811814534205
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-01-29 16:27:03 +01:00
Erik Verbruggen
dada2614d5 C++: add include-guard tracking.
Track the typical #ifndef/#define/#endif usage in header files to see if
the macro is an include guard. If so, store it in the Document. No
behavioural change, just recording the name.

This can be used in the future to track if a file needs to be re-parsed
when a macro changes: if it was used in the file, and not defined in it
nor being the include-guard, a file should be re-preprocessed and
re-parsed.

It can also be used to check if two files have the same include guard.

Change-Id: I2715f529997a7b24a11bdbc6150652e2669f1a46
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-01-18 14:58:07 +01:00
hjk
b934cc196c C++: pass #include_next down to CppPreprocessor::tryIncludeFile
This does not yet resolve the file using the proper mechanism.

Change-Id: I04913e8b01ae0c3411961f0c1cffe07202f06a0a
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-01-11 11:38:11 +01:00
Orgad Shaneh
29a93998df Remove braces for single lines of conditions
#!/usr/bin/env ruby

Dir.glob('**/*.cpp') { |file|
  # skip ast (excluding paste, astpath, and canv'ast'imer)
  next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
  s = File.read(file)
  next if s.include?('qlalr')
  orig = s.dup
  s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
    res = $&
    if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
      res
    else
      res.gsub!('} else', 'else')
      res.gsub!(/\n +} *\n/m, "\n")
      res.gsub(/ *{$/, '')
    end
  }
  s.gsub!(/ *$/, '')
  File.open(file, 'wb').write(s) if s != orig
}

Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
2013-01-08 10:48:18 +01:00
Erik Verbruggen
7b0f997963 C++: emit signal when project parts have been updated.
To be used in the ClangCodeModel, because there is no other way to find
out if the ProjectParts got changed.

Change-Id: Ie5681b4997adb9103499cf2864c81970cbd2be55
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-01-04 10:19:51 +01:00
hjk
17748280e8 CppModelManager: reduce number of cleanPath calls.
Instead of checking each file's full path individually we store the
cleaned version of the directory.

Change-Id: Icaa41a38d6608ba364fcb0e01cc9eb1db99470ac
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: hjk <qthjk@ovi.com>
2012-12-20 10:45:19 +01:00
Erik Verbruggen
cfc1069c78 C++: Remove hard-coded configuration file name.
Change-Id: Ibe4cc69eafd14dab7707862b1068ce1e21b1d8e0
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2012-12-04 08:33:33 +01:00
Erik Verbruggen
696d55b0e0 C++: removed hack to guess how header files should be parsed.
Change-Id: I2503ef372af3d58b32cf7ef9ddf76050a376a783
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2012-12-03 14:13:07 +01:00
Erik Verbruggen
964c01a460 C++: ProjectParts now contain everything that gets linked together.
Change-Id: Ib862e51897156a03a4a45e2a1690b00caeb03518
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2012-11-28 09:09:14 +01:00
Erik Verbruggen
271fb797cb Made symbol searching plug-able through indexing support.
The indexing support for the built-in code model is moved to its own
file. Symbol searching will now call for a searcher through that support
interface, which will create a fully configured and ready-to-go searcher
that can be started in the/a future.

Change-Id: Idc3ee1c7c789a69fa05ee1d42415313dcea94cf8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2012-11-26 14:07:35 +01:00
Orgad Shaneh
be443b8edb CppTools: Compile with QT_NO_CAST_FROM_ASCII
Change-Id: I31a6117c2b4be3f8603c16a9f98b6937a0b9aeb2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-11-22 09:40:14 +01:00
Erik Verbruggen
41eff78e87 C++: add method to dump the model manager configuration.
This method is called when the QTCREATOR_DUMP_PROJECT_INFO environment
variable is defined.

Change-Id: Id314994a2eed79cf688f5ef82f597524dba7a5cd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-11-06 11:28:52 +01:00
Erik Verbruggen
9246e78d23 C++: started to make indexing plug-able.
Change-Id: Iff35840d73882a212dd77b54e4223c0b4111ac1c
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2012-10-23 09:26:19 +02:00
Eike Ziller
70b5e1f64d Merge remote-tracking branch 'origin/2.6'
Conflicts:
	src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
	src/plugins/qtsupport/baseqtversion.cpp

Change-Id: Id870f70aa35c232dbbd455f83429bab80f266c2d
2012-10-16 17:42:10 +02:00
Erik Verbruggen
b6608da7d1 C++: changed the CppModelManager to use a normal singleton.
Also removed two TODOs.

Change-Id: I91b235795da7e87a21782d189844eacdd68c5f3c
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2012-10-16 16:13:43 +02:00
Erik Verbruggen
f3faef5a1e C++: Fix outdated macro usage info in documents.
Record revisions of documents in macro definitions and usages. Then,
when searching for usages, check the revision of the documents against
the revision of the macros. If they are out-of-sync, repreprocess the
documents to get up-to-date info.

Task-number: QTCREATORBUG-7872
Change-Id: I846bb52ec660024728ab117a9fb7e43382a50e63
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2012-10-15 10:58:07 +02:00
Eike Ziller
d5d1c5e394 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	src/libs/utils/fileutils.cpp
	src/plugins/remotelinux/deployablefilesperprofile.cpp
	src/plugins/remotelinux/genericdirectuploadservice.cpp
	src/tools/qtcreatorcrashhandler/main.cpp

Change-Id: I830287691e7085fe9c94597e23ec7be64eb8be42
2012-10-09 11:50:17 +02:00
Andre Hartmann
82d312aad6 Fix encoding of non-opened include files.
The old implementation readed the file and converted the QString toUtf8,
which seems wrong. Now use Creators default encoding.

This fixes at least wrong macro offsets that leaded to highlighting
errors in Find Usages, if there were non-ASCII characters before the
macro definition.

This should also partially solve QTCREATORBUG-7122.

Change-Id: Ic4a5add5f4769bd3d5b62fc2d67598e7abf352d9
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2012-10-08 14:18:51 +02:00
Eike Ziller
6fd252b0a5 Merge remote-tracking branch 'origin/2.6'
Conflicts:
	share/qtcreator/qml/qmlpuppet/commands/endpuppetcommand.cpp
	share/qtcreator/qml/qmlpuppet/commands/endpuppetcommand.h
	src/plugins/debugger/qtmessageloghandler.cpp
	src/plugins/debugger/qtmessageloghandler.h
	src/plugins/debugger/qtmessagelogwindow.cpp
	src/plugins/madde/maemodeployconfigurationwidget.cpp
	src/plugins/madde/maemodeployconfigurationwidget.h
	src/plugins/remotelinux/deployablefilesperprofile.cpp
	src/plugins/remotelinux/deployablefilesperprofile.h
	src/plugins/remotelinux/deploymentinfo.cpp
	src/plugins/remotelinux/deploymentinfo.h
	src/plugins/remotelinux/deploymentsettingsassistant.cpp
	src/plugins/remotelinux/profilesupdatedialog.cpp
	src/plugins/remotelinux/remotelinuxdeploymentdatamodel.h
	tests/auto/icheckbuild/ichecklib.cpp
	tests/auto/icheckbuild/ichecklib_global.h
	tests/auto/icheckbuild/parsemanager.cpp
	tests/auto/icheckbuild/parsemanager.h
	tests/manual/ssh/tunnel/tunnel.h

Change-Id: I04d7761df6bd936ad00e0547974284c967d39580
2012-10-05 21:20:50 +02:00