diff --git a/src/libs/cplusplus/findcdbbreakpoint.cpp b/src/libs/cplusplus/findcdbbreakpoint.cpp index 8cc029393ddd88671c1f3e186bb4cc888c5486d0..2209689b601b3d62283cd8c5630191c044519f15 100644 --- a/src/libs/cplusplus/findcdbbreakpoint.cpp +++ b/src/libs/cplusplus/findcdbbreakpoint.cpp @@ -107,12 +107,6 @@ bool FindCdbBreakpoint::visit(QtMemberDeclarationAST *ast) return false; } -bool FindCdbBreakpoint::visit(CaseStatementAST *ast) -{ - foundLine(ast->lastToken() - 1); - return false; -} - bool FindCdbBreakpoint::visit(CompoundStatementAST *ast) { accept(ast->statement_list); diff --git a/src/libs/cplusplus/findcdbbreakpoint.h b/src/libs/cplusplus/findcdbbreakpoint.h index a19a96d44ebc04824df71302d54e65951854d774..61b339c87d2e3534d03b458144cb2e29b0dab094 100644 --- a/src/libs/cplusplus/findcdbbreakpoint.h +++ b/src/libs/cplusplus/findcdbbreakpoint.h @@ -73,7 +73,6 @@ protected: // Statements: bool visit(QtMemberDeclarationAST *ast); - bool visit(CaseStatementAST *ast); bool visit(CompoundStatementAST *ast); bool visit(DeclarationStatementAST *ast); bool visit(DoStatementAST *ast); diff --git a/tests/auto/cplusplus/misc/tst_misc.cpp b/tests/auto/cplusplus/misc/tst_misc.cpp index b814992b8dc4ecd8c2469b5e0a93a9f122182852..b4390d450210afd726332bffcfc2b5520e1ac32a 100644 --- a/tests/auto/cplusplus/misc/tst_misc.cpp +++ b/tests/auto/cplusplus/misc/tst_misc.cpp @@ -49,6 +49,7 @@ private slots: void diagnosticClient_warning(); void findBreakpoints(); + void findBreakpoints2(); }; void tst_Misc::diagnosticClient_error() @@ -101,8 +102,8 @@ void tst_Misc::findBreakpoints() " {\n" // line 5 " }\n" " void empty()\n" // line 7 - " {\n" - " }\n" // line 9 + " {\n" // line 8 + " }\n" " void misc() \n" " { \n" // line 11 " if ( \n" // line 12 @@ -138,11 +139,43 @@ void tst_Misc::findBreakpoints() FindCdbBreakpoint findBreakpoint(doc->translationUnit()); QCOMPARE(findBreakpoint(0), 5U); - QCOMPARE(findBreakpoint(7), 9U); + QCOMPARE(findBreakpoint(7), 8U); QCOMPARE(findBreakpoint(11), 16U); QCOMPARE(findBreakpoint(17), 23U); QCOMPARE(findBreakpoint(18), 23U); } +void tst_Misc::findBreakpoints2() +{ + const QByteArray src("\n" // line 0 + "void foo() {\n" + " int a = 2;\n" // line 2 + " switch (x) {\n" // line 3 + " case 1: {\n" // line 4 + " int y = 2;\n" // line 5 + " y++;\n" + " break;\n" // line 7 + " }\n" + " }\n" + "}\n" + ); + Document::Ptr doc = Document::create("findContstructorBreakpoint"); + QVERIFY(!doc.isNull()); + doc->setSource(src); + bool success = doc->parse(); + QVERIFY(success); + QCOMPARE(doc->diagnosticMessages().size(), 0); + FindCdbBreakpoint findBreakpoint(doc->translationUnit()); + + QCOMPARE(findBreakpoint(0), 2U); + QCOMPARE(findBreakpoint(1), 2U); + QCOMPARE(findBreakpoint(2), 2U); + QCOMPARE(findBreakpoint(3), 3U); + QCOMPARE(findBreakpoint(4), 5U); + QCOMPARE(findBreakpoint(5), 5U); + QCOMPARE(findBreakpoint(6), 6U); + QCOMPARE(findBreakpoint(7), 7U); +} + QTEST_MAIN(tst_Misc) #include "tst_misc.moc"