forked from qt-creator/qt-creator
QmlJS indenter: Fix object bindings with namespaces.
Task-number: QTCREATORBUG-3371 Reviewed-by: Roberto Raggi
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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 += \
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user