forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.8'
Conflicts: src/plugins/cpptools/compileroptionsbuilder.cpp Change-Id: I743ea39480cc5c7b6febcd2e93713d15a3ae6d9c
This commit is contained in:
@@ -125,8 +125,9 @@
|
|||||||
in the \c {Modules} directory of your CMake installation.
|
in the \c {Modules} directory of your CMake installation.
|
||||||
|
|
||||||
\note If you provide your own libraries, you also need to provide your own
|
\note If you provide your own libraries, you also need to provide your own
|
||||||
\c {FindFoo.cmake} file. For more information, see
|
\c {FindXXX.cmake} file. For more information, see
|
||||||
\l{http://vtk.org/Wiki/CMake_FAQ#Writing_FindXXX.cmake_files}{CMake FAQ}.
|
\l{https://gitlab.kitware.com/cmake/community/wikis/FAQ#writing-findxxxcmake-files}
|
||||||
|
{Writing FindXXX.cmake files}.
|
||||||
|
|
||||||
Syntax completion and highlighting work once your project successfully
|
Syntax completion and highlighting work once your project successfully
|
||||||
builds and links against the external library.
|
builds and links against the external library.
|
||||||
|
@@ -427,6 +427,7 @@
|
|||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\if defined(qtdesignstudio)
|
\if defined(qtdesignstudio)
|
||||||
|
\include qtdesignstudio-visual-effects.qdocinc qml visual effects
|
||||||
\include qtdesignstudio-components.qdocinc creating studio components
|
\include qtdesignstudio-components.qdocinc creating studio components
|
||||||
\include qtdesignstudio-components.qdocinc studio components
|
\include qtdesignstudio-components.qdocinc studio components
|
||||||
\endif
|
\endif
|
||||||
|
@@ -8,20 +8,31 @@
|
|||||||
"__javascriptQt5__"],
|
"__javascriptQt5__"],
|
||||||
"supportedImports": [
|
"supportedImports": [
|
||||||
"Qt.labs.calendar 1.0",
|
"Qt.labs.calendar 1.0",
|
||||||
"Qt.labs.controls 1.0",
|
|
||||||
"Qt.labs.templates 1.0",
|
|
||||||
"Qt.labs.folderlistmodel 2.0",
|
"Qt.labs.folderlistmodel 2.0",
|
||||||
"Qt.labs.folderlistmodel 2.1",
|
"Qt.labs.folderlistmodel 2.1",
|
||||||
"Qt.labs.folderlistmodel 2.2",
|
"Qt.labs.folderlistmodel 2.2",
|
||||||
|
"Qt.labs.folderlistmodel 2.12",
|
||||||
"Qt.labs.settings 1.0",
|
"Qt.labs.settings 1.0",
|
||||||
|
"Qt.labs.settings 1.1",
|
||||||
"Qt.labs.platform 1.0",
|
"Qt.labs.platform 1.0",
|
||||||
"Qt.WebSockets 1.0",
|
"Qt.WebSockets 1.0",
|
||||||
|
"Qt.WebSockets 1.1",
|
||||||
"Qt3D.Animation 2.9",
|
"Qt3D.Animation 2.9",
|
||||||
|
"Qt3D.Animation 2.12",
|
||||||
"Qt3D.Core 2.0",
|
"Qt3D.Core 2.0",
|
||||||
|
"Qt3D.Core 2.9",
|
||||||
|
"Qt3D.Core 2.12",
|
||||||
"Qt3D.Extras 2.0",
|
"Qt3D.Extras 2.0",
|
||||||
|
"Qt3D.Extras 2.9",
|
||||||
|
"Qt3D.Extras 2.12",
|
||||||
"Qt3D.Input 2.0",
|
"Qt3D.Input 2.0",
|
||||||
|
"Qt3D.Input 2.1",
|
||||||
|
"Qt3D.Input 2.12",
|
||||||
"Qt3D.Logic 2.0",
|
"Qt3D.Logic 2.0",
|
||||||
|
"Qt3D.Logic 2.12",
|
||||||
"Qt3D.Render 2.0",
|
"Qt3D.Render 2.0",
|
||||||
|
"Qt3D.Render 2.9",
|
||||||
|
"Qt3D.Render 2.12",
|
||||||
"Qt3D.Scene2D 2.9",
|
"Qt3D.Scene2D 2.9",
|
||||||
"QtAudioEngine 1.0",
|
"QtAudioEngine 1.0",
|
||||||
"QtBluetooth 5.0",
|
"QtBluetooth 5.0",
|
||||||
@@ -33,7 +44,13 @@
|
|||||||
"QtBluetooth 5.7",
|
"QtBluetooth 5.7",
|
||||||
"QtBluetooth 5.8",
|
"QtBluetooth 5.8",
|
||||||
"QtBluetooth 5.9",
|
"QtBluetooth 5.9",
|
||||||
|
"QtBluetooth 5.11",
|
||||||
|
"QtBluetooth 5.12",
|
||||||
|
"QtCanvas3D 1.1",
|
||||||
|
"QtCharts 2.3",
|
||||||
"QtDataVisualization 1.0",
|
"QtDataVisualization 1.0",
|
||||||
|
"QtDataVisualization 1.3",
|
||||||
|
"QtGamePad 1.12",
|
||||||
"QtGraphicalEffects 1.0",
|
"QtGraphicalEffects 1.0",
|
||||||
"QtMultimedia 5.0",
|
"QtMultimedia 5.0",
|
||||||
"QtMultimedia 5.2",
|
"QtMultimedia 5.2",
|
||||||
@@ -44,6 +61,7 @@
|
|||||||
"QtMultimedia 5.7",
|
"QtMultimedia 5.7",
|
||||||
"QtMultimedia 5.8",
|
"QtMultimedia 5.8",
|
||||||
"QtMultimedia 5.9",
|
"QtMultimedia 5.9",
|
||||||
|
"QtMultimedia 5.12",
|
||||||
"QtNfc 5.0",
|
"QtNfc 5.0",
|
||||||
"QtNfc 5.2",
|
"QtNfc 5.2",
|
||||||
"QtNfc 5.3",
|
"QtNfc 5.3",
|
||||||
@@ -53,6 +71,8 @@
|
|||||||
"QtNfc 5.7",
|
"QtNfc 5.7",
|
||||||
"QtNfc 5.8",
|
"QtNfc 5.8",
|
||||||
"QtNfc 5.9",
|
"QtNfc 5.9",
|
||||||
|
"QtNfc 5.11",
|
||||||
|
"QtNfc 5.12",
|
||||||
"QtPositioning 5.0",
|
"QtPositioning 5.0",
|
||||||
"QtPositioning 5.2",
|
"QtPositioning 5.2",
|
||||||
"QtPositioning 5.3",
|
"QtPositioning 5.3",
|
||||||
@@ -61,28 +81,33 @@
|
|||||||
"QtPositioning 5.6",
|
"QtPositioning 5.6",
|
||||||
"QtPositioning 5.7",
|
"QtPositioning 5.7",
|
||||||
"QtPositioning 5.8",
|
"QtPositioning 5.8",
|
||||||
|
"QtPositioning 5.11",
|
||||||
|
"QtPositioning 5.12",
|
||||||
"QtLocation 5.3",
|
"QtLocation 5.3",
|
||||||
"QtLocation 5.5",
|
"QtLocation 5.5",
|
||||||
"QtLocation 5.6",
|
"QtLocation 5.6",
|
||||||
"QtLocation 5.8",
|
"QtLocation 5.8",
|
||||||
"QtLocation 5.9",
|
"QtLocation 5.9",
|
||||||
|
"QtLocation 5.11",
|
||||||
|
"QtLocation 5.12",
|
||||||
"QtPurchasing 1.0",
|
"QtPurchasing 1.0",
|
||||||
|
"QtPurchasing 1.12",
|
||||||
"QtQml 2.0",
|
"QtQml 2.0",
|
||||||
"QtQml 2.1",
|
"QtQml 2.1",
|
||||||
"QtQml 2.2",
|
"QtQml 2.2",
|
||||||
|
"QtQml 2.3",
|
||||||
|
"QtQml 2.12",
|
||||||
"QtQml.Models 2.1",
|
"QtQml.Models 2.1",
|
||||||
"QtQml.Models 2.2",
|
"QtQml.Models 2.2",
|
||||||
"QtQml.Models 2.3",
|
"QtQml.Models 2.3",
|
||||||
"QtQuick.Controls 1.0",
|
"QtQml.Models 2.11",
|
||||||
"QtQuick.Controls 1.1",
|
"QtQml.Models 2.12",
|
||||||
"QtQuick.Controls 1.2",
|
|
||||||
"QtQuick.Controls 1.3",
|
|
||||||
"QtQuick.Controls 1.4",
|
|
||||||
"QtQuick.Controls 2.0",
|
"QtQuick.Controls 2.0",
|
||||||
"QtQuick.Controls 2.1",
|
"QtQuick.Controls 2.1",
|
||||||
"QtQuick.Controls 2.2",
|
"QtQuick.Controls 2.2",
|
||||||
"QtQuick.Controls 2.3",
|
"QtQuick.Controls 2.3",
|
||||||
"QtQuick.Controls 2.4",
|
"QtQuick.Controls 2.4",
|
||||||
|
"QtQuick.Controls 2.5",
|
||||||
"QtQuick.Controls.Material 2.0",
|
"QtQuick.Controls.Material 2.0",
|
||||||
"QtQuick.Controls.Material 2.1",
|
"QtQuick.Controls.Material 2.1",
|
||||||
"QtQuick.Controls.Material 2.2",
|
"QtQuick.Controls.Material 2.2",
|
||||||
@@ -104,18 +129,28 @@
|
|||||||
"QtQuick.Layouts 1.1",
|
"QtQuick.Layouts 1.1",
|
||||||
"QtQuick.Layouts 1.2",
|
"QtQuick.Layouts 1.2",
|
||||||
"QtQuick.Layouts 1.3",
|
"QtQuick.Layouts 1.3",
|
||||||
|
"QtQuick.Layouts 1.12",
|
||||||
"QtQuick.LocalStorage 2.0",
|
"QtQuick.LocalStorage 2.0",
|
||||||
|
"QtQuick.LocalStorage 2.11",
|
||||||
|
"QtQuick.LocalStorage 2.12",
|
||||||
"QtQuick.Particles 2.0",
|
"QtQuick.Particles 2.0",
|
||||||
|
"QtQuick.Particles 2.12",
|
||||||
|
"QtQuick.Shapes 1.12",
|
||||||
"QtQuick.Templates 2.0",
|
"QtQuick.Templates 2.0",
|
||||||
"QtQuick.Templates 2.1",
|
"QtQuick.Templates 2.1",
|
||||||
"QtQuick.Templates 2.2",
|
"QtQuick.Templates 2.2",
|
||||||
|
"QtQuick.Templates 2.5",
|
||||||
"QtQuick.Window 2.0",
|
"QtQuick.Window 2.0",
|
||||||
"QtQuick.Window 2.1",
|
"QtQuick.Window 2.1",
|
||||||
"QtQuick.Window 2.2",
|
"QtQuick.Window 2.2",
|
||||||
"QtQuick.Window 2.3",
|
"QtQuick.Window 2.3",
|
||||||
"QtQuick.Window 2.10",
|
"QtQuick.Window 2.10",
|
||||||
"QtQuick.Window 2.11",
|
"QtQuick.Window 2.11",
|
||||||
|
"QtQuick.Window 2.12",
|
||||||
"QtQuick.XmlListModel 2.0",
|
"QtQuick.XmlListModel 2.0",
|
||||||
|
"QtQuick.XmlListModel 2.12",
|
||||||
|
"QtRemoteObjects 5.12",
|
||||||
|
"QtScxml 5.8",
|
||||||
"QtSensors 5.0",
|
"QtSensors 5.0",
|
||||||
"QtSensors 5.1",
|
"QtSensors 5.1",
|
||||||
"QtSensors 5.2",
|
"QtSensors 5.2",
|
||||||
@@ -126,6 +161,8 @@
|
|||||||
"QtSensors 5.7",
|
"QtSensors 5.7",
|
||||||
"QtSensors 5.8",
|
"QtSensors 5.8",
|
||||||
"QtSensors 5.9",
|
"QtSensors 5.9",
|
||||||
|
"QtSensors 5.11",
|
||||||
|
"QtSensors 5.12",
|
||||||
"QtQuick 2.0",
|
"QtQuick 2.0",
|
||||||
"QtQuick 2.1",
|
"QtQuick 2.1",
|
||||||
"QtQuick 2.2",
|
"QtQuick 2.2",
|
||||||
@@ -138,7 +175,15 @@
|
|||||||
"QtQuick 2.9",
|
"QtQuick 2.9",
|
||||||
"QtQuick 2.10",
|
"QtQuick 2.10",
|
||||||
"QtQuick 2.11",
|
"QtQuick 2.11",
|
||||||
|
"QtQuick 2.12",
|
||||||
"QtTest 1.0",
|
"QtTest 1.0",
|
||||||
|
"QtTest 1.2",
|
||||||
|
"QtTest 1.12",
|
||||||
|
"QtVirtualKeyboard.VirtualKeyboard 2.4",
|
||||||
|
"QtVirtualKeyboard.Settings 2.2",
|
||||||
|
"QtVirtualKeyboard.Styles 2.1",
|
||||||
|
"QtScxml 5.8",
|
||||||
|
"QtWebChannel 1.0",
|
||||||
"QtWebEngine 1.0",
|
"QtWebEngine 1.0",
|
||||||
"QtWebEngine 1.1",
|
"QtWebEngine 1.1",
|
||||||
"QtWebEngine 1.2",
|
"QtWebEngine 1.2",
|
||||||
@@ -147,7 +192,12 @@
|
|||||||
"QtWebEngine 1.5",
|
"QtWebEngine 1.5",
|
||||||
"QtWebEngine 1.6",
|
"QtWebEngine 1.6",
|
||||||
"QtWebEngine 1.7",
|
"QtWebEngine 1.7",
|
||||||
|
"QtWebEngine 1.8",
|
||||||
|
"QtWebSockets 1.1",
|
||||||
|
"QtWebView 1.0",
|
||||||
|
"QtWebView 1.1",
|
||||||
"QtWebKit 3.0",
|
"QtWebKit 3.0",
|
||||||
"Enginio 1.0"
|
"QtWinExtras 1.0"
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -223,6 +223,8 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
|
|||||||
<< "Before Start ADB cmds:" << m_beforeStartAdbCommands
|
<< "Before Start ADB cmds:" << m_beforeStartAdbCommands
|
||||||
<< "After finish ADB cmds:" << m_afterFinishAdbCommands;
|
<< "After finish ADB cmds:" << m_afterFinishAdbCommands;
|
||||||
m_gdbserverPath = AndroidGdbServerKitInformation::gdbServer(target->kit()).toString();
|
m_gdbserverPath = AndroidGdbServerKitInformation::gdbServer(target->kit()).toString();
|
||||||
|
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
|
||||||
|
m_useAppParamsForQmlDebugger = version->qtVersion() >= QtSupport::QtVersionNumber(5, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidRunnerWorker::~AndroidRunnerWorker()
|
AndroidRunnerWorker::~AndroidRunnerWorker()
|
||||||
@@ -441,10 +443,18 @@ void AndroidRunnerWorker::asyncStartHelper()
|
|||||||
}
|
}
|
||||||
m_afterFinishAdbCommands.push_back(removeForward.join(' '));
|
m_afterFinishAdbCommands.push_back(removeForward.join(' '));
|
||||||
|
|
||||||
args << "-e" << "qml_debug" << "true"
|
const QString qmljsdebugger = QString("port:%1,block,services:%2")
|
||||||
<< "-e" << "qmljsdebugger"
|
|
||||||
<< QString("port:%1,block,services:%2")
|
|
||||||
.arg(m_qmlServer.port()).arg(QmlDebug::qmlDebugServices(m_qmlDebugServices));
|
.arg(m_qmlServer.port()).arg(QmlDebug::qmlDebugServices(m_qmlDebugServices));
|
||||||
|
|
||||||
|
if (m_useAppParamsForQmlDebugger) {
|
||||||
|
if (!m_extraAppParams.isEmpty())
|
||||||
|
m_extraAppParams.prepend(' ');
|
||||||
|
m_extraAppParams.prepend("-qmljsdebugger=" + qmljsdebugger);
|
||||||
|
} else {
|
||||||
|
args << "-e" << "qml_debug" << "true"
|
||||||
|
<< "-e" << "qmljsdebugger"
|
||||||
|
<< qmljsdebugger;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -111,6 +111,7 @@ protected:
|
|||||||
QString m_extraAppParams;
|
QString m_extraAppParams;
|
||||||
Utils::Environment m_extraEnvVars;
|
Utils::Environment m_extraEnvVars;
|
||||||
QString m_gdbserverPath;
|
QString m_gdbserverPath;
|
||||||
|
bool m_useAppParamsForQmlDebugger = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -203,9 +203,12 @@ Replacements replacements(const Utils::FileName &fileName,
|
|||||||
extraOffset = Utils::Text::utf8NthLineOffset(
|
extraOffset = Utils::Text::utf8NthLineOffset(
|
||||||
block->document(), buffer, block->blockNumber() - kMaxLinesFromCurrentBlock);
|
block->document(), buffer, block->blockNumber() - kMaxLinesFromCurrentBlock);
|
||||||
}
|
}
|
||||||
buffer = buffer.mid(extraOffset,
|
int endOffset = Utils::Text::utf8NthLineOffset(
|
||||||
std::min(buffer.size(), utf8Offset + kMaxLinesFromCurrentBlock)
|
block->document(), buffer, block->blockNumber() + kMaxLinesFromCurrentBlock);
|
||||||
- extraOffset);
|
if (endOffset == -1)
|
||||||
|
endOffset = buffer.size();
|
||||||
|
|
||||||
|
buffer = buffer.mid(extraOffset, endOffset - extraOffset);
|
||||||
utf8Offset -= extraOffset;
|
utf8Offset -= extraOffset;
|
||||||
|
|
||||||
const int emptySpaceLength = previousEmptyLinesLength(*block);
|
const int emptySpaceLength = previousEmptyLinesLength(*block);
|
||||||
|
@@ -138,6 +138,8 @@ void ClangToolsUnitTests::testProject_data()
|
|||||||
QTest::addColumn<QString>("projectFilePath");
|
QTest::addColumn<QString>("projectFilePath");
|
||||||
QTest::addColumn<int>("expectedDiagCount");
|
QTest::addColumn<int>("expectedDiagCount");
|
||||||
|
|
||||||
|
// For the simple project, we expect the following warning:
|
||||||
|
// warning: use nullptr [modernize-use-nullptr]
|
||||||
addTestRow("simple/simple.qbs", 1);
|
addTestRow("simple/simple.qbs", 1);
|
||||||
addTestRow("simple/simple.pro", 1);
|
addTestRow("simple/simple.pro", 1);
|
||||||
|
|
||||||
@@ -147,8 +149,12 @@ void ClangToolsUnitTests::testProject_data()
|
|||||||
addTestRow("stdc++11-includes/stdc++11-includes.qbs", 0);
|
addTestRow("stdc++11-includes/stdc++11-includes.qbs", 0);
|
||||||
addTestRow("stdc++11-includes/stdc++11-includes.pro", 0);
|
addTestRow("stdc++11-includes/stdc++11-includes.pro", 0);
|
||||||
|
|
||||||
addTestRow("qt-widgets-app/qt-widgets-app.qbs", 0);
|
// For qt-widgets-app, we expect the following warning for "a.exec()",
|
||||||
addTestRow("qt-widgets-app/qt-widgets-app.pro", 0);
|
// "a" being the QApplication object:
|
||||||
|
// warning: static member accessed through instance
|
||||||
|
// [readability-static-accessed-through-instance]
|
||||||
|
addTestRow("qt-widgets-app/qt-widgets-app.qbs", 1);
|
||||||
|
addTestRow("qt-widgets-app/qt-widgets-app.pro", 1);
|
||||||
|
|
||||||
addTestRow("qt-essential-includes/qt-essential-includes.qbs", 0);
|
addTestRow("qt-essential-includes/qt-essential-includes.qbs", 0);
|
||||||
addTestRow("qt-essential-includes/qt-essential-includes.pro", 0);
|
addTestRow("qt-essential-includes/qt-essential-includes.pro", 0);
|
||||||
|
@@ -504,7 +504,8 @@ static QByteArray msCompatibilityVersionFromDefines(const ProjectExplorer::Macro
|
|||||||
|
|
||||||
void CompilerOptionsBuilder::addMsvcCompatibilityVersion()
|
void CompilerOptionsBuilder::addMsvcCompatibilityVersion()
|
||||||
{
|
{
|
||||||
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) {
|
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
|
||||||
|
|| m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) {
|
||||||
const ProjectExplorer::Macros macros = m_projectPart.toolChainMacros
|
const ProjectExplorer::Macros macros = m_projectPart.toolChainMacros
|
||||||
+ m_projectPart.projectMacros;
|
+ m_projectPart.projectMacros;
|
||||||
const QByteArray msvcVersion = msCompatibilityVersionFromDefines(macros);
|
const QByteArray msvcVersion = msCompatibilityVersionFromDefines(macros);
|
||||||
|
@@ -205,10 +205,10 @@ void LanguageClientManager::reportFinished(const MessageId &id, BaseClient *byCl
|
|||||||
void LanguageClientManager::deleteClient(BaseClient *client)
|
void LanguageClientManager::deleteClient(BaseClient *client)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(client, return);
|
QTC_ASSERT(client, return);
|
||||||
client->disconnect(managerInstance);
|
client->disconnect();
|
||||||
managerInstance->removeMarks(client->id());
|
managerInstance->removeMarks(client->id());
|
||||||
managerInstance->m_clients.removeAll(client);
|
managerInstance->m_clients.removeAll(client);
|
||||||
delete client;
|
client->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientManager::shutdown()
|
void LanguageClientManager::shutdown()
|
||||||
|
@@ -1083,6 +1083,10 @@ void GccToolChainConfigWidget::applyImpl()
|
|||||||
tc->setDisplayName(displayName); // reset display name
|
tc->setDisplayName(displayName); // reset display name
|
||||||
tc->setPlatformCodeGenFlags(splitString(m_platformCodeGenFlagsLineEdit->text()));
|
tc->setPlatformCodeGenFlags(splitString(m_platformCodeGenFlagsLineEdit->text()));
|
||||||
tc->setPlatformLinkerFlags(splitString(m_platformLinkerFlagsLineEdit->text()));
|
tc->setPlatformLinkerFlags(splitString(m_platformLinkerFlagsLineEdit->text()));
|
||||||
|
|
||||||
|
if (m_macros.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
tc->m_predefinedMacrosCache
|
tc->m_predefinedMacrosCache
|
||||||
->insert(tc->platformCodeGenFlags(),
|
->insert(tc->platformCodeGenFlags(),
|
||||||
ToolChain::MacroInspectionReport{m_macros,
|
ToolChain::MacroInspectionReport{m_macros,
|
||||||
|
@@ -598,6 +598,8 @@ QList<Task> QmakeProject::projectIssues(const Kit *k) const
|
|||||||
QList<Task> result = Project::projectIssues(k);
|
QList<Task> result = Project::projectIssues(k);
|
||||||
if (!QtSupport::QtKitInformation::qtVersion(k))
|
if (!QtSupport::QtKitInformation::qtVersion(k))
|
||||||
result.append(createProjectTask(Task::TaskType::Error, tr("No Qt version set in kit.")));
|
result.append(createProjectTask(Task::TaskType::Error, tr("No Qt version set in kit.")));
|
||||||
|
else if (!QtSupport::QtKitInformation::qtVersion(k)->isValid())
|
||||||
|
result.append(createProjectTask(Task::TaskType::Error, tr("Qt version is invalid.")));
|
||||||
if (!ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID))
|
if (!ToolChainKitInformation::toolChain(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID))
|
||||||
result.append(createProjectTask(Task::TaskType::Error, tr("No C++ compiler set in kit.")));
|
result.append(createProjectTask(Task::TaskType::Error, tr("No C++ compiler set in kit.")));
|
||||||
return result;
|
return result;
|
||||||
|
@@ -89,14 +89,19 @@ QVariant ModelAdapter::data(const QModelIndex &index, int role) const
|
|||||||
if (!index.isValid() || index.row() >= m_completionModel->size())
|
if (!index.isValid() || index.row() >= m_completionModel->size())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole) {
|
||||||
return m_completionModel->text(index.row());
|
const QString text = m_completionModel->text(index.row());
|
||||||
else if (role == Qt::DecorationRole)
|
const int lineBreakPos = text.indexOf('\n');
|
||||||
|
if (lineBreakPos < 0)
|
||||||
|
return text;
|
||||||
|
return QString(text.leftRef(lineBreakPos) + QLatin1String(" (...)"));
|
||||||
|
} else if (role == Qt::DecorationRole) {
|
||||||
return m_completionModel->icon(index.row());
|
return m_completionModel->icon(index.row());
|
||||||
else if (role == Qt::WhatsThisRole)
|
} else if (role == Qt::WhatsThisRole) {
|
||||||
return m_completionModel->detail(index.row());
|
return m_completionModel->detail(index.row());
|
||||||
else if (role == Qt::UserRole)
|
} else if (role == Qt::UserRole) {
|
||||||
return m_completionModel->proposalItem(index.row())->requiresFixIts();
|
return m_completionModel->proposalItem(index.row())->requiresFixIts();
|
||||||
|
}
|
||||||
|
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
@@ -425,14 +425,24 @@ ToolTipInfo ToolTipInfoCollector::qDocInfo(const Cursor &cursor) const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor.kind() == CXCursor_VarDecl || cursor.kind() == CXCursor_FieldDecl) {
|
if (cursor.kind() == CXCursor_VarDecl || cursor.kind() == CXCursor_ParmDecl
|
||||||
result.qdocMark = typeName(cursor.type());
|
|| cursor.kind() == CXCursor_FieldDecl) {
|
||||||
// maybe template instantiation
|
// maybe template instantiation
|
||||||
if (cursor.type().kind() == CXType_Unexposed && cursor.type().canonical().kind() == CXType_Record) {
|
if (cursor.type().kind() == CXType_Unexposed && cursor.type().canonical().kind() == CXType_Record) {
|
||||||
result.qdocIdCandidates = qDocIdCandidates(cursor.type().canonical().declaration());
|
result.qdocIdCandidates = qDocIdCandidates(cursor.type().canonical().declaration());
|
||||||
|
result.qdocMark = typeName(cursor.type());
|
||||||
result.qdocCategory = ToolTipInfo::ClassOrNamespace;
|
result.qdocCategory = ToolTipInfo::ClassOrNamespace;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Type type = cursor.type();
|
||||||
|
while (type.pointeeType().isValid())
|
||||||
|
type = type.pointeeType();
|
||||||
|
|
||||||
|
const Cursor typeCursor = type.declaration();
|
||||||
|
result.qdocIdCandidates = qDocIdCandidates(typeCursor);
|
||||||
|
result.qdocCategory = qdocCategory(typeCursor);
|
||||||
|
result.qdocMark = typeName(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Handle also RValueReference()
|
// TODO: Handle also RValueReference()
|
||||||
|
@@ -25,6 +25,13 @@
|
|||||||
|
|
||||||
source("../../shared/qtcreator.py")
|
source("../../shared/qtcreator.py")
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
def delayedType(editor, text):
|
||||||
|
for c in text:
|
||||||
|
type(editor, c)
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
# entry of test
|
# entry of test
|
||||||
def main():
|
def main():
|
||||||
for useClang in [False, True]:
|
for useClang in [False, True]:
|
||||||
@@ -46,15 +53,10 @@ def main():
|
|||||||
# Focus "class derived from QObject" in the list and press Tab or Enter to complete the code.
|
# Focus "class derived from QObject" in the list and press Tab or Enter to complete the code.
|
||||||
editorWidget = findObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
|
editorWidget = findObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
|
||||||
mouseClick(editorWidget, 5, 5, 0, Qt.LeftButton)
|
mouseClick(editorWidget, 5, 5, 0, Qt.LeftButton)
|
||||||
|
jumpToFirstLine(editorWidget)
|
||||||
type(editorWidget, "<Return>")
|
type(editorWidget, "<Return>")
|
||||||
type(editorWidget, "<Up>")
|
type(editorWidget, "<Up>")
|
||||||
type(editorWidget, "class")
|
delayedType(editorWidget, "class")
|
||||||
if useClang and JIRA.isBugStillOpen(18769):
|
|
||||||
snooze(4)
|
|
||||||
if platform.system() == "Darwin":
|
|
||||||
type(editorWidget, "<Meta+Space>")
|
|
||||||
else:
|
|
||||||
type(editorWidget, "<Ctrl+Space>")
|
|
||||||
listView = waitForObject(":popupFrame_Proposal_QListView")
|
listView = waitForObject(":popupFrame_Proposal_QListView")
|
||||||
shownProposals = dumpItems(listView.model())
|
shownProposals = dumpItems(listView.model())
|
||||||
usedProposal = "class derived from QObject"
|
usedProposal = "class derived from QObject"
|
||||||
|
@@ -584,6 +584,18 @@ TEST_F(ToolTipInfo, AutoTypeBuiltin)
|
|||||||
ASSERT_THAT(actual.text, Utf8StringLiteral("int"));
|
ASSERT_THAT(actual.text, Utf8StringLiteral("int"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ToolTipInfo, PointerToPointerToClass)
|
||||||
|
{
|
||||||
|
::ToolTipInfo expected(Utf8StringLiteral("Nuu **"));
|
||||||
|
expected.qdocIdCandidates = {Utf8StringLiteral("Nuu")};
|
||||||
|
expected.qdocMark = Utf8StringLiteral("Nuu");
|
||||||
|
expected.qdocCategory = ::ToolTipInfo::ClassOrNamespace;
|
||||||
|
|
||||||
|
const ::ToolTipInfo actual = tooltip(200, 12);
|
||||||
|
|
||||||
|
ASSERT_THAT(actual, IsToolTip(expected));
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Test for qdoc entries, too.
|
// TODO: Test for qdoc entries, too.
|
||||||
TEST_F(ToolTipInfo, AutoTypeEnum)
|
TEST_F(ToolTipInfo, AutoTypeEnum)
|
||||||
{
|
{
|
||||||
|
@@ -446,7 +446,9 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptions)
|
|||||||
ElementsAre(
|
ElementsAre(
|
||||||
"-nostdlibinc", "-c", "-m64", "-target", "x86_64-apple-darwin10",
|
"-nostdlibinc", "-c", "-m64", "-target", "x86_64-apple-darwin10",
|
||||||
"-arch", "x86_64", "-x", "c++", "-std=c++17", "-fcxx-exceptions",
|
"-arch", "x86_64", "-x", "c++", "-std=c++17", "-fcxx-exceptions",
|
||||||
"-fexceptions", "-Dfoo=bar", "-DprojectFoo=projectBar", "-undef",
|
"-fexceptions", "-Dfoo=bar", "-DprojectFoo=projectBar",
|
||||||
|
"-DBOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING=(39, 1, true, \"T = \")",
|
||||||
|
"-undef",
|
||||||
"-I", IsPartOfHeader("wrappedQtHeaders"),
|
"-I", IsPartOfHeader("wrappedQtHeaders"),
|
||||||
"-I", IsPartOfHeader(QDir::toNativeSeparators("wrappedQtHeaders/QtCore").toStdString()),
|
"-I", IsPartOfHeader(QDir::toNativeSeparators("wrappedQtHeaders/QtCore").toStdString()),
|
||||||
"-I", QDir::toNativeSeparators("/tmp/path"),
|
"-I", QDir::toNativeSeparators("/tmp/path"),
|
||||||
|
@@ -194,3 +194,8 @@ void constructor()
|
|||||||
ExplicitCon();
|
ExplicitCon();
|
||||||
ExplicitCon(2);
|
ExplicitCon(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Nuu **pointers(Nuu **p1)
|
||||||
|
{
|
||||||
|
return p1;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user