Commit Graph

95 Commits

Author SHA1 Message Date
Nikolai Kosjar
83bbd534e5 CppTools: Do not try to find definitions of generated symbols
This speeds up the quick fix InsertDefFromDecl on function declarations
in classes containing Q_OBJECT.

Task-number: QTCREATORBUG-9877

Change-Id: I0af16f17f40735040b7158a3191c13db3433edf9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lorenz Haas <lykurg@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-08 11:49:42 +02:00
Nikolai Kosjar
a8cbaa1ea1 CppEditor: Tests: Fix blocking the token tests by a pop up
Now the used QuickFixFactory InsertVirtualMethods is configured to not
generate any pop ups.

Change-Id: I36d297678d87e6fb2eb0a73fea6384f0eb7e21f0
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2013-07-23 09:58:47 +02:00
Nikolai Kosjar
021dbc2e96 CppEditor: Respect whitespace in operator names for more quick fixes
* Affected quick fixes: InsertDefFromDecl, MoveFuncDefOutside
* Fix also reformating pointer declaration of operator functions for
  qualified name ids

Change-Id: I6a7578f496221557d103f5fdbb5dacc9540ee779
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-06-25 09:57:23 +02:00
Lorenz Haas
b7ba23f92d CppEditor: Fix InsertDefFromDecl::match
Now InsertDefFromDecl finds the right implementation file and the speed
of match() is improved.

Task-number: QTCREATORBUG-9627

Change-Id: Ibff824f52124e8cc10ccb6a97c133e11565473db
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-24 10:16:15 +02:00
Lorenz Haas
063cc6bfa7 CppEditor: Handle namespaces when generating method definitions
Consequent use of insertLocationForMethodDefinition respects the
surrounding namespace when moving/inserting definitions.

Task-number: QTCREATORBUG-2676
Task-number: QTCREATORBUG-9332
Change-Id: I6d83cf84d844dd4773900d03563581c88befa7b7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-20 15:48:45 +02:00
Lorenz Haas
af0582cdc9 CppEditor: No triggering for AssignToLocalVariable in return statements
With this patch it is checked if the function/new-expression is used in
a function call or return statement the whole AST down to the
translation unit.

Task-number: QTCREATORBUG-9525
Change-Id: I34b30ee64b9436c9c9d2586c28fd22f148bee892
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-18 16:48:28 +02:00
Lorenz Haas
a338851a10 CppEditor: Insert/move member definition right after enclosing class
When triggering move or insert definition outside and no other class
symbol is found in the file, the definition is moved or inserted right
after the enclosing Class.

Change-Id: I74ffa872015753ba7372e21b868d3cf7fa49e84a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-17 13:14:10 +02:00
Nikolai Kosjar
8180f695f1 CppEditor: Check <include path>/QSomething
For the quick fix AddIncludeForUndefinedIdentifier, if no class is found
via the locator, check the "Qt include paths" for a header file with the
same name as the class name.

Task-number: QTCREATORBUG-9538
Change-Id: I13c86844c2ff653fa479dc91eb109af2a6d76fae
Reviewed-by: Lorenz Haas <lykurg@gmail.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-06-17 08:16:43 +02:00
Lorenz Haas
e986646905 CppEditor: Resolve templates in AssignToLocalVariable
Task-number: QTCREATORBUG-9525

Change-Id: Ibe6c054c289f564a073a455f9b200bfffe5868eb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-13 09:08:11 +02:00
Lorenz Haas
c95b324b79 CppEditor: Same insert position for quick fixes
Now definitions are inserted at the same position inside the
implementation file for MoveFuncDefOutside and InsertDefFromDecl.

Task-number: QTCREATORBUG-9389
Change-Id: If823ffd15ec39a7bc2edb53519380cb9cabb4c55
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-12 16:32:29 +02:00
Lorenz Haas
8f4c4b41f6 CppTools: Fix nextToSurroundingDefinitions
Now it is checked if the adjacent declaration is also defined and one
can define the destination file.

Change-Id: Ifff59c49fc2ab3e2f36f41df42ae4b7d7ff8dd35
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-12 16:32:14 +02:00
Thomas Hartmann
93ea763a8d Compile fix for Windows
interface is already defined in the Windows 7 SDK headers.

Change-Id: Ic154d45017fc32dca1721f4a0f18456f370bd604
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-12 09:21:29 +02:00
Nikolai Kosjar
f1736b079d CppEditor: Put '{' on new line for "Add Definition Inside Class"
...to be consistent with inserting "Outside Class" and "in xxx.cpp".

Change-Id: I32a43153d5d3bdec9fae0be731484a26b108c438
Reviewed-by: Lorenz Haas <lykurg@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-06-11 16:32:34 +02:00
Nikolai Kosjar
f3186690bd CppEditor: Improve finding position for new includes
...by detecting include groups (separated by new lines, include types
and same dir prefix).

Task-number: QTCREATORBUG-9317
Change-Id: I73e80fdc715104901cb2d4f5b15b4cab5d04d305
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-06-11 15:57:10 +02:00
Lorenz Haas
d2faf880f3 CppEditor: Fix triggering AssignToLocalVariable
Do not trigger for functions inside a function call.

Task-number: QTCREATORBUG-9510
Change-Id: I908483fe80ff3ac0f737b21061375e206c1b1d1d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-11 15:46:44 +02:00
Nikolai Kosjar
1738ff64a6 CppEditor: Fix moving definitions
* Move initializer lists completely
* Respect whitespace as it is

Task-number: QTCREATORBUG-9462
Task-number: QTCREATORBUG-9463

Change-Id: Id9c41394b4aa55b0a85957286ab42f2ce8966c08
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-06-04 15:53:47 +02:00
Erik Verbruggen
f2631ad031 C++: do not strip trailing newlines in the preprocessor output.
Doing so resulted in an incorrect position for the EOF token when the
preprocessed output would be parsed. That in turn leads to incorrect
insertion positions for refactoring actions.

This is especially true when a file contains only preprocessor
directives: the EOF token would point to line 1 column 1, which is
usually not the place where code should be inserted.

Change-Id: I7d359aa7a6c04bc52c8b873fd49ad6afc3a77319
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-05-30 16:42:29 +02:00
Lorenz Haas
bddaab248b CppEditor: Consider base class namespace in "Insert Virtual Methods"
Change-Id: Ife5f34d410781d3c1ae75a3bf1c412f7d76dca80
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-24 11:40:13 +02:00
Lorenz Haas
20a23ec72b CppEditor: Do not show InsertDefFromDecl if triggered on a statement
Change-Id: Ib0b110ac80d9519461a6ba6cf5b7c77925ed2ea5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-24 11:12:32 +02:00
Lorenz Haas
276e2bccaa CppEditor: Hide "Assign to Local Variable" if signatures don't match
Task-number: QTCREATORBUG-9321

Change-Id: I31ac75a480b30ef26f343557088c4bbe5e95c4c6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-24 10:22:21 +02:00
Lorenz Haas
d25c5f35ca CppEditor: InsertDefFromDecl: Hide when definition already exists
"Add Definition Inside/Outside Class" was wrongly shown when there was
already an definition outside the class.

Change-Id: I6409080c6a1a3abdd4511f7db14ecb4f63458411
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-15 13:39:32 +02:00
Nikolai Kosjar
4fb5277834 Fix warning about unused variable
Change-Id: I2699fdab3b8a586e61270d4853121c131b2a0ebf
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-05-14 11:05:00 +02:00
Nikolai Kosjar
11f1e365f0 CppEditor: Tests: Remove superfluous output
Change-Id: Ia1d9d04f5417c4816c07f3e60ab4be237d27e0d4
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-05-14 09:34:06 +02:00
Lorenz Haas
d288e3999b CppEditor: Quick fix "Insert (Pure) Virtual Methods"
This quick fix inserts (pure) virtual functions of base classes to the
current class. For selecting the functions which should be inserted and
for choosing the insertion mode (only declarations or with definitions
inside, outside or in the implementation file) a dialog is shown.

Task-number: QTCREATORBUG-2210
Task-number: QTCREATORBUG-2692
Task-number: QTCREATORBUG-3908
Task-number: QTCREATORBUG-5868
Task-number: QTCREATORBUG-7982
Change-Id: I8e94905afcae4778986f4c3925a494e0c6b3b8ee
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-14 09:14:25 +02:00
Lorenz Haas
7ef611047f CppEditor: Improve insert position for AddIncludeForUndefinedIdentifier
Includes of moc files are not considered while determining the new
include's position. Further the new include is inserted at its
"alphabeticaly sorted" position.

Task-number: QTCREATORBUG-8871
Change-Id: I67b40a6f538112753298b960da488e24f4643808
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-14 08:51:30 +02:00
Lorenz Haas
15f90404aa CppEditor: InsertDefFromDecl: choose insert position
Now one can decide where the new definition should go: Inside the class,
outside the class or to the implementation file. Further the text cursor
is positioned inside the new created definition body.

Task-number: QTCREATORBUG-6973
Change-Id: I593955dd1e44e35240fa1e9b9a5c1a67eb119456
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-10 11:33:05 +02:00
Lorenz Haas
7ae31f2ea9 CppEditor: Add quick fix for "Assign to Local Variable"
Adds a local variable which stores the return value of a function call
or new expression.

Task-number: QTCREATORBUG-9052
Change-Id: I1fccbdd5b9f28c8409a4b0fa24610e406de61b24
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-29 08:49:31 +02:00
Nikolai Kosjar
a2b2857b44 CppEditor: Rename CppPlugin to CppEditorPlugin
Change-Id: Icebf85ae425f413ed0d3dfc873869665233ec58c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-19 12:09:45 +02:00
Lorenz Haas
39d000430e CppEditor: Quick fix "move definition" keeps ctor-initialization list
Task-number: QTCREATORBUG-9157

Change-Id: Ic46086ba07a86292bbf48de62b69e3f33628fd86
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-18 15:54:13 +02:00
Andrey M. Tokarev
72e0ded3c4 CppEditor: add more sections (protected, ...) for declaration (refactoring)
You can write definition of function, type Alt+Enter, as usual,
and select not only public but also other possible sections
like private, public slots and so on.

Change-Id: I2faefc3833c6f05c9e2e5a2a41328bcdbe17ba14
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-18 15:08:19 +02:00
Lorenz Haas
6f3b41214b CppEditor: Add refactoring operation to move definition of a function
With this new operation it is possible to move a function definition
from a cpp file to the header file or vice versa. One can also move a
function definition outside the class body.

Task-number: QTCREATORBUG-516
Task-number: QTCREATORBUG-5364
Change-Id: Id3daefe79284bd9086282369c9d251e003951c11
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-15 17:03:49 +02:00
Lorenz Haas
61ddf16689 CppEditor: Rearrange quick fix files
Moved content of cppinsertdecldef.(cpp|h) cppcompleteswitch.(cpp|h)
cppinsertqtpropertymembers.(cpp|h) and ApplyDeclDefLinkChanges to
cppquickfixes.(cpp|h).

Made msgQtStringLiteralDescription private member function of
WrapStringLiteral, added anonymous namespace, "extracted" useful
functions to the top of cppquickfixes.cpp.

Change-Id: I4f82a005a62be3c29d4b96902667bd3a2b9397cc
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-15 13:32:42 +02:00
Lorenz Haas
2e8d471c3b CppEditor: Fix insert position of AddIncludeForUndefinedIdentifier
If there are no includes, add new include at the top of file but skip
possible comments at the beginning.

Task-number: QTCREATORBUG-8799
Change-Id: Ie2be644f6ad0a948cf3d8700efa00087753d9863
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-10 16:42:29 +02:00
Friedemann Kleint
d61bc4fcec Clean headers in CppEditor.
Ran script to remove inludes on a trial-and-error basis and
manually corrected it.

Change-Id: I61a5c2fff02616f6883ddf3923e4361fca6bf92b
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-10 11:04:22 +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
Nikolai Kosjar
06b5f62a61 C++: Let "Add Definition" quick fix work with free function declarations
It was restricted to member functions declarations, but works well with
free functions, too.

Change-Id: I8513e67e426185e7e08aebc2f1b5bfd08f79887f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-03-04 10:28:05 +01:00
Nikolai Kosjar
77a66c2639 C++: Tests: Add basic tests for quick fix InsertDefFromDecl
Change-Id: I668754607c9c1764b9387a7899994c88c17886cd
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-03-04 10:27:54 +01:00
Nikolai Kosjar
9443945901 C++: Tests: Handle multiple files for quickfix tests
Change-Id: I5a712c7dbf58465cd0a675be03ba22a73c57bb12
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
2013-02-25 15:08:48 +01:00
Nikolai Kosjar
8a0139dfcb C++: Tests: Make quick fix tests independent of config file
Change-Id: Idf064b7bc80cca5d0da8bb7c0803c9dde499d87f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-02-19 10:18:49 +01:00
Nikolai Kosjar
30da7ad3e2 C++: Pass only reasonable ASTs to pointer declaration formatter
Change-Id: Ide829a8084d3fef79f252dc7724bd90ce8ebba04
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-02-14 12:25:32 +01:00
Nikolai Kosjar
c6a7fb8ccf C++: Refactor quick fixes
- Put declarations into quickfixes.h to simplify testing
 - Give the factories more meaningful names

Change-Id: If74c29a8c17819d5369ffa3df94d146b14e53af9
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-02-14 12:25:20 +01:00
Nikolai Kosjar
f10b978f86 C++: Improve GetterSetter quick fix
- Prefix getter name with 'get' if there is a conflict between
  the getter name and the member variable name.
- When possible, use base name of member variable as setter parameter
  name instead of 'value'.
- Generate static getters/setters for static members.
- Fix case "class C { char *@s; };" - the quick fix was not offered for
  this particular cursor position (right after pointer sign).
- Fix case "class C { char c, *@s; };" - the quick fix was done for the
  wrong type (char instead of char *).
- Do not generate a setter for const member variables.
- Do not get triggered on member functions and arrays.
- Do not offer the quick fix if there is already a member with the
  getter or setter name we would generate.

Change-Id: I4530467518ea0bf6368e47eb32d5faafbf8cd928
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-02-01 14:01:47 +01:00
Robert Loehning
a040424d2a Incremented year in copyright info
Change-Id: Ia11f4d7a94465de7f12cc390855e54e3256e5455
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-02-01 09:19:26 +01:00
Erik Verbruggen
72db7a8f52 CppEditor: quick fix to generate getters and setters
This does not take namespaces on the implementation side
into account and does not properly position/indent things.

Task-number: QTCREATORBUG-1890
Change-Id: I779d12fefc79521bce38361729d4f66dada71147
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-01-24 16:18:16 +01:00