- Aug 01, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Jul 31, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Jul 30, 2014
-
-
hjk authored
Same patter. Plain is fully merged now, so remove the files, too. Change-Id: Id8c0ba5689ad9980a0db3580cb9833344fd911f3 Reviewed-by:
Tobias Hunger <tobias.hunger@digia.com> Reviewed-by:
Christian Stenger <christian.stenger@digia.com>
-
- Jul 08, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Jul 07, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Jul 04, 2014
-
-
Erik Verbruggen authored
Instead of having two lists of paths, now only one list is used where both include paths and framework paths can be mixed. This reflects the way the compiler is invoked, and retains the (correct) search order. Task-number: QTCREATORBUG-11599 Change-Id: I373953e3e305df5b7a0d10920e12d146584adf9f Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Nikolai Kosjar authored
Change-Id: I6db51aeba328dbb69ec59082a70be7bc2d95699b Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Jun 06, 2014
-
-
Przemyslaw Gorszkowski authored
Task-number: QTCREATORBUG-12345 Change-Id: Ib2316ebdc81393b38185b9cb659fb85b78753e7b Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by:
Eike Ziller <eike.ziller@digia.com>
-
- Apr 09, 2014
-
-
Nikolai Kosjar authored
This reverts commit 5d76b433 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>
-
- Apr 04, 2014
-
-
Nikolai Kosjar authored
...where applicable. Change-Id: Ie42e1012598adf124e5f66b6a53eda01724dfb71 Reviewed-by:
Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by:
Orgad Shaneh <orgads@gmail.com>
-
Przemyslaw Gorszkowski authored
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>
-
Przemyslaw Gorszkowski authored
Fix a case: struct A { int a; }; typedef A B; typedef B* Bptr; Bptr b; b-> Task-number: QTCREATORBUG-10021 Change-Id: Ibf5ca801dbdb72744416924c0b8fc03daad5948a Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Mar 26, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Mar 25, 2014
-
-
Przemyslaw Gorszkowski authored
Case when nested class declaration contains object name for this class. Example: void fun() { struct S { int i; } s; s.i; } Fixes: * highlighting * completion * tests Task-number: QTCREATORBUG-11710 Change-Id: I32e234f57655c388a87a199edc8be750d7bf823f Reviewed-by:
Orgad Shaneh <orgads@gmail.com> Reviewed-by:
Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Przemyslaw Gorszkowski authored
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>
-
- Mar 12, 2014
-
-
Przemyslaw Gorszkowski authored
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>
-
- Jan 24, 2014
-
-
Orgad Shaneh authored
Discarded during merge from 3.0 Task-number: QTCREATORBUG-5456 Change-Id: I0bb4756e3cdf3c87a4c2b0fbfe6953faaa5e1c52 Reviewed-by:
Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Jan 21, 2014
-
-
Orgad Shaneh authored
Task-number: QTCREATORBUG-5456 Change-Id: I0bb4756e3cdf3c87a4c2b0fbfe6953faaa5e1c52 Reviewed-by:
André Hartmann <aha_1980@gmx.de> Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Jan 08, 2014
-
-
Robert Loehning authored
Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a Reviewed-by:
Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by:
Kai Koehne <kai.koehne@digia.com>
-
- Jan 07, 2014
-
-
Nikolai Kosjar authored
QVERIFY/QCOMPARE are meant to be called in the test function so that on failure they just can "return" and thus skip subsequent code. Since we use reusable test code in the test functions (the *TestCase classes), we need to ensure that on failure no further test code is executed. This mostly inlines the run function of the test classes into the constructor. Change-Id: I320ee032bdde0174ddfe3fdf3f9e18e19abf1d7f Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
Nikolai Kosjar authored
* Unify class names * Fix coding style Change-Id: I7498192ba9e6b9fc0e97d3d4f0dbb30f1853a0c9 Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
Nikolai Kosjar authored
Move common functionality of the 12 test classes into base classes. Change-Id: If64d3cec876807ac6f991151189860a99b8ff4ca Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Dec 28, 2013
-
-
Orgad Shaneh authored
Change-Id: If088533d0b51d1750e3273d7ab732dffd110ec85 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
The bug was fixed long time ago, the test is missing a semicolon Change-Id: I0236048d2da059fe208591469fb69541705463cf Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
Comma is used to separate tests on command-line Change-Id: I785d2137d54b0e1e4edbbd940042dc926719dcfc Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Dec 23, 2013
-
-
Orgad Shaneh authored
Change-Id: I9a5bf4705da5ca88776dec70057da2c64e4c1494 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
Mostly done using the following Ruby script: Fname = 'src/plugins/cpptools/cppcompletion_test.cpp' s = File.read(Fname) mod = s.gsub(/(?<declaration>void CppToolsPlugin::test_(?<test_name>[^(]+)\(\)\n\{)(?<body>.*?\n)\}/m) { |func| match = $~ declaration = match['declaration'] body = match['body'] test_name = match['test_name'].sub('_data', '') final = body.gsub(/(?:completions.clear\(\);\s+)?(?: +)[^\n]* =\n(?<code>.*?);\s*(?<completions>(?:completions.append\(QLatin1String\("[^"]*"\)\);\s*)*)QTest::newRow\("case: (?<name>.+?)"\)\s*<< code << _\("(?<prefix>[^"]+)"\) << completions;/m) { m = $~ res = " QTest::newRow(\"#{test_name}: #{m['name']}\") << _(\n#{m['code'].rstrip}\n ) << _(\"#{m['prefix']}\") << (QStringList()" m['completions'].scan(/completions.append\((.+)\);/) { |comp| res << "\n << #{comp[0]}" } res + ');' }.gsub(/(?: +)[^\n]* =\n(?<code>.*?);\n\s*CompletionTestCase test\(.+?, "(?<prefix>.+?)"\);\s*QStringList expected;\s*(?<completions>(?:expected.append\(QLatin1String\("[^"]*"\)\);\s*)*)const QStringList completions = test.getCompletions\(\);\s*QCOMPARE\(completions, expected\);/m) { m = $~ res = " QTest::newRow(\"#{test_name}\") << _(\n#{m['code'].rstrip}\n ) << _(\"#{m['prefix']}\") << (QStringList()" m['completions'].scan(/expected.append\((.+)\);/) { |comp| res << "\n << #{comp[0]}" } res + ');' }.gsub(/(?: +)[^\n]* =\n(?<code>.*?);\n\s*CompletionTestCase test\(.+?(?:, (?<prefix>".+?"))?\);\s*(?:const )?QStringList completions = test.getCompletions\(\);\s*QCOMPARE\(completions.size\(\), \d+\);(?<completions>(?:\s*QVERIFY\(completions.contains\([^\n]+\);)*)\n/m) { |mm| m = $~ res = " QTest::newRow(\"#{test_name}\") << _(\n#{m['code'].rstrip}\n ) << _(#{m['prefix']}) << (QStringList()" m['completions'].scan(/QVERIFY\(completions.contains\((.+?)\)\);/) { |comp| res << "\n << #{comp[0]}" } res + ");\n" }.gsub(/(?: +)[^\n]* =\n(?<code>.*?);\n\s*CompletionTestCase test\(.+?(?:, (?<prefix>".+?"))?\);\s*bool replaceAccessOperator = false;\s*const QStringList completions = test.getCompletions\(\&replaceAccessOperator\);\s*QCOMPARE\(completions.size\(\), \d+\);(?<completions>(?:\s*QVERIFY\(completions.contains\([^\n]+\);)*)\s*QVERIFY\((?<replace>!?)[^)]*\);\n/m) { |mm| m = $~ res = " QTest::newRow(\"#{test_name}\") << _(\n#{m['code'].rstrip}\n ) << _(#{m['prefix']}) << (QStringList()" m['completions'].scan(/QVERIFY\(completions.contains\((.+?)\)\);/) { |comp| res << "\n << #{comp[0]}" } res + ")\n << #{m['replace'].empty?};\n" } if final == body or final['QTest::addColumn'] declaration + final + "}" else final end }.gsub(/QTest::newRow\("([^"]+)"/) { |m| name = $1 if name.size > 73 space = name[0..73].rindex(/[ _]/) "QTest::newRow(\"#{name[0..space]}\"\n \"#{name[space+1..-1]}\"" else m end }.gsub(/\s+QTest::newRow/, "\n\n QTest::newRow") if mod != s File.open(Fname, 'wt').write(mod) end Change-Id: Id6bfb03cdf31ac27b36028fcdc861c340a5398f4 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
For reasonable diff on following commit Change-Id: I97e121355279f9166cea2f500cf2d4df5fafaa32 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
Change-Id: I409a00b869a95dff2d69c9744da75c324c82776a Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
Change-Id: I3c5f42de464a5607f1caa6a48d881c5a4a113ec3 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
Orgad Shaneh authored
Change-Id: I2526daeaf54f7f8d4b808cf556cff9242adaa391 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Dec 18, 2013
-
-
Eike Ziller authored
Doesn't really make sense to have the additional IDocument *editorDocument() method. Change-Id: I0a7420eb1afaa76f63c3f7e9c4b373acf624ffb9 Reviewed-by:
Eike Ziller <eike.ziller@digia.com>
-
- Nov 22, 2013
-
-
Przemyslaw Gorszkowski authored
Example: namespace NS { struct S { int member; void fun(); }; } using NS::S; void S::fun() { mem// ctrl+space } Task-number: QTCREATORBUG-9037 Change-Id: I5a568be1b5c44deb02caa04996167a88a9c5d4d7 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Oct 18, 2013
-
-
Nikolai Kosjar authored
This reverts commit 5be56c07 except for its tests. While it fixed the problem described in the bug report, it also introduced regressions. For now, we use a hard limit. Change-Id: I19a85be454e3d7969371707e3eb1c3d42a16ecee Reviewed-by:
Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Oct 17, 2013
-
-
Przemyslaw Gorszkowski authored
This is the first phase of fixing bug QTCREATORBUG-10320. This change resolves typedefs of template parameters(and resolves problem with endless loop). The next step will be matching appropriate template specialization (this is needed to solve problem with missing code completion). Missing matching: template specialization with the same parameters, e.g.: template <class T1, class T2, class T3> class T { }; template <class T1, class T2> class T<T1, T2, T2> { }; Task-number: QTCREATORBUG-10320 Change-Id: Icb6b539c021b2a67a66db9011a2e627f7d96526b Reviewed-by:
Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Oct 08, 2013
-
-
Orgad Shaneh authored
Deleting an editor while currentEditorChanged is apparently not a good idea. Use a queued connection instead. This reverts commits 243a6259 and d9602ca5. Task-number: QTCREATORBUG-10190 Task-number: QTCREATORBUG-10235 Change-Id: Iccbee25fb77714963faa6f7184d1f5f53ed348a6 Reviewed-by:
Eike Ziller <eike.ziller@digia.com> Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by:
Jarek Kobus <jaroslaw.kobus@digia.com>
-
Orgad Shaneh authored
Deleting an editor while currentEditorChanged is apparently not a good idea. Use a queued connection instead. This reverts commits 243a6259, 447c4ed3, d9602ca5 and 31034870. Change-Id: Iccbee25fb77714963faa6f7184d1f5f53ed348a6 Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com> Reviewed-by:
Eike Ziller <eike.ziller@digia.com>
-
- Sep 30, 2013
-
-
Nikolai Kosjar authored
Starting with commit 243a6259 EditorManager::closeEditors() does not delete the editors anymore, but calls deleteLater(). When the call returns, all kind of checks fail since the editor widget destructor was not yet called. Fixed by providing and calling Core::Tests::closeAndDeleteEditors(), which explicitly sends QEvent::DeferredDelete to the widget. Change-Id: I3287abbe74ccf7d7a18b997a847701c8be17cb55 Reviewed-by:
Orgad Shaneh <orgads@gmail.com> Reviewed-by:
Eike Ziller <eike.ziller@digia.com> Reviewed-by:
Erik Verbruggen <erik.verbruggen@digia.com>
-
- Sep 03, 2013
-
-
Alexey Semenko authored
Since fuzzy completions are allowed, the lexicographically first proposal is not necessarily most relevant. The patch modifies sorting of proposals so that the exact match and continuations go first, and fuzzy completions follow. Moreover, being a continuation seem to be a more important characteristic of a proposal, than being it a function argument or keyword etc. That's why the check for continuation is placed before the check for order. Task-number: QTCREATORBUG-8737 Task-number: QTCREATORBUG-9236 Change-Id: I89aae9d2ce6bfa59af7c2f75e6f3af00212008ca Reviewed-by:
André Hartmann <aha_1980@gmx.de> Reviewed-by:
Alexey Zhondin <lexxmark.dev@gmail.com> Reviewed-by:
Nikolai Kosjar <nikolai.kosjar@digia.com>
-
- Aug 30, 2013
-
-
hjk authored
Change-Id: I3255a0150cd9a730336456c5a9f986eb74fefbff Reviewed-by:
Tobias Hunger <tobias.hunger@digia.com>
-