CDB: fix breakpoint location in catch clauses.

Task-number: QTCREATORBUG-7336

Change-Id: I926e82499325e4fe38e25cc7a6158050f7fc0e82
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Erik Verbruggen
2013-06-27 12:17:10 +02:00
committed by Erik Verbruggen
parent cdbbf37743
commit a8a49c9851
2 changed files with 30 additions and 1 deletions

View File

@@ -46,6 +46,7 @@ private slots:
void findBreakpoints();
void findBreakpoints2();
void findBreakpoints3();
};
void tst_Misc::diagnosticClient_error()
@@ -155,7 +156,7 @@ void tst_Misc::findBreakpoints2()
" }\n"
"}\n"
);
Document::Ptr doc = Document::create("findContstructorBreakpoint");
Document::Ptr doc = Document::create("findSwitchBreakpoint");
QVERIFY(!doc.isNull());
doc->setUtf8Source(src);
bool success = doc->parse();
@@ -173,5 +174,32 @@ void tst_Misc::findBreakpoints2()
QCOMPARE(findBreakpoint(7), 7U);
}
void tst_Misc::findBreakpoints3()
{
const QByteArray src("\n" // line 0
"int foo() {\n"
" try {\n" // line 2
" bar();\n" // line 3
" } catch (Mooze &m) {\n" // line 4
" wooze();\n" // line 5
" }\n"
" return 0;\n" // line 7
"}\n"
);
Document::Ptr doc = Document::create("findCatchBreakpoint");
QVERIFY(!doc.isNull());
doc->setUtf8Source(src);
bool success = doc->parse();
QVERIFY(success);
QCOMPARE(doc->diagnosticMessages().size(), 0);
FindCdbBreakpoint findBreakpoint(doc->translationUnit());
QCOMPARE(findBreakpoint(2), 3U);
QCOMPARE(findBreakpoint(3), 3U);
QCOMPARE(findBreakpoint(4), 5U);
QCOMPARE(findBreakpoint(5), 5U);
QCOMPARE(findBreakpoint(7), 7U);
}
QTEST_MAIN(tst_Misc)
#include "tst_misc.moc"