diff options
author | Eike Ziller <eike.ziller@qt.io> | 2018-05-28 16:07:00 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2018-05-28 16:07:00 +0200 |
commit | c1c57f0c383f88451d1b6c8fe83caa6f2f071048 (patch) | |
tree | 6eaeb663e6332f3071c15f4fc1eafe48924204aa | |
parent | bae61e08ea670aa083b9bc76e7744f0240fba423 (diff) | |
parent | d8caa228ea614f3afa8bd453a5dcf4d692c6d312 (diff) | |
download | qt-creator-c1c57f0c383f88451d1b6c8fe83caa6f2f071048.tar.gz |
Merge remote-tracking branch 'origin/4.6' into 4.7
Change-Id: Ifddceb06f377ea428300fa8a48908cfc44b98705
-rw-r--r-- | dist/changes-4.6.2.md | 51 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.cpp | 1 | ||||
-rw-r--r-- | src/plugins/qtsupport/baseqtversion.cpp | 5 | ||||
-rw-r--r-- | src/plugins/qtsupport/profilereader.cpp | 1 | ||||
-rw-r--r-- | src/shared/proparser/qmakevfs.cpp | 28 | ||||
-rw-r--r-- | src/shared/proparser/qmakevfs.h | 3 | ||||
-rw-r--r-- | tests/system/suite_general/tst_opencreator_qbs/test.py | 6 | ||||
-rw-r--r-- | tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv | 137 | ||||
-rw-r--r-- | tests/system/suite_general/tst_openqt_creator/test.py | 6 |
9 files changed, 85 insertions, 153 deletions
diff --git a/dist/changes-4.6.2.md b/dist/changes-4.6.2.md new file mode 100644 index 0000000000..e68101c536 --- /dev/null +++ b/dist/changes-4.6.2.md @@ -0,0 +1,51 @@ +Qt Creator version 4.6.2 contains bug fixes. + +The most important changes are listed in this document. For a complete +list of changes, see the Git log for the Qt Creator sources that +you can check out from the public Git repository. For example: + + git clone git://code.qt.io/qt-creator/qt-creator.git + git log --cherry-pick --pretty=oneline v4.6.1..v4.6.2 + +General + +QMake Projects + +* Fixed reparsing after changes (QTCREATORBUG-20113) + +Qt Support + +* Fixed detection of Qt Quick Compiler in Qt 5.11 (QTCREATORBUG-19993) + +C++ Support + +* Fixed flags for C files with MSVC (QTCREATORBUG-20198) + +Debugging + +* Fixed crash when attaching to remote process (QTCREATORBUG-20331) + +Platform Specific + +macOS + +* Fixed signature of pre-built binaries (QTCREATORBUG-20370) + +Android + +* Fixed path to C++ includes (QTCREATORBUG-20340) + +QNX + +* Fixed restoring deploy steps (QTCREATORBUG-20248) + +Credits for these changes go to: +Alessandro Portale +André Pönitz +Christian Stenger +Eike Ziller +Ivan Donchevskii +Oswald Buddenhagen +Robert Löhning +Ulf Hermann +Vikas Pachdha diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 65f7708235..ee2fe1de9e 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -696,7 +696,6 @@ void GdbEngine::interruptInferior() showStatusMessage(tr("Stop requested..."), 5000); showMessage("TRYING TO INTERRUPT INFERIOR"); if (HostOsInfo::isWindowsHost() && !m_isQnxGdb) { - QTC_ASSERT(state() == InferiorStopRequested, qDebug() << state(); notifyInferiorStopFailed()); IDevice::ConstPtr device = runTool()->device(); if (!device) device = runParameters().inferior.device; diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 34e4ef20e3..af6cdcb44a 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -1813,9 +1813,8 @@ bool BaseQtVersion::isQtQuickCompilerSupported(QString *reason) const return false; } - const QString qtQuickCompilerExecutable = - HostOsInfo::withExecutableSuffix(binPath().toString() + "/qtquickcompiler"); - if (!QFileInfo::exists(qtQuickCompilerExecutable)) { + const QString qtQuickCompilerPrf = mkspecsPath().toString() + "/features/qtquickcompiler.prf"; + if (!QFileInfo::exists(qtQuickCompilerPrf)) { if (reason) *reason = QCoreApplication::translate("BaseQtVersion", "This Qt Version does not contain Qt Quick Compiler."); return false; diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp index 86ec0f16d7..15eb960071 100644 --- a/src/plugins/qtsupport/profilereader.cpp +++ b/src/plugins/qtsupport/profilereader.cpp @@ -166,7 +166,6 @@ void ProFileCacheManager::clear() // loop is concerned. Use a shared pointer once this is not true anymore. delete m_cache; m_cache = 0; - QMakeVfs::clearIds(); } void ProFileCacheManager::discardFiles(const QString &prefix, QMakeVfs *vfs) diff --git a/src/shared/proparser/qmakevfs.cpp b/src/shared/proparser/qmakevfs.cpp index d7248fbd5b..c5c5b75c74 100644 --- a/src/shared/proparser/qmakevfs.cpp +++ b/src/shared/proparser/qmakevfs.cpp @@ -49,11 +49,29 @@ QMakeVfs::QMakeVfs() #ifndef QT_NO_TEXTCODEC m_textCodec = 0; #endif +#ifdef PROEVALUATOR_THREAD_SAFE + QMutexLocker locker(&s_mutex); +#endif + ++s_refCount; } +QMakeVfs::~QMakeVfs() +{ +#ifdef PROEVALUATOR_THREAD_SAFE + QMutexLocker locker(&s_mutex); +#endif + if (!--s_refCount) { + s_fileIdCounter = 0; + s_fileIdMap.clear(); + s_idFileMap.clear(); + } +} + + #ifdef PROPARSER_THREAD_SAFE QMutex QMakeVfs::s_mutex; #endif +int QMakeVfs::s_refCount; QAtomicInt QMakeVfs::s_fileIdCounter; QHash<QString, int> QMakeVfs::s_fileIdMap; QHash<int, QString> QMakeVfs::s_idFileMap; @@ -111,16 +129,6 @@ QString QMakeVfs::fileNameForId(int id) return s_idFileMap.value(id); } -void QMakeVfs::clearIds() -{ -#ifdef PROEVALUATOR_THREAD_SAFE - QMutexLocker locker(&s_mutex); -#endif - s_fileIdCounter = 0; - s_fileIdMap.clear(); - s_idFileMap.clear(); -} - bool QMakeVfs::writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr) { diff --git a/src/shared/proparser/qmakevfs.h b/src/shared/proparser/qmakevfs.h index da0d0626d8..34dd96fd7b 100644 --- a/src/shared/proparser/qmakevfs.h +++ b/src/shared/proparser/qmakevfs.h @@ -72,10 +72,10 @@ public: Q_DECLARE_FLAGS(VfsFlags, VfsFlag) QMakeVfs(); + ~QMakeVfs(); int idForFileName(const QString &fn, VfsFlags flags); QString fileNameForId(int id); - static void clearIds(); bool writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr); ReadResult readFile(int id, QString *contents, QString *errStr); bool exists(const QString &fn, QMakeVfs::VfsFlags flags); @@ -93,6 +93,7 @@ private: #ifdef PROEVALUATOR_THREAD_SAFE static QMutex s_mutex; #endif + static int s_refCount; static QAtomicInt s_fileIdCounter; // Qt Creator's ProFile cache is a singleton to maximize its cross-project // effectiveness (shared prf files from QtVersions). diff --git a/tests/system/suite_general/tst_opencreator_qbs/test.py b/tests/system/suite_general/tst_opencreator_qbs/test.py index 9a11127df8..a20426d359 100644 --- a/tests/system/suite_general/tst_opencreator_qbs/test.py +++ b/tests/system/suite_general/tst_opencreator_qbs/test.py @@ -26,8 +26,6 @@ source("../../shared/qtcreator.py") def main(): - test.warning("This needs a Qt 5.6.2 kit. Skipping it.") - return pathCreator = os.path.join(srcPath, "creator", "qtcreator.qbs") if not neededFilePresent(pathCreator): return @@ -36,8 +34,8 @@ def main(): if not startedWithoutPluginError(): return openQbsProject(pathCreator) - if not addAndActivateKit(Targets.DESKTOP_5_6_1_DEFAULT): - test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_4_1_GCC)) + if not addAndActivateKit(Targets.DESKTOP_5_10_1_DEFAULT): + test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_10_1_DEFAULT)) invokeMenuItem("File", "Exit") return test.log("Start parsing project") diff --git a/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv b/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv index cfade2719b..59f46f7a87 100644 --- a/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv +++ b/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv @@ -11808,124 +11808,6 @@ "outputprocessor.h" "3" "clangbackend" "2" "clangbackend.qbs:3" "3" -"Group 3" "3" -"clangbackend.qbs:9" "4" -"ipcsource" "4" -"clangasyncjob.h" "5" -"clangbackend_global.h" "5" -"clangclock.h" "5" -"clangcodecompleteresults.cpp" "5" -"clangcodecompleteresults.h" "5" -"clangcodemodelserver.cpp" "5" -"clangcodemodelserver.h" "5" -"clangcompletecodejob.cpp" "5" -"clangcompletecodejob.h" "5" -"clangcreateinitialdocumentpreamblejob.cpp" "5" -"clangcreateinitialdocumentpreamblejob.h" "5" -"clangdocument.cpp" "5" -"clangdocument.h" "5" -"clangdocumentprocessor.cpp" "5" -"clangdocumentprocessor.h" "5" -"clangdocumentprocessors.cpp" "5" -"clangdocumentprocessors.h" "5" -"clangdocuments.cpp" "5" -"clangdocuments.h" "5" -"clangdocumentsuspenderresumer.cpp" "5" -"clangdocumentsuspenderresumer.h" "5" -"clangexceptions.cpp" "5" -"clangexceptions.h" "5" -"clangfilepath.cpp" "5" -"clangfilepath.h" "5" -"clangfilesystemwatcher.cpp" "5" -"clangfilesystemwatcher.h" "5" -"clangiasyncjob.cpp" "5" -"clangiasyncjob.h" "5" -"clangjobcontext.cpp" "5" -"clangjobcontext.h" "5" -"clangjobqueue.cpp" "5" -"clangjobqueue.h" "5" -"clangjobrequest.cpp" "5" -"clangjobrequest.h" "5" -"clangjobs.cpp" "5" -"clangjobs.h" "5" -"clangparsesupportivetranslationunitjob.cpp" "5" -"clangparsesupportivetranslationunitjob.h" "5" -"clangreferencescollector.cpp" "5" -"clangreferencescollector.h" "5" -"clangreparsesupportivetranslationunitjob.cpp" "5" -"clangreparsesupportivetranslationunitjob.h" "5" -"clangrequestdocumentannotationsjob.cpp" "5" -"clangrequestdocumentannotationsjob.h" "5" -"clangrequestreferencesjob.cpp" "5" -"clangrequestreferencesjob.h" "5" -"clangresumedocumentjob.cpp" "5" -"clangresumedocumentjob.h" "5" -"clangstring.h" "5" -"clangsupportivetranslationunitinitializer.cpp" "5" -"clangsupportivetranslationunitinitializer.h" "5" -"clangsuspenddocumentjob.cpp" "5" -"clangsuspenddocumentjob.h" "5" -"clangtranslationunit.cpp" "5" -"clangtranslationunit.h" "5" -"clangtranslationunits.cpp" "5" -"clangtranslationunits.h" "5" -"clangtranslationunitupdater.cpp" "5" -"clangtranslationunitupdater.h" "5" -"clangtype.cpp" "5" -"clangtype.h" "5" -"clangunsavedfilesshallowarguments.cpp" "5" -"clangunsavedfilesshallowarguments.h" "5" -"clangupdatedocumentannotationsjob.cpp" "5" -"clangupdatedocumentannotationsjob.h" "5" -"codecompleter.cpp" "5" -"codecompleter.h" "5" -"codecompletionchunkconverter.cpp" "5" -"codecompletionchunkconverter.h" "5" -"codecompletionsextractor.cpp" "5" -"codecompletionsextractor.h" "5" -"commandlinearguments.cpp" "5" -"commandlinearguments.h" "5" -"cursor.cpp" "5" -"cursor.h" "5" -"diagnostic.cpp" "5" -"diagnostic.h" "5" -"diagnosticset.cpp" "5" -"diagnosticset.h" "5" -"diagnosticsetiterator.h" "5" -"fixit.cpp" "5" -"fixit.h" "5" -"highlightingmark.cpp" "5" -"highlightingmark.h" "5" -"highlightingmarks.cpp" "5" -"highlightingmarks.h" "5" -"highlightingmarksiterator.h" "5" -"projectpart.cpp" "5" -"projectpart.h" "5" -"projects.cpp" "5" -"projects.h" "5" -"skippedsourceranges.cpp" "5" -"skippedsourceranges.h" "5" -"sourcelocation.cpp" "5" -"sourcelocation.h" "5" -"sourcerange.cpp" "5" -"sourcerange.h" "5" -"unsavedfile.cpp" "5" -"unsavedfile.h" "5" -"unsavedfiles.cpp" "5" -"unsavedfiles.h" "5" -"utf8positionfromlinecolumn.cpp" "5" -"utf8positionfromlinecolumn.h" "5" -"Group 4" "3" -"clangbackend.qbs:17" "4" -"crashhandlersetup.cpp" "5" -"crashhandlersetup.h" "5" -"standard pch file (gui)" "3" -"QtcProduct.qbs:58" "4" -"qtcreator_gui_pch.h" "5" -"standard pch file (non-gui)" "3" -"QtcProduct.qbs:50" "4" -"qtcreator_pch.h" "5" -"clangbackendmain.cpp" "3" "iostool" "2" "iostool.qbs:3" "3" "standard pch file (gui)" "3" @@ -12588,6 +12470,13 @@ "diff.qbs:3" "3" "Differ autotest" "3" "differ.qbs:3" "4" +"standard pch file (gui)" "4" +"QtcProduct.qbs:58" "5" +"qtcreator_gui_pch.h" "6" +"standard pch file (non-gui)" "4" +"QtcProduct.qbs:50" "5" +"qtcreator_pch.h" "6" +"tst_differ.cpp" "4" "Environment autotest" "2" "environment.qbs:3" "3" "standard pch file (gui)" "3" @@ -13204,18 +13093,6 @@ "qbsplugin.qbs" "4" "tools" "2" "cplusplustools.qbs" "3" -"cplusplus-keywordgen.qbs" "4" -"cplusplus-ast2png" "3" -"cplusplus-ast2png.qbs" "4" -"cplusplus-frontend" "3" -"cplusplus-frontend.qbs" "4" -"cplusplus-mkvisitor" "3" -"cplusplus-mkvisitor.qbs" "4" -"cplusplus-shared" "3" -"CPlusPlusTool.qbs" "4" -"CPlusPlusToolUsingCustomUtils.qbs" "4" -"cplusplus-update-frontend" "3" -"cplusplus-update-frontend.qbs" "4" "clangstaticanalyzer" "2" "clangstaticanalyzerautotest.qbs" "3" "cplusplus" "2" diff --git a/tests/system/suite_general/tst_openqt_creator/test.py b/tests/system/suite_general/tst_openqt_creator/test.py index 391c3d0bef..1c20800fe5 100644 --- a/tests/system/suite_general/tst_openqt_creator/test.py +++ b/tests/system/suite_general/tst_openqt_creator/test.py @@ -41,7 +41,7 @@ def main(): waitFor("runButton.enabled", 30000) # Starting before opening, because this is where Creator froze (QTCREATORBUG-10733) startopening = datetime.utcnow() - openQmakeProject(pathCreator, [Targets.DESKTOP_5_6_1_DEFAULT]) + openQmakeProject(pathCreator, [Targets.DESKTOP_5_10_1_DEFAULT]) # Wait for parsing to complete startreading = datetime.utcnow() waitFor("runButton.enabled", 300000) @@ -64,9 +64,9 @@ def main(): openGeneralMessages() # Verify messages appear once, from using default kit before configuring generalMessages = str(waitForObject(":Qt Creator_Core::OutputWindow").plainText) - test.compare(generalMessages.count("Project MESSAGE: Cannot build Qt Creator with Qt version 5.6.1."), 2, + test.compare(generalMessages.count("Project MESSAGE: Cannot build Qt Creator with Qt version 5.6.1."), 1, "Warning about outdated Qt shown?") - test.compare(generalMessages.count("Project ERROR: Use at least Qt 5.6.2."), 2, + test.compare(generalMessages.count("Project ERROR: Use at least Qt 5.6.2."), 1, "Minimum Qt version shown (once when parsing with default kit, once with selected)?") # Verify that qmljs.g is in the project even when we don't know where (QTCREATORBUG-17609) |