Commit Graph

1029 Commits

Author SHA1 Message Date
Francois Ferrand
a450c13327 CppEditor: Fix go to definition of macros.
- Go to macro definition only on macro name (ie not in parameters).
- Prefer macro definition over expanded code definition, as the
  preprocessor is executed first: when trying to go to definition, the
  user sees the macro, not the expanded code.

Task-number: QTCREATORBUG-2240
Task-number: QTCREATORBUG-6175
Task-number: QTCREATORBUG-6848
Task-number: QTCREATORBUG-7008
Task-number: QTCREATORBUG-7009

Change-Id: I819c763524e79b20518c26a46a99a3a3b0a131bd
Reviewed-by: Andre Hartmann <aha_1980@gmx.de>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
2012-03-13 10:15:17 +01:00
Flex Ferrum
4ca6c51c7f C++: Lambda formatting issues.
Fix code formatting in cases when '{' and '}' appear within expression
context (ex. lambda expression, initializer lists).

Change-Id: I42b28170a8d6d5fd08a9a1a8d8e7698219c18966
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
2012-03-12 14:38:26 +01:00
Erik Verbruggen
2d262bd3b7 [C++] Added object pool handling for CompletionAssistProvider.
Change-Id: I89634989a7f360a30f7ed1bde4e67c93551ddfe4
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
2012-02-23 10:33:50 +01:00
Erik Verbruggen
368d5926ca C++: handle destructor names with template parameters.
Change-Id: I74b4fd5e043db935abc18345b303d294b71e8fc2
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
2012-02-23 08:39:34 +01:00
Flex Ferrum
da2aa0df72 C++: Add support for C++11 range-based 'for' loops
Change-Id: I7eef048a7952a79f031ae3d0abba68e3c5ffbfb8
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-02-21 15:27:00 +01:00
Joerg Bornemann
ff92cdec43 add qbs files
Change-Id: If6bf71797ae81655d24a77e6badb86a77312af38
Reviewed-by: hjk <qthjk@ovi.com>
2012-02-20 19:18:18 +01:00
Bill King
c750fc2523 Compile fix for windows.
Change-Id: Ibd1dac3ac1fdf25666eb3ec4c076a54e98548ec7
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
2012-02-17 09:54:28 +01:00
Erik Verbruggen
3aab8beaf4 Supply c++11 flags and per-project info to c++ code model.
A manual squash/merge of the changes below, plus a couple of subsequent
code fixes.

59085aa5fbb99e2d786cd2c1a06c24a111ccb49f:
    Modify CppModel::ProjectInfo

    Adding per project node information, to pass on the correct
    defines/includes for each file, instead of aggregating them incorrectly.

    Also split up SOURCES and OBJECTIVE_SOURCES.

    Also ask the toolchain to convert the compilerflags to flags the
    codemodel understands, for now only gcc and only c++11.

    Also make the toolchain aware of the flags used to compile, so that it
    can emit the correct defines.

    Note: No header files are passed on.

74028802314cd4e75b41b46407433e07090a304d:
    GCC: Evaluate cxxflags when checking for predefined macros

ebaaa4957e4c02cc9637a998eddae1d0acd74f83:
    MSVC: Take cxxflags into account when checking for predefined macros

9bfce7e889bcf7bcc47bf880e3ea25945ca7d0d7:
    Compile fixes

Change-Id: I9de94ad038dfc5dc1987732e84b13fb4419c96f5
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
2012-02-16 15:17:17 +01:00
Erik Verbruggen
3fa55b7ab9 Removed module names from #include directives.
Getting the #include directives ready for Qt5. This includes the
new-project wizards.

Change-Id: Ia9261f1e8faec06b9285b694d2b7e9a095978d2b
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
2012-02-15 16:24:46 +01:00
Erik Verbruggen
bfd6a60b93 [C++] Undo accidental commenting-out of NDEBUG flag.
Thanks to Flex Ferrum for spotting it.

Change-Id: I66d722a1da6c05c51a4a648453b1da6f2f445212
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-02-13 15:19:45 +01:00
Erik Verbruggen
3f5dc36a53 C++11: first set of changes for decltype.
Change-Id: I49d6ff7eb1805cd07bdfcb27bb37d4c6cadc9115
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-02-10 16:29:04 +01:00
Friedemann Kleint
1d1d2f0b74 Compile with Qt 5.
- QtQuick1 renaming.
- Start on qtconcurrent split (pending renaming of Qt Creator's
  qtconcurrent library).
- QWinEventNotifier is a public class in Qt 5.
- Metatype system: Classes need to be known.

Change-Id: I5582e7cc2777bf791a08b049262217055769c80f
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-02-08 15:47:00 +01:00
Erik Verbruggen
dbc3332b8e C++: Moved completion/highlighting into the model manager.
This way the editor does not need to know all the details of
instantiating or maintaining classes for highlighting and/or completion,
it can just ask the model manager. The change also enables different
highlighting- or completion-engines without changes to the cppeditor.

Change-Id: I8000d9d9fe446b292defddb2295493cf77d0f14a
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
2012-02-08 14:30:14 +01:00
Roberto Raggi
5fb624b1db Fix semantic of C++ 11 inline namespaces.
Add the declaring `inline' namespace to the `using list' of its
enclosing namespace symbol. This should be enough to ensure
the correct visibility of the symbols declarated in the inlined
namespace.

Change-Id: Id4de74577c498fe439a49709a306ef0deb145988
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
2012-02-03 15:37:17 +01:00
Erik Verbruggen
1d3dc30153 C++11: add support for static_assert.
Change-Id: I82d8d60acaa9265fd25e0a3734855b19bdef9c06
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-02-02 13:49:22 +01:00
Erik Verbruggen
dd4299073e C++11: handle noexcept specifications.
Change-Id: I7da3affea2758b2e01124105e2521e1f2c5f6678
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-02-02 12:22:20 +01:00
Flex Ferrum
c6fc0be8ae C++: Type deduction for auto-declared variables implemented
Handled to major cases of 'auto' variable declaration:
1. auto var = someInitializer;
2. Q_FOREACH(auto item, collection) or foreach(auto item, collection)

In first case type deducted directly from initializer. If variable has no initializer then corresponded error reported. In second case type deducted from '*collection.begin()' expression.

Change-Id: Ie930add1648b99440281ae04d973fd6904bc9e46
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-01-31 10:03:36 +01:00
David Schulz
e44254bb9f Find usage displays content of the first line
Task-number: QTCREATERBUG-6176

Change-Id: I1c45b951bfde0b0d33bf462f532da7cbdbaa3fe7
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
2012-01-30 16:08:42 +01:00
hjk
2931a499e6 Long live the king!
Change-Id: I2b72b34c0cfeafc8bdbaf49b83ff723544f2b6e2
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-01-26 19:55:36 +01:00
Leandro Melo
466ea4842c C++: Improve file accuracy when finding symbols
This patch introduces a priority-based mechanism when searching for certains
symbols in the snapshot. The priority corresponds to how similar the file path
from the "reference" symbol is to the file path from the "candidate" symbol.
This solves a variety of issues when matching "equivalent" symbols but that
are in another file/project, such as when following a function declaration,
a forward class declaration, or adding a definition through a quickfix.

There's now a symbol finder which will compute the "best" search order and cache
the most recent results. A consequence is that following symbols in some cases
is slower, but not apparently significatly.

Note: The "find" functions were moved from the Snapshot to the new SymbolFinder
class.

Task-number: QTCREATORBUG-6697
Task-number: QTCREATORBUG-6792

Change-Id: Ia518f014275fec1f4d0cb3224bd4e06a9df6d557
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-01-23 11:34:44 +01:00
Leandro Melo
c287d90604 C++: Rename source/setSource to utf8Source/setUtf8Source
Continuinng a previous commit... This is in order to make
the interface clearer.

Change-Id: Ic1b05217f878578bc84a064927507b75981c47d6
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-01-13 11:22:28 +01:00
Leandro Melo
fd179ed951 C++: Accept UTF-8 byte arrays in type of expression
The model uses UTF-8 internally and it makes more sense to only
convert when necessary.

A following commit will rename the source/setSource methods in
document for more clarity too.

Change-Id: I960ea0754efabd1436ad4b4299a57faeb65a8bee
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2012-01-13 10:17:03 +01:00
Eike Ziller
e2b0835b58 Merge remote-tracking branch 'origin/2.4'
Conflicts:
	qtcreator.pri
	src/libs/qmljs/qmljstypedescriptionreader.cpp
	src/plugins/analyzerbase/startremotedialog.ui
	src/plugins/qmldesigner/designercore/include/rewriterview.h
	src/plugins/qt4projectmanager/makestep.cpp

Change-Id: If9d15a8c8f73106585fd8ce6ac47c253a40af6b1
2011-11-25 09:48:25 +01:00
Christian Kamm
2f58fb95bc C++: Fix completion for namespace aliases at global or namespace scope.
Task-number: QTCREATORBUG-166
Change-Id: Ic0fe4067caad37e51f7e253fd6678a6680350870
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-11-22 14:14:11 +01:00
Leandro Melo
057fad645b C++: Recognize C++11 nullptr
Change-Id: I5b7ac8f9b2137ffe9439ada4ec4aeb9cee8e249d
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-11-18 13:50:19 +01:00
Leandro Melo
64d579dc3a C++: Enabled C++0x in SimpleLexer
We should create a UI flag for C++0x...

Change-Id: Iba30090aa580554af629c0fb59ae5fc22b306b80
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-11-18 12:14:24 +01:00
Oswald Buddenhagen
c344032bd5 centralize setting of "CONFIG += shared dll" for libraries
"dll" and "shared" set each other, but too late to actually test for it
in the project files, so include both.
note that this will slightly modify the build of some of our imported qt
solutions.

Change-Id: I0bd4f41a68fd160f8e87eb0a0fa66096fe70ef3e
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@nokia.com>
2011-11-18 10:40:09 +01:00
Leandro Melo
cb45971778 C++: Better resolution for typedef when resolving expr.
Example:
struct Bar { int m; };
typedef Bar *pBar;
pBar b;
b-> // completes correctly now

Change-Id: I97cc67579b955fe47c68ab6c35be9a054b6d1be9
Done-by: ckamm
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-11-17 13:57:49 +01:00
Eike Ziller
85cf2b661e Merge remote-tracking branch 'origin/2.4'
Conflicts:
	src/libs/qmljs/qmljsinterpreter.cpp
	src/libs/qmljs/qmljsinterpreter.h
	src/plugins/debugger/qml/scriptconsole.cpp
	src/plugins/git/gitplugin.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativetiledcanvas.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativetiledcanvas_p.h

Change-Id: Iad59c8d87c72a21c79c047e374c0ab689998af39
2011-11-11 09:46:25 +01:00
Leandro Melo
9731955918 C++: Fix crash in type hierarchy when anonymous in typedefs
Task-number: QTCREATORBUG-6445

Change-Id: If62745b58cad330c1f6a8605a444ec13644a1f20
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-11-07 14:48:04 +01:00
hjk
31600758de all: s/info@qt.nokia.com/qt-info@nokia.com/
Change-Id: If18afb5d4665924e7d9250dccbc60a65e6daa75e
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
2011-11-03 10:33:19 +01:00
Eike Ziller
912cd548c0 Merge remote-tracking branch 'origin/2.4'
Conflicts:
	src/libs/qmljs/qmljsinterpreter.cpp
	src/libs/qmljs/qmljsinterpreter.h
	src/plugins/madde/maemopackagecreationstep.cpp
	src/plugins/projectexplorer/buildmanager.cpp
	src/plugins/qmljstools/qmljsqtstylecodeformatter.cpp
	src/plugins/qmljstools/qmljsqtstylecodeformatter.h
	tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp

Change-Id: I63ab2ba5dac006c37ccfbae55b023396a4676ff7
2011-11-01 18:16:38 +01:00
Christian Kamm
0021c4c3ee C++ insert def: Fix bug when minimizing name.
Constructors would not get the correct name before. Now rewriting the
function's name is not done by going through the 'rewrite type' func-
tionality but rather by minimizing the symbol's name directly.

Task-number: QTCREATORBUG-6223
Change-Id: I3c25e414337937f5dd0f54570c899ca2ca21d2ef
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-10-31 14:00:27 +01:00
Leandro Melo
19b1a06ec8 C++: Handle multi-line if/elif directives
Task-number: QTCREATORBUG-5843

Change-Id: Ie32ed9daadf70f3b972a96fb53edcde9b1debb6c
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-10-31 11:52:39 +01:00
Christian Kamm
5cd2123862 C++: Fix findMatchingDeclaration for functions not in a class.
That fixes navigation and the 'function signature update' quickfix for
global functions and functions in namespaces.

Task-number: QTCREATORBUG-6413
Change-Id: Ifc68a88a34eb363f4e84c72e9f72444d22df1086
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-10-31 11:52:07 +01:00
Christian Kamm
e4a7b0642b C++: Fix a crash in debug builds when rewriting functions.
Change-Id: I35266b69d1cc433c4d9176cc849efd03ea1cc1cd
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-10-25 11:32:18 +02:00
Christian Kamm
71b2cbef9a CDB breakpoints: Fix line adjustment in case statements.
Task-number: QTCREATORBUG-6207
Change-Id: I4df50a412dd960a0d53a824a6c4a93712bd743e8
Reviewed-on: http://codereview.qt-project.org/5964
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2011-10-04 09:35:45 +02:00
Christian Kamm
9898a5e094 C++: Fix bug in findMatchingDefinition.
In strict mode, don't give up after the first Document with candidates.

Change-Id: I62ba59708a3501b31f79d979b1a85bede875eccb
Reviewed-on: http://codereview.qt-project.org/5142
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-09-20 07:24:37 +02:00
Christian Kamm
151475a0fe C++: Fix function return type printing.
We used to print T * foo(), but our style suggests T *foo().

Change-Id: Ie3b0ce6b620785ec98aeb394f7955ce959440619
Reviewed-on: http://codereview.qt-project.org/4634
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-09-12 11:16:39 +02:00
Benito van der Zander
d6e46f7a84 add always defined macro Q_CREATOR_RUN to cpp parser
Merge-request: 336
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>

Change-Id: Iefd0c60bb3e78047e28dcff33cc62c15ed11f711
Reviewed-on: http://codereview.qt-project.org/4292
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-09-08 14:09:48 +02:00
Christian Kamm
10a956a8f7 QmlJS: Find setContextProperty calls in C++ and expose to QML.
Task-number: QTCREATORBUG-3199

Change-Id: I591490ceafadc0f5a07c63ec063f1bdfa7055f47
Reviewed-on: http://codereview.qt-project.org/4074
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
2011-09-08 12:34:22 +02:00
Leandro Melo
d91c218d54 C++: More flexibility for string representation of macros
It's now possible to get the macro definition with the actual
line breaks used on the code. This is particularly useful for
tooltips in order for them to look nice.

The preprocessor is changed so the macro also stores the breaks
positions. This doesn't seem to have any impact on performance.
In my machine, for example, the total time for parsing Creator's
source code is approx. 18100ms with or without the patch.

Change-Id: Ic7487236315c3567d26496315accdb2adfea894a
Reviewed-on: http://codereview.qt.nokia.com/4253
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-09-06 14:21:04 +02:00
Erik Verbruggen
bb41c375b0 C++: removed assert that could crash creator. Gracefully exit instead.
Change-Id: Iab79b2548195feb83b3f408f0eb612878454bd47
Reviewed-on: http://codereview.qt.nokia.com/4246
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-09-06 10:51:13 +02:00
Leandro Melo
f235f2594b C++: Export DiagnosticMessage
This is now necessary due to the recent change
that added the non-inline operator==.

Change-Id: I62255ddeb09f1e312a802db9733575e73ea56478
Reviewed-on: http://codereview.qt.nokia.com/3928
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
2011-08-31 11:52:57 +02:00
Christian Kamm
9f7a2194f7 QmlJS: Fix infinite loop when scanning for exported C++ types.
Setting extra diagnostics would call updateDocument which would in turn
trigger another scan.

Change-Id: I3810a380cdf716a12767d94ff82dc30f8ae3954d
Reviewed-on: http://codereview.qt.nokia.com/3917
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-08-31 10:53:21 +02:00
Christian Kamm
9f1c294dd4 C++ preprocessor: Fix multiline tokens in ifdef'ed out blocks.
Change-Id: If6f9819565f891e861f9e111423d99caa7c0f7aa
Reviewed-on: http://codereview.qt.nokia.com/3884
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
2011-08-31 07:41:32 +02:00
Christian Kamm
94a00259ac C++/QmlJS: Warnings if C++ based QML type detection fails.
Change-Id: I1e206e09c4068cc541978ee148f9ed8c4138c249
Reviewed-on: http://codereview.qt.nokia.com/3579
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
2011-08-30 12:03:34 +02:00
Christian Kamm
93e367ed0c C++: Don't strip comments from preprocessed source code.
Change-Id: I3a4817d36b9c724abca504c42914a73f97ab34c7
Reviewed-on: http://codereview.qt.nokia.com/3480
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-08-25 13:20:09 +02:00
Christian Kamm
51ea52971f C++: Always remove NumericLiterals when removing the AST.
Contrary to StringLiterals, keeping them around is unnecessary.

Change-Id: Idc1967c125e1373e69ce4c7640328d323a84ec14
Reviewed-on: http://codereview.qt.nokia.com/3395
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
2011-08-25 13:19:32 +02:00
Christian Kamm
27d0830698 QmlJS: Move the exported-C++-type detection out of C++ code.
It now lives in qmljstools/qmljsfindexportedcpptypes, all in one place.

Also ensures that the source code is available when a file is being
scanned for QML exports. This will enable checking comments for
annotations about the URI a plugin is usually imported as.

Change-Id: I1da36d0678e0a8d34b171dbe0f6b5690d89eb18b
Reviewed-on: http://codereview.qt.nokia.com/3392
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
2011-08-24 12:13:41 +02:00