summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* | C++: nested class with enclosing template classPrzemyslaw Gorszkowski2014-08-011-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The parent of instantiation of nested class of template class should be the instantiation of enclosing template class. To prevent the infinite loop for case with local typedef of enclosing template we should not change a parent of typedefed instatiation of enclosing template. Example: template <typename T> struct Enclosing { typedef Enclosing<T> EnclosingT;// first case struct Nested { typedef Enclosing<T> EnclosingT;// second case }; }; Task-number: QTCREATORBUG-11752 Task-number: QTCREATORBUG-11999 Change-Id: Iadd7b5ef73ee0c4881f59c9dabfe03339f55827b Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | C++: use pointer in template specialization and initializationPrzemyslaw Gorszkowski2014-07-311-0/+10
|/ | | | | | | | | | | | | | | | | | | | | | | | Fix code completion for using pointer in template specialization and initialization. Example: template <typename T> struct S {}; template <typename T> struct S<T*> { T* t; }; struct Foo { int foo; }; int main() { S<Foo*> s; s.t-> //no code completion return 0; } Task-number: QTCREATORBUG-12638 Change-Id: Idcd461806a22f08b76236f2db6346f157b12f5d3 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* C++: Check for Function::name() before using itNikolai Kosjar2014-07-171-1/+1
| | | | | | | | Lambdas do not have a name. Change-Id: Ifda4816c62dcfe19bdbb1649dc1caf408e056b37 Task-number: QTCREATORBUG-12686 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
* C++: template base class and default argument for template classPrzemyslaw Gorszkowski2014-07-081-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix code completion for case: struct Foo { int bar; }; template <typename T> struct Base { T t; }; template <typename T1 = Foo> struct Derived : Base<T1> {}; int main() { Derived<> foo; foo.t.// no code completion return 0; } Task-number: QTCREATORBUG-12606 Change-Id: Iadf2fae172739d0a5844c6b437fd2686616e64e7 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* C++: base class and default argument for template classPrzemyslaw Gorszkowski2014-07-071-1/+8
| | | | | | | | | | | | | | | | | | | | | | Fix code completion in case: struct Foo { int bar; }; template <typename T1 = Foo> struct Derived : T1 { }; int main() { Derived<> foo; foo. // members from Foo are not proposed return 0; } Task-number: QTCREATORBUG-12605 Change-Id: Ibe35c7b9a161e789057a4518c72390ac52489a3e Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* C++: fix 'using' in separate block of scopePrzemyslaw Gorszkowski2014-06-131-32/+46
| | | | | | Task-number: QTCREATORBUG-12357 Change-Id: I7397b0e66783d3249daa5a8ee422bfd5f5bc7bea Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* C++: Enable runtime lookup debug...Orgad Shaneh2014-05-281-48/+39
| | | | | | | ... by setting the environment variable QTC_LOOKUPCONTEXT_DEBUG Change-Id: Ia46f55b2989129d5327d894734b6ea9c77c3e0ac Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* C++: Get rid of {Name,Type}::isEqualTo()Nikolai Kosjar2014-05-231-9/+9
| | | | | | | | | ...since it's superseded by the class Matcher. For consistency, rename FullySpecifiedType::isEqualTo() to match(). Change-Id: I07640f9218d814e0350265de45f05929e5d595a9 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* Merge remote-tracking branch 'origin/3.1'Eike Ziller2014-04-141-1/+0
|\
| * Revert "C++: nested class with enclosing template class"Nikolai Kosjar2014-04-091-1/+0
| | | | | | | | | | | | | | | | | | | | This reverts commit 5d76b4339a717cd944c4a3c27eac860b8111d645 since it might lead to an infinite loop. Task-number: QTCREATORBUG-11999 Change-Id: I12c7f3afc4aa53a83ddc2bf2d33eb76c29b747ee Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* | Merge remote-tracking branch 'origin/3.1'Eike Ziller2014-04-081-0/+1
|\ \ | |/ | | | | | | | | | | | | | | Conflicts: qtcreator.pri qtcreator.qbs src/plugins/cpptools/cppcompletion_test.cpp Change-Id: Ic5e75b3ef164de664a1449ffa8579beaf5b02521
| * C++: nested class with enclosing template classPrzemyslaw Gorszkowski2014-04-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | The parent of instantiation of nested class of template class should be the instantiation of enclosing template class. Task-number: QTCREATORBUG-11752 Change-Id: I8875c738848b85731f5ea88a60da190b4b0ad18f Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
| * C++: fix findusage for member of typedefed anonymous structPrzemyslaw Gorszkowski2014-04-041-3/+4
| | | | | | | | | | | | | | | | | | | | | | Task-number: QTCREATORBUG-11859 Task-number: QTCREATORBUG-11860 Change-Id: I7484b3b88daefbb3c76bb86a9b573e8291072872 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> (cherry picked from commit 5416557a0b9247e911180a7cce4a5ed3b0c0f351) Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* | C++: fix findusage for member of typedefed anonymous structPrzemyslaw Gorszkowski2014-03-311-3/+4
| | | | | | | | | | | | | | | | Task-number: QTCREATORBUG-11859 Task-number: QTCREATORBUG-11860 Change-Id: I7484b3b88daefbb3c76bb86a9b573e8291072872 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | Merge remote-tracking branch 'origin/3.1'Oswald Buddenhagen2014-03-271-1/+6
|\ \ | |/ | | | | | | | | | | Conflicts: src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp Change-Id: Icce6e8dd9b3afd9a0fe836e9babfb7a17cee9c4d
| * C++: fix support for nested anonymous classPrzemyslaw Gorszkowski2014-03-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | The case when anonymous class is inside function. Fixed: * highlighting * completion Task-number: QTCREATORBUG-11711 Change-Id: Ic8fc5fdfb1aed62a74bf148ab7ed449d08214dda Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
| * C++: Do not set binding block as instantiationOriginPrzemyslaw Gorszkowski2014-03-251-0/+4
| | | | | | | | | | | | | | | | | | | | | | The binding in a block should not be used as an instantiationOrigin, because it will be deleted if it does not contain any blocks or namespaces or classes or enums. Instead of that we should look for first enclosing class or namespace. Task-number: QTCREATORBUG-11424 Change-Id: I0fc6e935495478f71372b0fe6f611887f45b2eda Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | Merge remote-tracking branch 'origin/3.1'Oswald Buddenhagen2014-03-181-1/+14
|\ \ | |/ | | | | | | | | | | | | | | Conflicts: qbs/imports/QtcTool.qbs src/plugins/git/giteditor.cpp src/plugins/qmldesigner/qmldesignerplugin.cpp Change-Id: Icafd32f713effb1479480a0d1f61a01e429fbec0
| * C++: fix support for nested anonymous classesPrzemyslaw Gorszkowski2014-03-121-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A member of nested anonymous class should be visible as a member of enclosing class(if there is no declaration of this nested anonymous class). Fix: * marking * find usage * follow symbol * completion Task-number: QTCREATORBUG-10876 Task-number: QTCREATORBUG-11170 Change-Id: If5b4d198e9075f2a8aa899ae59190f2c05f7b1ff Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: cleanup setting the bindings in the lookup context class.Erik Verbruggen2014-02-271-16/+5
|/ | | | | Change-Id: I114d7b1116ee5e345675a332c30312614c0faf5f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* Incremented year in copyright infoRobert Loehning2014-01-081-1/+1
| | | | | | Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Braces cleanupOrgad Shaneh2013-11-141-6/+3
| | | | | Change-Id: I8413252c90a1487d291f15d92837c30ab697b245 Reviewed-by: hjk <hjk121@nokiamail.com>
* C++: Remember the class a ClassOrNamespace is based onNikolai Kosjar2013-11-121-7/+15
| | | | | Change-Id: I0d333ff9489e46c4fa1923d70ca950f67ffa3f44 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* CppEditor: Fix crash in CompleteSwitchCaseStatementNikolai Kosjar2013-10-171-0/+4
| | | | | | | Task-number: QTCREATORBUG-10366 Change-Id: I6d5af5e7a59f3867141c8d7f098128d3db532ee5 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* Merge remote-tracking branch 'origin/2.8'Oswald Buddenhagen2013-08-271-1/+1
|\
| * C++: Fix crash in LookupContext::lookupType()Nikolai Kosjar2013-08-231-1/+1
| | | | | | | | | | | | | | Task-number: QTCREATORBUG-10019 Change-Id: I7970c2f1ea3044e11250b8dbaf9b29ba3e7f34ef Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | CppTools: CppPreprocessor: Track also unresolved includesNikolai Kosjar2013-08-221-1/+1
| | | | | | | | | | Change-Id: Ia36e7e7142dbc030a428369ed04e76e70e8eef0b Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: fix matching type with using from other namespacePrzemyslaw Gorszkowski2013-08-201-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | example code: struct S { int s; }; namespace std { template <typename T> struct shared_ptr { T* operator->(); }; } namespace NS { using std::shared_ptr; } int main() { NS::shared_ptr<S> p;// for this shared_ptr return 0; } Fixes: * find usages * follow symbol * highlighting * marking Task-number: QTCREATORBUG-7978 Change-Id: I28994c960b87ddd400e1d7b860fca6c6683bbb5a Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | Fix coding style for else statementsOrgad Shaneh2013-07-171-9/+7
| | | | | | | | | | Change-Id: I1309db70e98d678e150388c76ce665e988fdf081 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* | C++: Fix names of functions dealing with enclosing scopesNikolai Kosjar2013-07-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | ...in order to better tell apart the type related functions isScope()/asScope() and the functions dealing with enclosing scopes: * scope() --> enclosingScope() * setScope() --> setEnclosingScope() * resetScope() --> resetEnclosingScope() Change-Id: Id743a7d1b6a1a1a0ffcd8568cbd8ebbdfc16eaa1 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
* | C++: fix local types and membersPrzemyslaw Gorszkowski2013-07-121-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It fixes code model when we have local type which contains a member of other type, e.g.: struct OtherType { int otherTypeMember; }; void foo() { struct LocalType { int localTypeMember; OtherType ot; }; LocalType lt; lt.ot.//no code completion } Change-Id: I018f492a6c48bfcbba0ef376ef005825e2b13f35 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | Merge remote-tracking branch 'origin/2.8'Eike Ziller2013-07-111-1/+2
|\ \ | |/ | | | | | | | | | | | | | | Conflicts: qtcreator.pri qtcreator.qbs src/plugins/projectexplorer/projectexplorer.cpp Change-Id: I37e550646f877b50693043894976a693ac22ad5e
| * C++: Introduce caches to Clone* classesNikolai Kosjar2013-07-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | Done-with: Erik Verbruggen <erik.verbruggen@digia.com> Task-number: QTCREATORBUG-8747 Change-Id: I7cb694f8180c6aa932b07066d98d095340111324 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: xSacha Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* | Merge remote-tracking branch 'origin/2.8'Eike Ziller2013-06-271-1/+0
|\ \ | |/ | | | | | | | | | | | | Conflicts: qtcreator.pri qtcreator.qbs Change-Id: I1aa7506519e0f461f33921ca20ce1b51adb5783f
| * Merge remote-tracking branch 'origin/2.7' into 2.8Eike Ziller2013-06-261-1/+0
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/libs/cplusplus/LookupContext.cpp src/plugins/plugins.pro src/plugins/qnx/Qnx.pluginspec.in src/plugins/qnx/qnx_dependencies.pri Change-Id: I6c406c2503845b08c4852db99c64491a325629c7
| | * C++: Handle recursive using/typedef declarationsNikolai Kosjar2013-06-251-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Remember using/typedef declarations we have already looked up and stop if we try it again. Change-Id: I91bf0aef4df18539a47d015f0113543aef1f692a Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> (cherry picked from commit 50a900e509be2e1f448f29be126ba3b7f8173901)
* | | C++: add support for local typesPrzemyslaw Gorszkowski2013-06-181-2/+112
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change addes support for class, enum definition inside blocks({}) or functions, e.g.: void f() { struct S { int bar; }; S s; s.bar; } It fixes: * code completion * highlighting * follow symbol * marking * find usages It fixes also problem with namespace aliases inside blocks or functions. This change can have also impact on performance(there are additional processing) Task-number: QTCREATORBUG-166 (namespace aliases inside function/block) Task-number: QTCREATORBUG-3620 Task-number: QTCREATORBUG-6013 Task-number: QTCREATORBUG-8020 Change-Id: Iaea6c6dfe276f1d7b2279b50bdd2e68e375d31eb Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: Handle recursive using/typedef declarationsNikolai Kosjar2013-06-111-3/+10
| | | | | | | | | | | | | | | | Remember using/typedef declarations we have already looked up and stop if we try it again. Change-Id: I91bf0aef4df18539a47d015f0113543aef1f692a Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: Record also unresolved paths for includesNikolai Kosjar2013-06-111-1/+1
| | | | | | | | | | Change-Id: Id107b6c1f34f594c5a01502c156963c964235ed7 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: instantiate template functionsPrzemyslaw Gorszkowski2013-05-241-0/+36
| | | | | | | | | | | | | | Task-number: QTCREATORBUG-9170 Change-Id: I4cac9124558c1d4f0722192246f3fbeea61d3d7d Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: Fix crash for nameless using declarationNikolai Kosjar2013-05-241-14/+18
| | | | | | | | | | | | Task-number: QTCREATORBUG-9323 Change-Id: I52dfe8c03da14fc08723c3878fec0f6e9150152c Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | Merge branch '2.7'Oswald Buddenhagen2013-05-151-34/+21
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | Conflicts: doc/src/qtquick/qtquick-components.qdoc doc/src/qtquick/qtquick-designer.qdoc qtcreator.pri qtcreator.qbs src/plugins/cppeditor/cppinsertdecldef.cpp src/plugins/qnx/qnxruncontrolfactory.cpp Change-Id: I0a37a07c42719bc0d9ef5b3ac4641d01a63c0d88
| * C++: Fix crash in code completion.Erik Verbruggen2013-05-031-34/+21
| | | | | | | | | | | | | | | | | | | | Caused by a dangling pointer of a template instantiation which had been cloned into the wrong control. The fix is to remove that control and refer to the control of the bindings (which is the correct one). Change-Id: I951a60f2e613aae1e4ac901ce99c820212018709 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: fix highlighting type when there is using Namespace::ClassPrzemyslaw Gorszkowski2013-05-021-3/+38
| | | | | | | | | | | | | | | | | | If type is not found we try to find 'using' declaration for this type. Task-number: QTCREATORBUG-7903 Change-Id: I569db9e1a8504a5da3115ebbed2e823d5924f6ca Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: fix code completion when 'using' declaration inside functionPrzemyslaw Gorszkowski2013-05-021-0/+9
| | | | | | | | | | | | | | | | Looking for using declaration when lookup a type Task-number: QTCREATORBUG-2668 Change-Id: I11600c5be262840472dd4c9e72334760a35aa4a0 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | Revert "C++: fix support for typedef of templated typedefs"Nikolai Kosjar2013-04-231-64/+3
| | | | | | | | | | | | | | | | | | | | Still crashes when opening the Qt Creator project, g++ (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 (Ubuntu 12.10). This reverts commit 564c9b2842663062658a0febdcc5787098d871b2. Change-Id: Ief5c0aad463d245f68805f747d277ac298796c3d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | C++: fix support for typedef of templated typedefsPrzemyslaw Gorszkowski2013-04-221-3/+64
| | | | | | | | | | | | | | | | | | | | | | | | Fix: * code completion * follow symbols * find usages Task-number: QTCREATORBUG-8375 Change-Id: Ia40273fec3dead76acad4695b852a9e53065d8a7 Reviewed-by: Petar Perisin <petar.perisin@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | Revert "C++: fix support for typedef of templated typedefs"Erik Verbruggen2013-04-191-52/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Infinite recursion in the lookup of: struct common_type { public: typedef typename common_type<typename common_type<_Tp, _Up>::type, V>::type type; }; This reverts commit 9a56ce4e85bec81c521258f44e9076d0bc9cce92 Change-Id: I675fe39018789cd04127d105eb983d2cb7798ca5 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: fix support for typedef of templated typedefsPrzemyslaw Gorszkowski2013-04-191-3/+52
| | | | | | | | | | | | | | | | | | | | | | | | Fix: * code completion * follow symbols * find usages Task-number: QTCREATORBUG-8375 Change-Id: I6f35e809ba15f224c5a6d9b2fcfc18dbfba55411 Reviewed-by: Sergey Shambir <sergey.shambir.auto@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | C++: improve support for anonymous classesPrzemyslaw Gorszkowski2013-04-191-5/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix: * highlighting * find usages * follow symbol * code completion Task-number: QTCREATORBUG-6497 Task-number: QTCREATORBUG-8963 Task-number: QTCREATORBUG-3610 Task-number: QTCREATORBUG-7579 Change-Id: I3dcaf1c515d0199c3e6bee72284fbb40064686ee Reviewed-by: Petar Perisin <petar.perisin@gmail.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>