diff --git a/src/libs/qmljs/qmljscodeformatter.cpp b/src/libs/qmljs/qmljscodeformatter.cpp index 32ab5585da234bb806909df52ddb84f7ab2e7c54..eb7e61642d2a0a803e3f1cb0172c20f1572b1cbe 100644 --- a/src/libs/qmljs/qmljscodeformatter.cpp +++ b/src/libs/qmljs/qmljscodeformatter.cpp @@ -166,21 +166,6 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) default: enter(expression); continue; } break; - // property inits don't take statements - case property_initializer: - switch (kind) { - case Semicolon: leave(true); break; - case LeftBrace: enter(objectliteral_open); break; - case On: - case As: - case List: - case Import: - case Signal: - case Property: - case Identifier: enter(expression_or_objectdefinition); break; - default: enter(expression); continue; - } break; - case objectdefinition_open: switch (kind) { case RightBrace: leave(true); break; @@ -222,7 +207,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case property_maybe_initializer: switch (kind) { - case Colon: enter(property_initializer); break; + case Colon: turnInto(binding_assignment); break; default: leave(true); continue; } break; diff --git a/src/libs/qmljs/qmljscodeformatter.h b/src/libs/qmljs/qmljscodeformatter.h index 5bb1fdb422cc795fcf8664fe37806ff2938b1472..bd2e9228d52ff461ee5e900dcb2099fb880167b4 100644 --- a/src/libs/qmljs/qmljscodeformatter.h +++ b/src/libs/qmljs/qmljscodeformatter.h @@ -127,7 +127,6 @@ public: // must be public to make Q_GADGET introspection work binding_or_objectdefinition, // after an identifier binding_assignment, // after : in a binding - property_initializer, // after : in a property objectdefinition_open, // after { expression, diff --git a/src/plugins/qmljstools/qmljsqtstylecodeformatter.cpp b/src/plugins/qmljstools/qmljsqtstylecodeformatter.cpp index 17d7f7fdca85bf4dec3a3c3d8614e735d52f3651..a85a25685e3f39b14c9b976791c50eeaa5d32d38 100644 --- a/src/plugins/qmljstools/qmljsqtstylecodeformatter.cpp +++ b/src/plugins/qmljstools/qmljsqtstylecodeformatter.cpp @@ -101,7 +101,7 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd switch (newState) { case objectdefinition_open: { // special case for things like "gradient: Gradient {" - if (parentState.type == binding_assignment || parentState.type == property_initializer) + if (parentState.type == binding_assignment) *savedIndentDepth = state(1).savedIndentDepth; if (firstToken) @@ -117,7 +117,6 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd break; case binding_assignment: - case property_initializer: case objectliteral_assignment: if (lastToken) *indentDepth = *savedIndentDepth + 4; @@ -134,7 +133,6 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd // ternary already adjusts indents nicely if (parentState.type != expression_or_objectdefinition && parentState.type != binding_assignment - && parentState.type != property_initializer && parentState.type != ternary_op) { *indentDepth += 2 * m_indentSize; } @@ -155,8 +153,7 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd break; case bracket_open: - if (parentState.type == expression && (state(1).type == binding_assignment - || state(1).type == property_initializer)) { + if (parentState.type == expression && state(1).type == binding_assignment) { *savedIndentDepth = state(2).savedIndentDepth; *indentDepth = *savedIndentDepth + m_indentSize; } else if (!lastToken) { @@ -201,16 +198,15 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd } // fallthrough case substatement_open: - // special case for foo: { - if (parentState.type == binding_assignment && state(1).type == binding_or_objectdefinition) + // special case for "foo: {" and "property int foo: {" + if (parentState.type == binding_assignment) *savedIndentDepth = state(1).savedIndentDepth; *indentDepth = *savedIndentDepth + m_indentSize; break; case objectliteral_open: if (parentState.type == expression - || parentState.type == objectliteral_assignment - || parentState.type == property_initializer) { + || parentState.type == objectliteral_assignment) { // undo the continuation indent of the expression *indentDepth = parentState.savedIndentDepth; *savedIndentDepth = *indentDepth; @@ -293,7 +289,6 @@ void QtStyleCodeFormatter::adjustIndent(const QList<Token> &tokens, int lexerSta case LeftBrace: if (topState.type == substatement || topState.type == binding_assignment - || topState.type == property_initializer || topState.type == case_cont) { *indentDepth = topState.savedIndentDepth; } diff --git a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp index f45f35ef68db545cc844cf0f44f7ffb601ce599d..b7ef68d88efa84c30ff86d9cb83ede38b7f3de2a 100644 --- a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp +++ b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp @@ -87,7 +87,7 @@ private Q_SLOTS: void objectLiteral2(); void objectLiteral3(); void objectLiteral4(); - void objectLiteral5(); + void propertyWithStatement(); void keywordStatement(); void namespacedObjects(); }; @@ -1031,24 +1031,28 @@ void tst_QMLCodeFormatter::objectLiteral4() checkIndent(data); } -void tst_QMLCodeFormatter::objectLiteral5() +void tst_QMLCodeFormatter::propertyWithStatement() { QList<Line> data; data << Line("Rectangle {") - << Line(" property int x: { a: 12, b: 13 }") + << Line(" property int x: { if (a) break }") << Line(" property int y: {") - << Line(" a: 1 +") - << Line(" 2 + 3") - << Line(" + 4") + << Line(" if (a)") + << Line(" break") + << Line(" switch (a) {") + << Line(" case 1:") + << Line(" case 2:") + << Line(" continue") + << Line(" }") << Line(" }") - << Line(" property int y: {") - << Line(" a: 1 +") - << Line(" 2 + 3") - << Line(" + 4,") - << Line(" b: {") - << Line(" adef: 1 +") - << Line(" 2 + 3") - << Line(" + 4,") + << Line(" property int y:") + << Line(" {") + << Line(" if (a)") + << Line(" break") + << Line(" switch (a) {") + << Line(" case 1:") + << Line(" case 2:") + << Line(" continue") << Line(" }") << Line(" }") << Line("}")