Commit Graph

19 Commits

Author SHA1 Message Date
Orgad Shaneh
e20391ef6e CppEditor: Add failing tests for virtual destructor lookup
Change-Id: I2fdf1c72b3e5ffe25b5184c1161a803c4427945b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-12-04 14:46:11 +01:00
Orgad Shaneh
49b9cc9883 CppEditor: Return first virtual function on is[Pure]VirtualFunction
Change-Id: I086076cc58c78430e025a78703a028610024ed23
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-12-04 14:45:58 +01:00
Orgad Shaneh
056db85657 CppEditor: Accept LookupContext in virtual function lookup
Required for correct resolving of first virtual appearance

Change-Id: I2307027f769fb2f4c0942f4aa4e0d2b5327562b5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-12-04 14:45:43 +01:00
Orgad Shaneh
c1bb68fe68 isVirtualFunction: Fix false positive for constructor
When class has a virtual destructor

Change-Id: Ifcc9a05ee1eb1144ed7e035b9f077846fcb96cf3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-11-15 14:53:21 +01:00
Orgad Shaneh
4f0ae3b572 CppEditor: Optimize non-overriding virtual functions lookup
Instead of building the hierarchy from the most basic class that
implements the virtual function, start from the looked up class.

Change-Id: Ia674fbb4a92dd45d4ca7bc621c54b411264cbe3d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-11-15 13:42:31 +01:00
Nikolai Kosjar
4a06dab30a CppEditor: Handle classes that do not override
...when searching the overrides for virtual functions.

In case there is no override for the static type of a function call
expression, make sure to:

1) include the last provided override (look up bases)
2) and all overrides whose classes are derived from that static type

Task-number: QTCREATORBUG-10470

Change-Id: I2c01bfdc6cb35c5a01a000ebd81a2b322ce2b795
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-11-12 16:42:38 +01:00
Nikolai Kosjar
65f13fe05c CppEditor: Clean up cppvirtualfunctionassistprovider.cpp
- Moves the findMatchingClassDeclaration() call from
  FollowSymbolUnderCursor::findLink into VirtualFunctionsAssistProcessor
  since we already have a SymbolFinder there
- Make canLookupVirtualFunctionOverrides a class member because we plan
  to add some methods
- Better parameter names/order for FunctionHelper::overrides()

Change-Id: I0a93ff5445352d47e808adad45485e520f06946e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-31 11:00:04 +01:00
Nikolai Kosjar
0c62b29f97 CppEditor: Fix position of virtual override list
...when using the mouse (Ctrl + Left click).

Task-number: QTCREATORBUG-10479

Change-Id: I54a21c449d8bb8e608d383752beb3b31c9c81783
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-24 11:50:28 +02:00
Nikolai Kosjar
61c0de88c2 CppEditor: Simplify VirtualFunctionAssist{Processor,Provider}
...by extracting parameters to a dedicated struct.

Change-Id: I2f3b83cbc62a8b4a91b44b3a729d0f0c578b53f2
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-24 11:50:11 +02:00
Nikolai Kosjar
f8653a59bc CppEditor: Selecting an override of a virtual function jumps to definition
...instead declaration (F2 on a virtual function call).

Task-number: QTCREATORBUG-10287
Change-Id: Ib913bd4e777c7253659458ae17584354c7416d23
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-24 11:49:17 +02:00
Nikolai Kosjar
580791ff9f CppEditor: Do not return double entries in FunctionHelper::overrides()
Change-Id: I568cdb842fd823067514dd4b2e983e6bd19eebca
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-24 11:47:15 +02:00
Nikolai Kosjar
c06004b4ab CppEditor: Extract VirtualFunctionProposalItem into separate files
...for tests.

Change-Id: Idc408e30ee0cdc22610e3037f94de5f7d246accf
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-23 10:47:11 +02:00
Erik Verbruggen
f70ad82bef CppEditor: put Q_DECLARE_METATYPE right after the declaration
And before the first use outside the class. This will make sure the
template specialization is generated in the right place. If not, a
static assert is triggered when C++11 is enabled.

Change-Id: I8de7fa52a9986a1f99f3ad32696121ef565ee3b6
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2013-10-15 14:28:58 +02:00
Orgad Shaneh
10df20a3e7 CppEditor: Fix virtual function lookup
* Function is pure only by its own declaration
* Support "final"
* Add unit tests

Change-Id: I8b9ded7c7336e2e42ddc551132fac974547fd634
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-15 10:45:35 +02:00
Orgad Shaneh
e96e77690d CppEditor: Remove template lookup for virtual functions
1) Virtual template functions make no sense.
2) It does not help us to find out if a function is virtual or not

Change-Id: Icb15f46b3aba5571e16fa55613a4806ad5de5940
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-14 14:22:51 +02:00
Nikolai Kosjar
3e8919de39 CppEditor: Harden FunctionHelper::overrides
Task-number: QTCREATORBUG-10333

Change-Id: I2ba7e0d5b8b8eb856445e737dfa21ec8a543f85d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-10 16:01:06 +02:00
Orgad Shaneh
e4c7511eeb CppEditor: Accept const Function in FunctionHelper
Change-Id: Id21c958c1528c5cbdb507aa3fc297bd14bcfb13e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-09 11:33:32 +02:00
Friedemann Kleint
31b8fbbcbf Fix MSVC-warnings in CppEditor.
cppfollowsymbolundercursor.cpp(174) : warning C4100: 'widget' :
unreferenced parameter

cppvirtualfunctionassistprovider.cpp(61) : warning C4138: '*/' found
outside of comment

Change-Id: I9c14aff54b88daa6eda9a217db2fc314e9f07742
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-04 09:43:41 +02:00
Nikolai Kosjar
11aeaea86f CppEditor: "Follow Symbol Under Cursor" for virtual functions
F2 on a virtual function call presents a list of overrides in derived
classes. The function declaration of the static type is shown
immediately at the top.

Task-number: QTCREATORBUG-9611

Change-Id: I80ce906fa06272dc9fbd1662cd17500b8c77067f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-10-01 14:23:00 +02:00