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("}")