1. 01 Jul, 2015 1 commit
    • Orgad Shaneh's avatar
      C++: Cleanup LookupContext · 7bed5cd3
      Orgad Shaneh authored and Orgad Shaneh's avatar Orgad Shaneh committed
      
      
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      7bed5cd3
  2. 29 Jun, 2015 2 commits
    • Orgad Shaneh's avatar
      C++: Ignore explicit template instantiations · a77e3280
      Orgad Shaneh authored and Orgad Shaneh's avatar Orgad Shaneh committed
      
      
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      a77e3280
    • Orgad Shaneh's avatar
      C++: Fix resolving of using in enclosing scope · 1faf2bd1
      Orgad Shaneh authored and Orgad Shaneh's avatar Orgad Shaneh committed
      
      
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      1faf2bd1
  3. 09 Jun, 2015 5 commits
  4. 04 Jun, 2015 2 commits
  5. 01 Jun, 2015 2 commits
  6. 22 May, 2015 2 commits
  7. 21 May, 2015 1 commit
  8. 20 May, 2015 2 commits
  9. 15 May, 2015 2 commits
  10. 05 May, 2015 1 commit
  11. 04 May, 2015 1 commit
  12. 28 Apr, 2015 2 commits
    • Orgad Shaneh's avatar
      C++: Fix instantiation of typedefed type in block · 6a9bd957
      Orgad Shaneh authored and Orgad Shaneh's avatar Orgad Shaneh committed
      
      
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      6a9bd957
    • Orgad Shaneh's avatar
      C++: Fix specialization resolution for nested types · ad4cb444
      Orgad Shaneh authored and Orgad Shaneh's avatar Orgad Shaneh committed
      
      
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      ad4cb444
  13. 27 Apr, 2015 2 commits
  14. 23 Apr, 2015 2 commits
  15. 21 Apr, 2015 1 commit
  16. 20 Apr, 2015 3 commits
  17. 18 Apr, 2015 1 commit
  18. 13 Apr, 2015 2 commits
  19. 02 Apr, 2015 1 commit
  20. 26 Mar, 2015 1 commit
  21. 13 Mar, 2015 1 commit
  22. 05 Mar, 2015 1 commit
  23. 25 Feb, 2015 1 commit
  24. 23 Jan, 2015 1 commit