1. 12 Nov, 2015 1 commit
    • Orgad Shaneh's avatar
      C++: Limit template instantiation depth · 0bcddcd0
      Orgad Shaneh authored
      
      
      A recursive template generates infinite expansions.
      
      Consider the following example:
      
      template <class R1>
      struct Base
      {
      };
      
      template<typename R>
      struct Derived :
        Base<
          typename Derived<typename Base<R>::type>::type,
          typename Derived<typename Base<R>::type>::type
        >::type
      {};
      
      R is instantiated as Base<R>::type, which causes another
      instantiation of R into Base<Base<R>> etc...
      
      This is not a solution, but a workaround.
      
      Task-number: QTCREATORBUG-15141
      Change-Id: Ib04f70275e07919e2cb6c7fb61a2045bd52f4a7d
      Reviewed-by: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      0bcddcd0
  2. 29 Jun, 2015 1 commit
    • Orgad Shaneh's avatar
      C++: Ignore explicit template instantiations · a77e3280
      Orgad Shaneh authored
      
      
      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
  3. 09 Jun, 2015 2 commits
  4. 22 May, 2015 1 commit
  5. 20 May, 2015 2 commits
  6. 15 May, 2015 1 commit
  7. 23 Apr, 2015 1 commit
  8. 20 Apr, 2015 3 commits
  9. 13 Apr, 2015 2 commits
  10. 07 Apr, 2015 1 commit
  11. 25 Feb, 2015 1 commit
  12. 16 Jan, 2015 1 commit
  13. 13 Jan, 2015 1 commit
  14. 09 Oct, 2014 1 commit
  15. 28 Aug, 2014 1 commit
  16. 20 Aug, 2014 1 commit
  17. 13 Jun, 2014 1 commit
  18. 28 May, 2014 1 commit
  19. 04 Apr, 2014 1 commit
  20. 31 Mar, 2014 1 commit
  21. 12 Mar, 2014 1 commit
  22. 27 Feb, 2014 1 commit
  23. 08 Jan, 2014 1 commit
  24. 12 Nov, 2013 1 commit
  25. 25 Jun, 2013 1 commit
  26. 18 Jun, 2013 1 commit
    • Przemyslaw Gorszkowski's avatar
      C++: add support for local types · 68d6a762
      Przemyslaw Gorszkowski authored
      
      
      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: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      68d6a762
  27. 11 Jun, 2013 1 commit
  28. 24 May, 2013 1 commit
  29. 03 May, 2013 1 commit
  30. 02 May, 2013 1 commit
  31. 23 Apr, 2013 1 commit
  32. 22 Apr, 2013 1 commit
  33. 19 Apr, 2013 3 commits