Commit Graph

6 Commits

Author SHA1 Message Date
Orgad Shaneh
a77e32800c C++: Ignore explicit template instantiations
Defined in section 14.7.2 of the standard.

Fixes completion for std::string.

The following explicit instantiation appears in bits/basic_string.tcc:
  extern template class basic_string<char>;

This is wrongfully considered a specialization for a forward declaration
(like `template<> class basic_string<char>` is).

Introduce a new Symbol type for explicit instantiations.

Use-case:
template<class T>
struct Foo { T bar; };

template class Foo<int>;

void func()
{
    Foo<int> foo;
    foo.bar; // bar not highlighted
}

Change-Id: I9e35c8c32f6b78fc87b4f4f1fc903b42cfbd2c2b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-29 09:22:08 +00:00
Nikolai Kosjar
20f3502754 C++: Introduce caches to Clone* classes
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>
2013-07-09 18:31:14 +02:00
Przemyslaw Gorszkowski
5dbcb974b0 C++: added missing cloning of AnonymousNameId
When instantiate a template with anonymous class/struct/union
AnonymousNameId has to be cloned.

Task-number: QTCREATORBUG-9227

Change-Id: Iedca5e41589e68a94a35cd4387241052c70c50df
Reviewed-by: Sergey Shambir <sergey.shambir.auto@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-10 11:16:04 +02:00
Przemyslaw Gorszkowski
b1199ef0cc C++: Fix code completion for nested classes
Fix code completion for nested classes when enclosing is
template class.
Unit tests

Task-number: QTCREATORBUG-8245 (only standalone)
Change-Id: Ib31ad4b799db927b56debd4dc3e7403404c1839d
Reviewed-by: hjk <qthjk@ovi.com>
2012-12-20 10:46:44 +01:00
Erik Verbruggen
ba75725a7a C++: fix member rewriting when doing template instantiation.
Task-number: QTCREATORBUG-7964
Change-Id: Icc7d87bb4f2d1ab0560a6c06187d9c23da9fe3e9
Reviewed-by: David Schulz <david.schulz@digia.com>
2012-10-11 16:13:32 +02:00
Roberto Raggi
9608af7ad2 Added support to C++ symbols rewriting.
This should simplify full C++ template instantiations.

Reviewed-by: Christian Kamm
2011-05-17 11:45:47 +02:00