1. 12 Oct, 2015 40 commits
    • Nikolai Kosjar's avatar
      CppTools: Make FollowSymbol respect projects · 6b6ad446
      Nikolai Kosjar authored
      Finding the class definition for a forward declaration or finding the
      function definition from its declaration is mostly determined by the
      file iteration order. Documents with the most common path prefix are
      checked first.
      
      This works fine as long as the files of your project have a common
      ancestor. If that's not the case, FollowSymbol might take you to the
      definition within another project.
      
      Fix that issue by considering the project part id when constructing the
      file iteration order. Since the cached file iteration order now depends
      on the projects, ensure to clear it if projects are added, changed or
      removed.
      
      Task-number: QTCREATORBUG-15116
      Change-Id: I529166bac363959c9fee0b946747fd0370a88809
      Reviewed-by: default avatarMarco Bubke <marco.bubke@theqtcompany.com>
      6b6ad446
    • Tobias Hunger's avatar
      Utils: Move template file processing from projectexplorer to utils · 95b0dc91
      Tobias Hunger authored
      I want to use it e.g. for snippets and the TextEditor plugin may
      not depend on the ProjectExplorer, so the code has to move.
      
      This adds a dependency on QtQml to Utils, but that does not really
      matter since that is loaded into QtCreator anyway.
      
      Change-Id: Iada9f40b2966a1fc41631ab33da09812ad67d967
      Reviewed-by: default avatarDaniel Teske <daniel.teske@theqtcompany.com>
      95b0dc91
  2. 09 Oct, 2015 40 commits
  3. 03 Oct, 2015 40 commits
    • Claus Steuer's avatar
      C++: Support noexcept operator · 158b07c9
      Claus Steuer authored
      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: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      158b07c9
  4. 28 Sep, 2015 40 commits
  5. 23 Sep, 2015 40 commits
  6. 11 Sep, 2015 40 commits
  7. 10 Sep, 2015 40 commits
  8. 02 Sep, 2015 40 commits
  9. 01 Sep, 2015 40 commits
  10. 31 Aug, 2015 40 commits
  11. 28 Aug, 2015 40 commits
  12. 25 Aug, 2015 40 commits
    • Christian Kandeler's avatar
      Analyzer: Re-design the diagnostics view. · 6406fd36
      Christian Kandeler authored
      The old one had a number of problems, mainly due to the awkward
      delegate that was used for presenting the data. For instance:
          - Only one diagnostic at a time could be looked at
            in detail.
          - Once it had been opened, it was not possible to close
            such a detailed view again, other than by opening a new one.
      We now use a tree view for showing the diagnostics, so users
      can show and hide details about as many diagnostics as they
      wish. That also gets us sensible item selection capabilities,
      so features like suppressing several diagnostics at once can
      be implemented in the future.
      
      Change-Id: I840fdbfeca4d936ce600c8f6dde58b2ab93b0d00
      Reviewed-by: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      6406fd36
  13. 18 Aug, 2015 40 commits
  14. 17 Aug, 2015 40 commits
  15. 13 Aug, 2015 40 commits
  16. 11 Aug, 2015 40 commits
  17. 05 Aug, 2015 40 commits
  18. 31 Jul, 2015 40 commits
    • Nikolai Kosjar's avatar
      C++: Do not let ASTPath calculate line/column for generated tokens · 892cb154
      Nikolai Kosjar authored
      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: default avatarJoerg Bornemann <joerg.bornemann@theqtcompany.com>
      Reviewed-by: Orgad Shaneh's avatarOrgad Shaneh <orgads@gmail.com>
      892cb154
  19. 24 Jul, 2015 40 commits
  20. 23 Jul, 2015 40 commits
  21. 20 Jul, 2015 40 commits
  22. 14 Jul, 2015 40 commits
  23. 09 Jul, 2015 40 commits
  24. 08 Jul, 2015 40 commits
  25. 07 Jul, 2015 40 commits
  26. 02 Jul, 2015 40 commits
  27. 29 Jun, 2015 40 commits
    • 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
  28. 26 Jun, 2015 40 commits
  29. 10 Jun, 2015 40 commits
  30. 09 Jun, 2015 40 commits
  31. 02 Jun, 2015 40 commits
  32. 01 Jun, 2015 40 commits
  33. 28 May, 2015 40 commits
    • BogDan Vatra's avatar
      Allow plugins to insert custom imports. · 28d2b161
      BogDan Vatra authored
      This patch allows a plugin to insert custom imports. These imports are
      used by QtC for syntax highlighting and code completion. This way a
      plugin can register types and objects that are available only at
      runtime.
      
      This is an example of an imports function implementation:
      
      QList<Import> MyPlugin::imports(ValueOwner *valueOwner, const Document
      *context) const
      {
        // context is needed to know from which project is the opened document
        // in this example we don't care about multiple projects
      
        Import import;
        import.object = new QmlJS::ObjectValue(valueOwner, "<defaults>");
        import.valid = true;
        const ComponentVersion version(1, 0);
        import.info = ImportInfo::moduleImport("MyPlugin", version,
      QString());
        auto myType = valueOwner->newObject(nullptr)
        myType->setMember("myProperty", valueOwner->valueOwner->intValue());
        // add more properties & methods/signals to myType
      
        import.object->setMember("MyType", myType);
      
        // in this example we return only one, but you care return more than
      one
        return QList<Import>(import);
      }
      
      Change-Id: I395c273c7b15a9e4ed5a89a81d70ff92db2b7c0c
      Reviewed-by: default avatarMarco Benelli <marco.benelli@theqtcompany.com>
      Reviewed-by: default avatarKai Koehne <kai.koehne@theqtcompany.com>
      28d2b161
  34. 27 May, 2015 40 commits