1. 24 Jul, 2017 1 commit
  2. 21 Jul, 2017 1 commit
  3. 20 Jul, 2017 1 commit
  4. 03 Jul, 2017 3 commits
  5. 29 Jun, 2017 1 commit
  6. 28 Jun, 2017 1 commit
    • Marco Bubke's avatar
      Clang: Fix canceling of clang query · f5d68398
      Marco Bubke authored
      Every AST unit is created and queried asynchronously, like before, but
      we don't wait anymore but use a timer to process new sources. So the server
      will not be blocked and can process other messages like cancel.
      
      Change-Id: If0e69466c78f628190f59fd32a03cab1c3a4d0a3
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      f5d68398
  7. 15 Jun, 2017 1 commit
  8. 14 Jun, 2017 1 commit
  9. 06 Mar, 2017 1 commit
  10. 27 Feb, 2017 1 commit
    • Eike Ziller's avatar
      Move mimetype definitions to plugin specs · d64e17ad
      Eike Ziller authored
      - Avoids the hassle of QRC files and manually registering mime types
      - Avoids performance regressions because of mime types that are
        registered after mime database has been used
      - Makes it technically possible to detect that a disabled plugin could
        handle a mime type if it was enabled
      
      Change-Id: I373008b1b56e9c6b4853055f20b3eeb112a6eff9
      Reviewed-by: Christian Stenger's avatarChristian Stenger <christian.stenger@qt.io>
      Reviewed-by: default avatarhjk <hjk@qt.io>
      d64e17ad
  11. 20 Feb, 2017 1 commit
    • Nikolai Kosjar's avatar
      CppTools/ProjectManagers: Reduce ui blocking when loading projects · 8c90998f
      Nikolai Kosjar authored
      ${AnyProject}::updateCppCodeModel() did two potentially not that cheap
      operations in the ui thread:
       (1) Querying the MimeDatabase for the mime type for the source files of
           the project. In 99.9% of the cases no files need to be read for
           this as the file extension will resolve the type. The expensiveness
           comes from the sheer number of files that can occur.
       (2) Calling compilers with the "(sub)project's compiler command line"
           to determine the macros. While the caches avoid redundant calls,
           the number of the unique compiler calls makes this still a
           ui-freezing experience.
      
      These two operations are moved into a worker thread. For this, the
      expensive compiler calls are encapsulated in thread safe lambdas
      ("runners") in order to keep the "mutexed" data minimal. The original
      API calls of the toolchains are implemented in terms of the runners.
      
      While adapting the project managers, remove also the calls to
      setProjectLanguage(). These are redundant because all of the project
      managers already set a proper value in the constructor. Also, currently
      there is no need (client) to report back detection of C sources in
      project parts. This also keeps CppProjectUpdater simple.
      
      There is still room for improvement:
       * Run the compiler calls in parallel instead of sequence.
       * Ensure that the mime type for a file is determined exactly once.
      
      Change-Id: I2efc4e132ee88e3c8f264012ec8fafe3d86c404f
      Reviewed-by: Tobias Hunger's avatarTobias Hunger <tobias.hunger@qt.io>
      8c90998f
  12. 10 Feb, 2017 1 commit
  13. 09 Feb, 2017 1 commit
  14. 06 Feb, 2017 1 commit
  15. 31 Jan, 2017 2 commits
    • Marco Bubke's avatar
      Clang: Add Process Generator · ea4141ee
      Marco Bubke authored
      So far we only compiled the precompiled headers only sequentially. The
      process generator is creating, managing a queue of processes to compile
      the PCHs parallel.
      
      Change-Id: I8075def4ef9e6b0191bbd51b3631d1c51ec7b361
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      ea4141ee
    • Marco Bubke's avatar
      Clang: Add timer based path notification compression · 2c55a9c5
      Marco Bubke authored
      QFileWatcher is only reporting one path per signal which is suboptimal if
      you change many files at once. This patch is introducing a timer which is
      waiting some time time to see if more path changes are reported and is
      collecting them in a vector.
      
      Change-Id: I50f7c21186353b199634e7b3cd5a41f8d581a31d
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      2c55a9c5
  16. 30 Jan, 2017 2 commits
    • Marco Bubke's avatar
      Clang: Add ClangPchManager · c072cdfb
      Marco Bubke authored
      Compiling every header file again and again is quite time comsuming. There
      are technics to improve this like preambles(a kind of automated
      precompiled header) but they don't share their data between translation
      units. This approach provides an automatically generated precompiled
      header for every project and subproject to improve the loading time.
      
      Change-Id: I34f5bd4db21951175920e2a9bbf6b97b1d705969
      Reviewed-by: Eike Ziller's avatarEike Ziller <eike.ziller@qt.io>
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      c072cdfb
    • Tim Jenssen's avatar
      UnitTests: fix that feature "shared" was set · d4b1cb4a
      Tim Jenssen authored
      Resulted in wrong import/export defines of Utils symbols. Also it needs
      to be set before the project includes are be done.
      
      Change-Id: I950155a92c9a8ea21d5d91a57bd42058980d3971
      Reviewed-by: Marco Bubke's avatarMarco Bubke <marco.bubke@qt.io>
      d4b1cb4a
  17. 04 Jan, 2017 1 commit
    • Marco Bubke's avatar
      UnitTests: Fix names and disable slow tests by default · ada5ea19
      Marco Bubke authored
      Slow and very slow tests have now their own test category. We add SlowTest
      for tests which are slower than ~5ms and VerySlowTest if they are slower
      than ~100ms. They are disabled them by "-*SlowTest.*". If you have a faster
      machine than most developers simply try lower values. The aim is that most
      developers can execute the tests in under ~2s.
      
      In the long run we should use dependency breaking and data sharing to
      reduce the count of the slow tests.
      
      Change-Id: I8578071258d7f89b2052709f3dd526ced811483f
      Reviewed-by: Nikolai Kosjar's avatarNikolai Kosjar <nikolai.kosjar@qt.io>
      ada5ea19
  18. 20 Dec, 2016 1 commit
  19. 16 Dec, 2016 1 commit
  20. 13 Dec, 2016 1 commit
    • Nikolai Kosjar's avatar
      CppTools: Refactor ProjectPartBuilder · 602ad72d
      Nikolai Kosjar authored
      ...and add some basic tests.
      
      Introduce the abstractions ProjectInterface and ToolChainInterface in
      order to break the dependency to the ProjectExplorer. Also, some simple
      logic can go there to simplify the (Base)ProjectPartBuilder.
      
      Change-Id: I6c50a1804ce62098b87109931eb171f5c2542937
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      602ad72d
  21. 12 Dec, 2016 1 commit
    • Nikolai Kosjar's avatar
      CppTools: Classify ambiguous headers depending on other files · 3a369552
      Nikolai Kosjar authored
      This applies for all project managers, except qmake. The qmake project
      manager will make use of this in follow up changes.
      
      Before, "foo.h" was always recognized as a CXXHeader. Now, it depends on
      the other files. E.g. in a file list {"foo.h", "foo.c"} foo.h is now a
      CHeader. In {"foo.h", "foo.c", "bar.cpp"} the file "foo.h" is ambiguous
      and we will create two project parts, one where it is a CHeader, the
      other where it is a CXXHeader.
      
      Change-Id: I50505163368742584b1380c284d42cbe07cb4fc9
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      3a369552
  22. 23 Nov, 2016 2 commits
    • Tim Jenssen's avatar
      Utils: Add offset to search results · 6fe90532
      Tim Jenssen authored
      Offset are better to compute the length of a text range. The only problem
      is that we get them for utf8 because that is the text representation of
      source file. QTextDocument is Utf16 based, so it can not binary represent
      the source file. Actually I do not see a simple performing workaround for
      it.
      
      Change-Id: Id615e1ee6a6e85c6ecc4f8044e275142409d9b46
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      6fe90532
    • Tim Jenssen's avatar
      Clang: Extend clang query · 7f757884
      Tim Jenssen authored
      It's a first step to introduce clang query.
      
      Change-Id: I4d001a8883f56066765ce6bc561fa3f49611c0a4
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      7f757884
  23. 15 Nov, 2016 1 commit
    • Tim Jenssen's avatar
      Clang: Add clang query · 9c7ff519
      Tim Jenssen authored
      Clang query is mechanism to use AST matcher to search for code. Think
      about regular expression but in the context of AST. So you get a semantic
      search tool for C++.
      
      Change-Id: I72e882c5b53a0c52f352a3664847c4c3e4f6fc2e
      Reviewed-by: Tim Jenssen's avatarTim Jenssen <tim.jenssen@qt.io>
      9c7ff519
  24. 12 Oct, 2016 1 commit
  25. 11 Oct, 2016 1 commit
    • Nikolai Kosjar's avatar
      Clang: Show info bar for parse errors in header files · 9d55d848
      Nikolai Kosjar authored
      ...because those errors can lead to a substantial performance/functional
      regression.
      
      The actual diagnostics (possibly with children) are shown as details in
      the info bar.
      
      The info bar can be hidden with the "Do Not Show Again" button.
      Re-enabling the info bar is possible with the new editor tool bar
      button.
      
      Change-Id: I03394ff8e3c84127946b0b791930b28a385f5a46
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      9d55d848
  26. 10 Oct, 2016 3 commits
    • Nikolai Kosjar's avatar
      Clang: Hook up supportive translation unit on first edit · 380d756a
      Nikolai Kosjar authored
      Parsing happens rotationally on the translation units.
      
      The recently parsed translation unit is used for completion jobs while
      the older version is used for parse jobs.
      
      Advantages:
        A1. A completion job cannot be blocked anymore by currently running
            parse job.
        A2. Faster triggering of parse jobs. A reparse was triggered about
            1650ms after the last keystroke. This is down to 500ms now since we
            do not have a blocking translation unit for the completion anymore.
      
      Disadvantages:
        D1. Memory consumption is doubled for an edited document.
            This could be addressed by suspending the second translation unit
            after some time of inactivity.
        D2. Setup of the supportive translation unit takes some time.
      
      Change-Id: I958c883c01f274530f5482c788c15cd38d6f4c3e
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      380d756a
    • Nikolai Kosjar's avatar
      Clang: Support second translation unit · 1a426d9f
      Nikolai Kosjar authored
      A TranslationUnit is owned by TranslationUnits now. TranslationUnits
      allows to add another TranslationUnit and to update/query the recently
      and previously parsed translation unit.
      
      This does not change any behavior yet.
      
      Change-Id: I8a2f0cc05d3e51bf739dd5d7c4da14b54147f3ab
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      1a426d9f
    • Nikolai Kosjar's avatar
      Clang: Add job queue for each document · c12d01fb
      Nikolai Kosjar authored
      ...in preparation for follow-up changes. This will enable e.g. a timer
      per document.
      
      This does not change any behavior yet.
      
      Change-Id: Ic1dc06de602373c666d47ce7a95ab99e56d389d5
      Reviewed-by: David Schulz's avatarDavid Schulz <david.schulz@qt.io>
      c12d01fb
  27. 19 Sep, 2016 1 commit
  28. 07 Sep, 2016 1 commit
  29. 31 Aug, 2016 1 commit
  30. 22 Aug, 2016 1 commit
  31. 15 Aug, 2016 1 commit
  32. 04 Aug, 2016 1 commit
  33. 02 Aug, 2016 1 commit