diff --git a/src/libs/qmljs/qmljscodeformatter.cpp b/src/libs/qmljs/qmljscodeformatter.cpp index 023c7286e977581aaa99cc123010db522bffe858..f71bab238724ff90b4adb1cc2c5dc20cee4dfa04 100644 --- a/src/libs/qmljs/qmljscodeformatter.cpp +++ b/src/libs/qmljs/qmljscodeformatter.cpp @@ -246,8 +246,10 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case expression_or_objectdefinition: switch (kind) { + case Dot: + case Identifier: break; // need to become an objectdefinition_open in cases like "width: Qt.Foo {" case LeftBrace: turnInto(objectdefinition_open); break; - default: enter(expression); continue; // really? first token already gone! + default: enter(expression); continue; // really? identifier and more tokens might already be gone } break; case expression: diff --git a/tests/auto/qml/qmleditor/qmlcodeformatter/qmlcodeformatter.pro b/tests/auto/qml/qmleditor/qmlcodeformatter/qmlcodeformatter.pro index 54797eb7eaecab0efce0c1772435616bd40946fd..74297ab811938f09e083fd19a6edcb536b88071e 100644 --- a/tests/auto/qml/qmleditor/qmlcodeformatter/qmlcodeformatter.pro +++ b/tests/auto/qml/qmleditor/qmlcodeformatter/qmlcodeformatter.pro @@ -8,6 +8,7 @@ SRCDIR = ../../../../../src #include($$SRCDIR/../qtcreator.pri) include($$SRCDIR/libs/qmljs/qmljs-lib.pri) include($$SRCDIR/libs/utils/utils-lib.pri) +include($$SRCDIR/libs/languageutils/languageutils-lib.pri) #LIBS += -L$$IDE_LIBRARY_PATH SOURCES += \ diff --git a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp index a8b0c422400003f275f0aa26a7dab25ade42a970..c83e7c703fd86b813ccb15767969c7f201c42859 100644 --- a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp +++ b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp @@ -53,6 +53,7 @@ private Q_SLOTS: void expressionContinuation(); void objectLiteral(); void keywordStatement(); + void namespacedObjects(); }; struct Line { @@ -961,6 +962,19 @@ void tst_QMLCodeFormatter::keywordStatement() checkIndent(data); } +void tst_QMLCodeFormatter::namespacedObjects() +{ + QList<Line> data; + data << Line("Item {") + << Line(" width: Q.Foo {") + << Line(" Q.Bar {") + << Line(" x: 12") + << Line(" }") + << Line(" }") + ; + checkIndent(data); +} + QTEST_APPLESS_MAIN(tst_QMLCodeFormatter) #include "tst_qmlcodeformatter.moc"