forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.6' into 4.7
Change-Id: Ifddceb06f377ea428300fa8a48908cfc44b98705
This commit is contained in:
51
dist/changes-4.6.2.md
vendored
Normal file
51
dist/changes-4.6.2.md
vendored
Normal file
@@ -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
|
||||||
@@ -696,7 +696,6 @@ void GdbEngine::interruptInferior()
|
|||||||
showStatusMessage(tr("Stop requested..."), 5000);
|
showStatusMessage(tr("Stop requested..."), 5000);
|
||||||
showMessage("TRYING TO INTERRUPT INFERIOR");
|
showMessage("TRYING TO INTERRUPT INFERIOR");
|
||||||
if (HostOsInfo::isWindowsHost() && !m_isQnxGdb) {
|
if (HostOsInfo::isWindowsHost() && !m_isQnxGdb) {
|
||||||
QTC_ASSERT(state() == InferiorStopRequested, qDebug() << state(); notifyInferiorStopFailed());
|
|
||||||
IDevice::ConstPtr device = runTool()->device();
|
IDevice::ConstPtr device = runTool()->device();
|
||||||
if (!device)
|
if (!device)
|
||||||
device = runParameters().inferior.device;
|
device = runParameters().inferior.device;
|
||||||
|
|||||||
@@ -1813,9 +1813,8 @@ bool BaseQtVersion::isQtQuickCompilerSupported(QString *reason) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString qtQuickCompilerExecutable =
|
const QString qtQuickCompilerPrf = mkspecsPath().toString() + "/features/qtquickcompiler.prf";
|
||||||
HostOsInfo::withExecutableSuffix(binPath().toString() + "/qtquickcompiler");
|
if (!QFileInfo::exists(qtQuickCompilerPrf)) {
|
||||||
if (!QFileInfo::exists(qtQuickCompilerExecutable)) {
|
|
||||||
if (reason)
|
if (reason)
|
||||||
*reason = QCoreApplication::translate("BaseQtVersion", "This Qt Version does not contain Qt Quick Compiler.");
|
*reason = QCoreApplication::translate("BaseQtVersion", "This Qt Version does not contain Qt Quick Compiler.");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -166,7 +166,6 @@ void ProFileCacheManager::clear()
|
|||||||
// loop is concerned. Use a shared pointer once this is not true anymore.
|
// loop is concerned. Use a shared pointer once this is not true anymore.
|
||||||
delete m_cache;
|
delete m_cache;
|
||||||
m_cache = 0;
|
m_cache = 0;
|
||||||
QMakeVfs::clearIds();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProFileCacheManager::discardFiles(const QString &prefix, QMakeVfs *vfs)
|
void ProFileCacheManager::discardFiles(const QString &prefix, QMakeVfs *vfs)
|
||||||
|
|||||||
@@ -49,11 +49,29 @@ QMakeVfs::QMakeVfs()
|
|||||||
#ifndef QT_NO_TEXTCODEC
|
#ifndef QT_NO_TEXTCODEC
|
||||||
m_textCodec = 0;
|
m_textCodec = 0;
|
||||||
#endif
|
#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
|
#ifdef PROPARSER_THREAD_SAFE
|
||||||
QMutex QMakeVfs::s_mutex;
|
QMutex QMakeVfs::s_mutex;
|
||||||
#endif
|
#endif
|
||||||
|
int QMakeVfs::s_refCount;
|
||||||
QAtomicInt QMakeVfs::s_fileIdCounter;
|
QAtomicInt QMakeVfs::s_fileIdCounter;
|
||||||
QHash<QString, int> QMakeVfs::s_fileIdMap;
|
QHash<QString, int> QMakeVfs::s_fileIdMap;
|
||||||
QHash<int, QString> QMakeVfs::s_idFileMap;
|
QHash<int, QString> QMakeVfs::s_idFileMap;
|
||||||
@@ -111,16 +129,6 @@ QString QMakeVfs::fileNameForId(int id)
|
|||||||
return s_idFileMap.value(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,
|
bool QMakeVfs::writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags,
|
||||||
const QString &contents, QString *errStr)
|
const QString &contents, QString *errStr)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,10 +72,10 @@ public:
|
|||||||
Q_DECLARE_FLAGS(VfsFlags, VfsFlag)
|
Q_DECLARE_FLAGS(VfsFlags, VfsFlag)
|
||||||
|
|
||||||
QMakeVfs();
|
QMakeVfs();
|
||||||
|
~QMakeVfs();
|
||||||
|
|
||||||
int idForFileName(const QString &fn, VfsFlags flags);
|
int idForFileName(const QString &fn, VfsFlags flags);
|
||||||
QString fileNameForId(int id);
|
QString fileNameForId(int id);
|
||||||
static void clearIds();
|
|
||||||
bool writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr);
|
bool writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr);
|
||||||
ReadResult readFile(int id, QString *contents, QString *errStr);
|
ReadResult readFile(int id, QString *contents, QString *errStr);
|
||||||
bool exists(const QString &fn, QMakeVfs::VfsFlags flags);
|
bool exists(const QString &fn, QMakeVfs::VfsFlags flags);
|
||||||
@@ -93,6 +93,7 @@ private:
|
|||||||
#ifdef PROEVALUATOR_THREAD_SAFE
|
#ifdef PROEVALUATOR_THREAD_SAFE
|
||||||
static QMutex s_mutex;
|
static QMutex s_mutex;
|
||||||
#endif
|
#endif
|
||||||
|
static int s_refCount;
|
||||||
static QAtomicInt s_fileIdCounter;
|
static QAtomicInt s_fileIdCounter;
|
||||||
// Qt Creator's ProFile cache is a singleton to maximize its cross-project
|
// Qt Creator's ProFile cache is a singleton to maximize its cross-project
|
||||||
// effectiveness (shared prf files from QtVersions).
|
// effectiveness (shared prf files from QtVersions).
|
||||||
|
|||||||
@@ -26,8 +26,6 @@
|
|||||||
source("../../shared/qtcreator.py")
|
source("../../shared/qtcreator.py")
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
test.warning("This needs a Qt 5.6.2 kit. Skipping it.")
|
|
||||||
return
|
|
||||||
pathCreator = os.path.join(srcPath, "creator", "qtcreator.qbs")
|
pathCreator = os.path.join(srcPath, "creator", "qtcreator.qbs")
|
||||||
if not neededFilePresent(pathCreator):
|
if not neededFilePresent(pathCreator):
|
||||||
return
|
return
|
||||||
@@ -36,8 +34,8 @@ def main():
|
|||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
return
|
||||||
openQbsProject(pathCreator)
|
openQbsProject(pathCreator)
|
||||||
if not addAndActivateKit(Targets.DESKTOP_5_6_1_DEFAULT):
|
if not addAndActivateKit(Targets.DESKTOP_5_10_1_DEFAULT):
|
||||||
test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_4_1_GCC))
|
test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_10_1_DEFAULT))
|
||||||
invokeMenuItem("File", "Exit")
|
invokeMenuItem("File", "Exit")
|
||||||
return
|
return
|
||||||
test.log("Start parsing project")
|
test.log("Start parsing project")
|
||||||
|
|||||||
@@ -11808,124 +11808,6 @@
|
|||||||
"outputprocessor.h" "3"
|
"outputprocessor.h" "3"
|
||||||
"clangbackend" "2"
|
"clangbackend" "2"
|
||||||
"clangbackend.qbs:3" "3"
|
"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" "2"
|
||||||
"iostool.qbs:3" "3"
|
"iostool.qbs:3" "3"
|
||||||
"standard pch file (gui)" "3"
|
"standard pch file (gui)" "3"
|
||||||
@@ -12588,6 +12470,13 @@
|
|||||||
"diff.qbs:3" "3"
|
"diff.qbs:3" "3"
|
||||||
"Differ autotest" "3"
|
"Differ autotest" "3"
|
||||||
"differ.qbs:3" "4"
|
"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 autotest" "2"
|
||||||
"environment.qbs:3" "3"
|
"environment.qbs:3" "3"
|
||||||
"standard pch file (gui)" "3"
|
"standard pch file (gui)" "3"
|
||||||
@@ -13204,18 +13093,6 @@
|
|||||||
"qbsplugin.qbs" "4"
|
"qbsplugin.qbs" "4"
|
||||||
"tools" "2"
|
"tools" "2"
|
||||||
"cplusplustools.qbs" "3"
|
"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"
|
"clangstaticanalyzer" "2"
|
||||||
"clangstaticanalyzerautotest.qbs" "3"
|
"clangstaticanalyzerautotest.qbs" "3"
|
||||||
"cplusplus" "2"
|
"cplusplus" "2"
|
||||||
|
|||||||
|
@@ -41,7 +41,7 @@ def main():
|
|||||||
waitFor("runButton.enabled", 30000)
|
waitFor("runButton.enabled", 30000)
|
||||||
# Starting before opening, because this is where Creator froze (QTCREATORBUG-10733)
|
# Starting before opening, because this is where Creator froze (QTCREATORBUG-10733)
|
||||||
startopening = datetime.utcnow()
|
startopening = datetime.utcnow()
|
||||||
openQmakeProject(pathCreator, [Targets.DESKTOP_5_6_1_DEFAULT])
|
openQmakeProject(pathCreator, [Targets.DESKTOP_5_10_1_DEFAULT])
|
||||||
# Wait for parsing to complete
|
# Wait for parsing to complete
|
||||||
startreading = datetime.utcnow()
|
startreading = datetime.utcnow()
|
||||||
waitFor("runButton.enabled", 300000)
|
waitFor("runButton.enabled", 300000)
|
||||||
@@ -64,9 +64,9 @@ def main():
|
|||||||
openGeneralMessages()
|
openGeneralMessages()
|
||||||
# Verify messages appear once, from using default kit before configuring
|
# Verify messages appear once, from using default kit before configuring
|
||||||
generalMessages = str(waitForObject(":Qt Creator_Core::OutputWindow").plainText)
|
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?")
|
"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)?")
|
"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)
|
# Verify that qmljs.g is in the project even when we don't know where (QTCREATORBUG-17609)
|
||||||
|
|||||||
Reference in New Issue
Block a user