From e689a1739561fd629152bda981d122ef7c332a9f Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 3 Dec 2008 11:59:11 +0100 Subject: [PATCH 1/2] Check for the wrong usage of ctor initializers. --- shared/cplusplus/CheckDeclaration.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/shared/cplusplus/CheckDeclaration.cpp b/shared/cplusplus/CheckDeclaration.cpp index b4c381d6175..6915faf82ce 100644 --- a/shared/cplusplus/CheckDeclaration.cpp +++ b/shared/cplusplus/CheckDeclaration.cpp @@ -236,13 +236,21 @@ bool CheckDeclaration::visit(FunctionDefinitionAST *ast) _scope->enterSymbol(fun); - if (ast->ctor_initializer && (ty.isValid() || (fun->identity() && ! fun->identity()->isNameId()))) { - translationUnit()->error(ast->ctor_initializer->firstToken(), - "only constructors take base initializers"); + if (ast->ctor_initializer) { + bool looksLikeCtor = false; + if (ty.isValid() || ! fun->identity()) + looksLikeCtor = false; + else if (fun->identity()->isNameId() || fun->identity()->isTemplateNameId()) + looksLikeCtor = true; + + if (! looksLikeCtor) { + translationUnit()->error(ast->ctor_initializer->firstToken(), + "only constructors take base initializers"); + } } - int previousVisibility = semantic()->switchVisibility(Symbol::Public); - int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod); + const int previousVisibility = semantic()->switchVisibility(Symbol::Public); + const int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod); semantic()->check(ast->function_body, fun->members()); From 58d89c4625e102058bcd8b73a9024898a7e76bfd Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Dec 2008 12:03:46 +0100 Subject: [PATCH 2/2] issue a warning when trying to attaching to "wrong" pids --- src/plugins/debugger/debuggermanager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 04875e12fd5..f696d728467 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -791,6 +791,11 @@ bool DebuggerManager::startNewDebugger(StartMode mode) m_processArgs = QStringList(); m_workingDir = QString(); m_attachedPID = dlg.attachPID(); + if (m_attachedPID == 0) { + QMessageBox::warning(mainWindow(), tr("Warning"), + tr("Cannot attach to PID 0")); + return false; + } } else if (startMode() == startInternal) { if (m_executable.isEmpty()) { QString startDirectory = m_executable;