From e20bfaed68017ca2d4b65f8c5095c6fa7433ab78 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Mon, 27 Sep 2010 10:29:46 +0200 Subject: [PATCH] QmlJS indenter: Fix break/continue/throw in if statement without braces. Reviewed-by: Roberto Raggi --- src/libs/qmljs/qmljscodeformatter.cpp | 8 +++++++ src/libs/qmljs/qmljscodeformatter.h | 1 + .../qmlcodeformatter/tst_qmlcodeformatter.cpp | 21 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/libs/qmljs/qmljscodeformatter.cpp b/src/libs/qmljs/qmljscodeformatter.cpp index 0da48216b3e..3213cf31e2f 100644 --- a/src/libs/qmljs/qmljscodeformatter.cpp +++ b/src/libs/qmljs/qmljscodeformatter.cpp @@ -643,6 +643,14 @@ bool CodeFormatter::tryStatement() enter(empty_statement); leave(true); return true; + case Break: + case Continue: + leave(true); + return true; + case Throw: + enter(throw_statement); + enter(expression); + return true; case Return: enter(return_statement); enter(expression); diff --git a/src/libs/qmljs/qmljscodeformatter.h b/src/libs/qmljs/qmljscodeformatter.h index b4a0855546e..aad77a5f527 100644 --- a/src/libs/qmljs/qmljscodeformatter.h +++ b/src/libs/qmljs/qmljscodeformatter.h @@ -156,6 +156,7 @@ public: // must be public to make Q_GADGET introspection work substatement_open, // The brace that opens a substatement block. return_statement, // After 'return' + throw_statement, // After 'throw' statement_with_condition, // After the 'for', 'while', 'catch', ... token statement_with_condition_paren_open, // While inside the (...) diff --git a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp index 7c5cf697842..5e1f4c29e70 100644 --- a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp +++ b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp @@ -50,6 +50,7 @@ private Q_SLOTS: // void whitesmithsStyle(); void expressionContinuation(); void objectLiteral(); + void keywordStatement(); }; struct Line { @@ -896,6 +897,26 @@ void tst_QMLCodeFormatter::objectLiteral() checkIndent(data); } +void tst_QMLCodeFormatter::keywordStatement() +{ + QList<Line> data; + data << Line("function shuffle() {") + << Line(" if (1)") + << Line(" break") + << Line(" if (1)") + << Line(" continue") + << Line(" if (1)") + << Line(" throw 1") + << Line(" if (1)") + << Line(" return") + << Line(" if (1)") + << Line(" return 1") + << Line(" var x = 2") + << Line("}") + ; + checkIndent(data); +} + QTEST_APPLESS_MAIN(tst_QMLCodeFormatter) #include "tst_qmlcodeformatter.moc" -- GitLab