Commit Graph

1185 Commits

Author SHA1 Message Date
Aleix Pol
b899684a89 Don't put QString in static attributes
It crashed in some places on our code-base due to the so-called "static
initialization order fiasco".
As a solution, it turns the variable into a function. This shouldn't have
a penalty due to QStringLiteral.

Change-Id: I9f8a955afdff878dc2f0db16fec861d81250c243
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-10-09 17:09:45 +00:00
Claus Steuer
158b07c9c8 C++: Support noexcept operator
The code model failed to parse the noexcept operator which is often
used in noexcept specifiers, e.g.: "void f() noexcept(noexcept(g()));"
Consequently some c++11 headers such as unordered_map, array
and unordered_set could not be parsed and no code completition was
available. I have created the NoExceptOperatorExpressionAST class
which is created whenever a noexcept token is found in an
expression with operator precedence. The noExcept test case
in the cplusplus/cxx11 test now contains a function that
uses the noexcept operator.

Fixed noexcept operator parsing

Added the test requested by Sergey Shambir, which then revealed that
i had not implemeneted the noexpect operator parsing according to the
c++ specification.
As stated here http://cpp0x.centaur.ath.cx/expr.unary.noexcept.html
the noexcept operator is a unary-expression that contains an
expression (and not a constant-expression). This should now be fixed.

Change-Id: Id4a99a43b660bd83e7680274491d99a698b57094
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-10-03 17:24:45 +00:00
Nikolai Kosjar
915f68deac C++: Revert problematic template specialization changes
This mainly reverts

    commit 81721f6781
    C++: Fix resolving of recursive typedef

    commit 2070431d8c
    C++: Fix resolving of partial specialization

and some bits of other changes due to dependencies. It also reverts

    commit e0594fc9b9
    C++: Fix expensive lookup for boost

which attempted to solve the upcoming problems.

Task-number: QTCREATORBUG-14741
Task-number: QTCREATORBUG-14889
Task-number: QTCREATORBUG-14962
Change-Id: I3f9e1f97199e5199b71da394fc27051c7709bd1f
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-09-10 12:00:01 +00:00
Nikolai Kosjar
c504e56d0c C++: Fix MSVC assert in std::isspace()
...when dealing with UTF8 bytes.

std::isspace() expects unsigned char, not char.

Change-Id: I3f9b5e347d79cf94015cc99f8797d5feab406151
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-09-02 10:42:43 +00:00
Nikolai Kosjar
e0594fc9b9 C++: Fix expensive lookup for boost
With this patch, CheckSymbols takes about 200ms for processing the boost/proto
hello world example [1]. Before, it needed about 11 seconds (timer in
CheckSymbols::run). Same goes for including <boost/fusion/include/zip.hpp>.

The custom ProcessedSet object was added to support "completion for typedefs
for templates in namespaces", but apparently that's not needed anymore, as the
added test proves.

[1] http://www.boost.org/doc/libs/1_58_0/doc/html/proto/users_guide.html#boost_proto.users_guide.getting_started.hello_world

Task-numer: QTCREATORBUG-14889
Task-numer: QTCREATORBUG-14741
Change-Id: I90454e8970a9d04033d56beeb0c6d7a0d4e6cc62
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-08-21 10:25:15 +00:00
Orgad Shaneh
1b90b80f85 C++: Fix potential crash
If no template is found, findSpecialization will crash

Task-number: QTCREATORBUG-14748
Change-Id: I94b970e6eb994f0a8d85a4b996e52fcff0affef3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-08-03 09:32:05 +00:00
Orgad Shaneh
99dea548e0 C++: Fix crash in template argument resolving
Occurs in boost/phoenix.hpp

Task-number: QTCREATORBUG-14748
Change-Id: If89b0db48346aac72e0d8aaa8d165b2bf43bd784
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-08-03 09:31:45 +00:00
Nikolai Kosjar
892cb154b2 C++: Do not let ASTPath calculate line/column for generated tokens
ASTPath uses TranslationUnit::getPosition(), which returns reasonable
results for:

    1. non-expanded tokens
    2. expanded but not generated tokens

The expanded *and* generated tokens case is not handled since there is
no reasonable mapping from generated tokens to a continuous line/column
information. Consider:

    #define DECLARE_FOO int foo; // Multiple generated tokens
    DECLARE_FOO // ...can be mapped to this line, but to which columns?

Since the result where not valid for the expanded and generated case,
ASTPath took the wrong branches. Avoid this by skipping generated
tokens.

Change-Id: I33a2e0f62917f87d691b19feaeef67b09ea8d563
Task-number: QTCREATORBUG-13386
Task-number: QTCREATORBUG-13390
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-07-31 11:01:02 +00:00
Tobias Hunger
2e6855249f PNG: Run pngcrush on images with iCCP or sRGB profiles
This quietens warnings from libPNG during startup and shrinks the
image sizes.

Change-Id: Ieb4cb5e8ba30b99653896e283c2fb2cc267257f2
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-07-03 09:50:46 +00:00
Orgad Shaneh
7bed5cd3b6 C++: Cleanup LookupContext
Since the cache is now more reliable, some workarounds and optimizations
in the instantiation process are not needed anymore.

Also avoid instantiation of base classes when expandTemplates is
disabled.

As a bonus, we now resolve decltype of template function for a type that is not
referenced anywhere but in the decltype.

Change-Id: Idf42ba7280992db477c9aa62bb1815b27174594d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-07-01 14:41:43 +00:00
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
Orgad Shaneh
f8544bbc42 C++: Resolve function-scope typedef inside lambda
Use-case:
struct Foo { int bar; };

void func()
{
    typedef Foo F;
    []() {
        F f;
        f.bar; // bar not highlighted
    };
}

Change-Id: Ifaee2d125931d993acad69f03031a675c6180858
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-29 09:09:16 +00:00
Orgad Shaneh
1faf2bd1ef C++: Fix resolving of using in enclosing scope
Use-case:
namespace Ns {
namespace Nested {
struct Foo
{
    void func();
    int bar;
};
}
}

using namespace Ns::Nested;

namespace Ns
{
void Foo::func()
{
    bar; // bar not highlighted
}
}

Change-Id: I6e667d63eb40511d65532c4d6d317aa4028a87a4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-29 09:08:46 +00:00
Alexander Izmailov
398ad5a40a Add icons for static fields and functions.
Icons for static members in completion list now with S letter.
Task-number: QTCREATORBUG-203
Change-Id: I6c997ad14eeb500936ffe73e2fc0ad8e552a46c9
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-06-22 11:27:48 +00:00
Jochen Becher
431b25ad27 Introduce dragging for all explorer nodes.
Extend drop support with variant values. A drop may be a file drop or a
value drop or both.

Rename Utils::FileDropSupport to Utils::DropSupport and add methods to
add not only files but any QVariant value to the mime data. Project
explorer adds dragged nodes (which will be needed for future ModelEditor
plugin).

Change-Id: I799542c60fdecb3e64af0d3ba47b6caa9adbcfd7
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-06-15 08:12:56 +00:00
Orgad Shaneh
97d3d9ac09 C++: Support default template argument lookup for specialization
This fixes std::vector, although it doesn't really resolve numeric
template arguments. It just picks the first specialization.

Use-case:
class Foo {};
template<class T1 = Foo> class Temp;
template<> class Temp<Foo> { int var; };
void func()
{
    Temp<> t;
    t.var; // var not highlighted
}

Task-number: QTCREATORBUG-8922
Change-Id: I593515beb3a6d901b6088db8bc1b8e16c39083d3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-09 14:18:17 +00:00
Orgad Shaneh
1c7e465c30 C++: Remove scope argument from initializeSubst
Use the template scope instead.

Change-Id: I8144427e14644697c709643da7c0ae0b0841e34d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-09 14:18:10 +00:00
Orgad Shaneh
997ab425ce C++: Improve accuracy in findSpecialization
* If a template type is specialized as a pointer, accept only pointers (of any
type)
* Same for references and arrays
* Only if the specialized type is not part of the template, match it
  against the input.

Fixes resolving of partial specialization with pointers.

Use-cases:
// 1
struct b {};
struct a : b {};
template<class X, class Y> struct s { float f; };
template<class X> struct s<X, b*> { int i; };
template<class X> struct s<X, a*> { char j; };

void f()
{
    s<int, a*> var;
    var.j; // j not highlighted
}

// 2
template <typename T> struct Temp { T variable; };
template <typename T> struct Temp<T &> { T reference; };
void func()
{
    Temp<int&> templ;
    templ.reference; // reference not highlighted
}

// 3
class false_type {};
class true_type {};
template<class T1, class T2> class and_type { false_type f; };
template<> class and_type<true_type, true_type> { true_type t; };
void func2()
{
    and_type<true_type, false_type> a;
    a.f; // f not highlighted
}

Task-number: QTCREATORBUG-14036
Change-Id: Idee5e3f41d15c0772318d3837cbcd442cb80293a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-09 14:17:38 +00:00
Orgad Shaneh
3fe1b92566 CppTools: Fix highlighting and follow for template using argument
Use-case:
template<class T>
using Foo = Bar<T>; // T not highlighted

Task-number: QTCREATORBUG-9944
Change-Id: I04cb62ea6a21f158f7fb4fb7ac79ccd6eb1bbfbb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-09 11:31:40 +00:00
Orgad Shaneh
63433e7b98 C++: Unindent findSpecialization
Change-Id: I5759c4e5b061865d53b00c7eeb0b1cee54f8398e
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
2015-06-09 05:51:17 +00:00
Orgad Shaneh
b365387f0d C++: Add some debug output for specialization choosing
Change-Id: I13082288a56f6f7fe58c69f01824c56294ca258d
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
2015-06-09 05:37:36 +00:00
Orgad Shaneh
ec4d242bb3 C++: Fix resolving of templated partial specialization
Use-case:
template<class T> struct t {};

template<class> struct s { float f; };
template<class X> struct s<t<X>> { int i; };

void f()
{
    s<t<char>> var;
    var.i; // i not highlighted
}

Task-number: QTCREATORBUG-14034
Change-Id: I5d00bc3247352fca4af4c41a47c208ec3e193c8e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-04 19:23:50 +00:00
Orgad Shaneh
2070431d8c C++: Fix resolving of partial specialization
Use-case:
struct b {};
template<class X, class Y> struct s { float f; };
template<class X> struct s<X, b> { int i; };

void f()
{
    s<int, b> var;
    var.i; // i not highlighted
}

Task-number: QTCREATORBUG-14036
Change-Id: I70a87499e0a375e84d992ca0a79d77270a3419e8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-04 19:23:40 +00:00
Daniel Teske
26059dbb1e Make every operator bool() explicit
operator bool() is a trap, but with explicit it's far safer,
and we can use that now.

Change-Id: I4e58631c94e87c00256c3ab3cff4fd2c5f632713
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-02 16:06:22 +00:00
Orgad Shaneh
b67ebf9ffc C++: Fix lookup for instantiation of using
Yet another std::vector issue...

Use-cases:
// Case 1
template<typename T>
using type = T;

// Case 2
struct Parent {
    template<typename T>
    using type = T;
};

// Case 3
template<typename T>
struct ParentT {
    template<typename DT>
    using type = DT;
};

struct Foo { int bar; };

void func()
{
    type<Foo> p1;
    Parent::type<Foo> p2;
    ParentT<Foo>::type<Foo> p3;
    // bar not highlighted
    p1.bar;
    p2.bar;
    p3.bar;
}

Task-number: QTCREATORBUG-14480
Change-Id: I9ab08ea7360a432c48eb4b85aa0d63e08d2464c1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-02 08:37:02 +00:00
Orgad Shaneh
4a8a7f22b4 C++: Remove unneeded null validation
addNestedType should never accept null scope.

Change-Id: I6e4a86d0c7595af11079915faffdd8d213e92bd2
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-01 16:43:54 +00:00
Orgad Shaneh
07f8c474be C++: Fix decltype resolving for template function
The last nail for std::unique_ptr (GCC variant, MSVC still doesn't work).

Use-case:
template<typename T>
static T f();

struct Foo { int bar; };

void fun()
{
    decltype(f<Foo>()) s;
    s.bar; // bar not highlighted
}

Task-number: QTCREATORBUG-14483
Task-number: QTCREATORBUG-8937
Change-Id: I5bab757400b070cf9dbb688a44fd8eafe95ddc61
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-01 16:30:47 +00:00
Orgad Shaneh
0cfd570cdd C++: Deduplicate template arguments substitution
Change-Id: I2df85493d156a214b2e7650acc77efe099d03277
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-22 09:26:02 +00:00
Orgad Shaneh
4eb9b5f145 C++: Simplify template function resolving a bit
There's no reason to keep the Template after it is instantiated.

Change-Id: I91210ae11b3420bb038168fe951b52d28ccc132e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-22 09:13:00 +00:00
Orgad Shaneh
b880ace167 C++: Minor cleanup
Save a few as* calls

Change-Id: Id2aa43a39ead7231d9e9046ad16d51c05af1ec77
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
2015-05-21 11:09:03 +00:00
Orgad Shaneh
81721f6781 C++: Fix resolving of recursive typedef
Use-case:
template<typename _Tp>
struct Temp { typedef _Tp value_type; };

struct Foo { int bar; };

void func()
{
    Temp<Temp<Foo> >::value_type::value_type *p;
    p->bar; // bar not highlighted
}

Task-number: QTCREATORBUG-14237
Change-Id: Ie0b21b81526d610437ed2d2877083bb929c25047
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-20 11:14:20 +00:00
Orgad Shaneh
cbc122e2e2 C++: Introduce CreateBindings::Ptr
typedef for QSharedPointer<CreateBindings>

Change-Id: Idf7a9984bb90da82407abd4b7dec9f40926beac8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-20 10:51:12 +00:00
Orgad Shaneh
de68ac5407 C++: fix code completion for decltyped type
example:
struct Foo { int bar; };
Foo foo() { return Foo; }
typedef decltype(foo()) TypedefedFooWithDecltype;
void fun()
{
  decltype(foo()) decltypeFoo;
  decltypeFoo.;// code completion should work here

  TypedefedFooWithDecltype typedefedFooWithDecltype;
  typedefedFooWithDecltype.;// code completion should work here
}

Started-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Task-number: QTCREATORBUG-14483
Change-Id: I296ceed9d896c68cf0651265afb08a1fc42f9a68
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-20 10:45:31 +00:00
Orgad Shaneh
0a94329b17 C++: Minor cleanup in TypeResolver
Change-Id: I9da92d7669d15c1dfd954ec233e21c08b8432b24
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
2015-05-19 06:36:03 +00:00
Orgad Shaneh
372173331c C++: Fix explicit typedef from base type in templated class
Use-case:

struct Foo { int bar; };

template<typename T>
struct Base { typedef T F; };

template<typename T>
struct Derived : Base<T>
{
    typedef typename Base<T>::F F;
    F f;
};

void func()
{
    Derived<Foo> d;
    d.f.bar; // bar not highlighted
}

Task-number: QTCREATORBUG-14218
Change-Id: Ic0b22b2f8adf80ff88a2f8b7359c276a744f89e8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-15 14:22:10 +00:00
Orgad Shaneh
9b30795c02 C++: Fix lookup for instantiation by class object
Task-number: QTCREATORBUG-14352
Change-Id: I2ce4bc1d0dba2414afe050e80607b581686081a9
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-15 14:21:45 +00:00
Nikolai Kosjar
f27aa09ac5 C++: Fix crash on auto deduction with debug enabled
By adding the expression document to the bindings object.

Since ResolveExpression is always initialized with the context of a
TypeOfExpression object, the symbols and names in the expression
document will at least live as long as the most outer TypeOfExpression
object.

Done-with: Orgad Shaneh <orgads@gmail.com>
Task-number: QTCREATORBUG-14253
Change-Id: Ia97c7401a2ada9a36113a04cf39e2283393421dd
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-15 14:20:47 +00:00
Orgad Shaneh
6665ace5cd C++: Remove Dumpers
Superseded by Overview

Change-Id: I2ae193b1b9265ed59b73315486a35c53f6c8068f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-12 14:13:24 +00:00
Orgad Shaneh
33d270976e C++: Fix highlighting of member on indirect specialization typedef
Missed a spot in ad4cb444fb

Task-number: QTCREATORBUG-14141
Change-Id: I1a6a25ce3e9c2a680e1b8eebec01a17749cdb026
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-05 08:59:28 +00:00
Orgad Shaneh
a8f42831cb C++: Minor optimization in ResolveExpression
Avoid needless snapshot copying

Change-Id: Iea38bd0866495cf5335b4444d5643d7082fbfcde
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-05 08:44:42 +00:00
Orgad Shaneh
fc884f6a27 C++: Fix commented debug in preprocessor
included is QByteArray

Change-Id: I5ec6d68bd0bbcb2b08cdcfe2759d72f474d4cda4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-05 08:43:18 +00:00
Orgad Shaneh
997f8fe269 C++: Remove redundant assignment
TranslationUnit assigns itself to the control in its ctor.

Change-Id: I08cf70c32f557648709e29b03c2f939d294fdc6d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-05 08:42:49 +00:00
Tobias Hunger
9fef4fb9ca CPlusPlus: Fix warnings about overriding visit(...) methods
Change-Id: I142b6c7b6573518dbd44557f3a66c5d683bb592d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-05-04 08:22:43 +00:00
Orgad Shaneh
6a9bd957cb C++: Fix instantiation of typedefed type in block
Use-case:
template<typename T>
struct Temp { T t; };

struct Foo { int bar; };

void func()
{
    typedef Foo *pointer;
    Temp<pointer> temp;
    temp.t->bar; // bar not highlighted
}

Task-number: QTCREATORBUG-14351
Change-Id: I13ca6145a0069bbc7a7207f69b43011c69ec72c7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-04-28 13:54:40 +00:00
Orgad Shaneh
ad4cb444fb C++: Fix specialization resolution for nested types
Use-cases:

template<typename T>
struct Traits { typedef typename T::pointer pointer; };

template<typename _Tp>
struct Traits<_Tp*> { typedef _Tp *pointer; };

struct Foo { int bar; };

// 1
template<typename T>
class Temp
{
protected:
   typedef Traits<T> TraitsT;

public:
   typedef typename TraitsT::pointer pointer;
   pointer p;
};

void func()
{
   Temp<Foo *> t;
   t.p-> // complete
}

// 2
class Temp2
{
protected:
   typedef Foo *FooPtr;
   typedef Traits<FooPtr> TraitsT;

public:
   typedef typename TraitsT::pointer pointer;
   pointer p;
};

void func2()
{
   Temp2 t;
   t.p-> // complete
}

Task-number: QTCREATORBUG-14141
Change-Id: Id3459671117c0c81bcde7c9714b42750634c0225
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-04-28 13:54:25 +00:00
Orgad Shaneh
548ec9c099 C++: Deduplicate enclosing and nested instantiation
Change-Id: Ib75e2d67acdf1fdbeb30b7c9689134f6ccf34063
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-04-27 09:49:12 +00:00
Orgad Shaneh
00845c0503 C++: Remove unused var in LookupScopePrivate
Was readded by mistake when the type was pimpled.

Change-Id: I4150b783a1b54dda6070a49f78bcb8b0fcb9f414
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-04-27 09:08:12 +00:00
Orgad Shaneh
77070f59a4 C++: Remove unused variable
Change-Id: Idc7bbce90ebfb3a62594d5121c04dc265a2e583a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-04-24 09:48:21 +00:00
Orgad Shaneh
d9eab81cbb C++: Avoid duplicate entries in TypeResolver
Change-Id: I094dc04a14c05b17815d53bf0170926cc0c0d2a5
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
2015-04-24 08:50:59 +00:00
Orgad Shaneh
8be26d070e C++: Improve template argument detection for nested types
Change-Id: I7dd3f552f0e85413de8e58047d1fba39c7237182
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-04-23 08:19:10 +00:00