QmlJS: Fix indent of object literals.

Reviewed-by: Roberto Raggi
This commit is contained in:
Christian Kamm
2011-04-21 12:21:23 +02:00
parent e3928941ee
commit d0d0a8c07e
4 changed files with 92 additions and 5 deletions

View File

@@ -295,9 +295,24 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
if (tryInsideExpression())
break;
switch (kind) {
case Colon: enter(objectliteral_assignment); break;
case RightBracket:
case RightParenthesis: leave(); continue; // error recovery
case RightBrace: leave(); break;
} break;
// pretty much like expression, but ends with , or }
case objectliteral_assignment:
if (tryInsideExpression())
break;
switch (kind) {
case Delimiter: enter(expression_continuation); break;
case RightBracket:
case RightParenthesis: leave(); continue; // error recovery
case RightBrace: leave(); continue; // so we also leave objectliteral_open
case Comma: leave(); break;
} break;
case bracket_element_start:
switch (kind) {
case Identifier: turnInto(bracket_element_maybe_objectdefinition); break;
@@ -451,7 +466,8 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
int topState = m_currentState.top().type;
if (topState == expression
|| topState == expression_or_objectdefinition) {
|| topState == expression_or_objectdefinition
|| topState == objectliteral_assignment) {
enter(expression_maybe_continuation);
}
if (topState != multiline_comment_start
@@ -743,7 +759,8 @@ bool CodeFormatter::isExpressionEndState(int type) const
type == substatement_open ||
type == bracket_open ||
type == paren_open ||
type == case_cont;
type == case_cont ||
type == objectliteral_open;
}
const Token &CodeFormatter::tokenAt(int idx) const

View File

@@ -138,6 +138,8 @@ public: // must be public to make Q_GADGET introspection work
bracket_open, // opening [ in expression
objectliteral_open, // opening { in expression
objectliteral_assignment, // after : in object literal
bracket_element_start, // after starting bracket_open or after ',' in bracket_open
bracket_element_maybe_objectdefinition, // after an identifier in bracket_element_start