From af63f488c2bdec64cceed4c9d9a70a152fb1fbdb Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 28 Sep 2017 11:27:43 +0200 Subject: [PATCH] Debugger: Simplify CdbEngine construction Moving the knowledge that this won't work well outside windows kind of decreases encapsulation, but that's not really worth the complication of the error handling here. Change-Id: Idcb6f6d64f33ee8c49a01e62e20aad16d3f01b86 Reviewed-by: Christian Stenger --- src/plugins/debugger/cdb/cdbengine.cpp | 18 ++------ src/plugins/debugger/debuggerruncontrol.cpp | 47 ++++++++++----------- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index a860e5defaf..c903e34e44b 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -194,22 +194,10 @@ public: CdbEngine::CommandHandler handler; }; -static inline bool validMode(DebuggerStartMode sm) +// Accessed by DebuggerRunTool +DebuggerEngine *createCdbEngine() { - return sm != NoStartMode; -} - -// Accessed by RunControlFactory -DebuggerEngine *createCdbEngine(QStringList *errors, DebuggerStartMode sm) -{ - if (HostOsInfo::isWindowsHost()) { - if (validMode(sm)) - return new CdbEngine(); - errors->append(CdbEngine::tr("Internal error: Invalid start parameters passed for the CDB engine.")); - } else { - errors->append(CdbEngine::tr("Unsupported CDB host system.")); - } - return 0; + return new CdbEngine; } void addCdbOptionPages(QList *opts) diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 5d9870d8679..e5271453a52 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -76,7 +76,7 @@ enum { debug = 0 }; namespace Debugger { namespace Internal { -DebuggerEngine *createCdbEngine(QStringList *error, DebuggerStartMode sm); +DebuggerEngine *createCdbEngine(); DebuggerEngine *createGdbEngine(); DebuggerEngine *createPdbEngine(); DebuggerEngine *createQmlEngine(bool useTerminal); @@ -479,29 +479,28 @@ void DebuggerRunTool::start() runControl()->setDisplayName(m_runParameters.displayName); DebuggerEngine *cppEngine = nullptr; - - switch (m_runParameters.cppEngineType) { - case GdbEngineType: - cppEngine = createGdbEngine(); - break; - case CdbEngineType: { - QStringList errors; - cppEngine = createCdbEngine(&errors, m_runParameters.startMode); - if (!errors.isEmpty()) { - reportFailure(errors.join('\n')); - return; - } - } - break; - case LldbEngineType: - cppEngine = createLldbEngine(); - break; - case PdbEngineType: // FIXME: Yes, Python counts as C++... - cppEngine = createPdbEngine(); - break; - default: - QTC_CHECK(false); - break; + if (!m_engine) { + switch (m_runParameters.cppEngineType) { + case GdbEngineType: + cppEngine = createGdbEngine(); + break; + case CdbEngineType: + if (!HostOsInfo::isWindowsHost()) { + reportFailure(tr("Unsupported CDB host system.")); + return; + } + cppEngine = createCdbEngine(); + break; + case LldbEngineType: + cppEngine = createLldbEngine(); + break; + case PdbEngineType: // FIXME: Yes, Python counts as C++... + cppEngine = createPdbEngine(); + break; + default: + QTC_CHECK(false); + break; + } } switch (m_runParameters.masterEngineType) {