C++ indenter: Fix labels.

Reviewed-by: Roberto Raggi
This commit is contained in:
Christian Kamm
2010-12-01 10:19:53 +01:00
parent bb654838cf
commit c5c4bacda9
3 changed files with 37 additions and 0 deletions

View File

@@ -382,6 +382,12 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
default: leave(); continue;
} break;
case label:
switch (kind) {
case T_COLON: leave(); break;
default: leave(); continue; // shouldn't happen
} break;
case multiline_comment_start:
case multiline_comment_cont:
if (kind != T_COMMENT && kind != T_DOXY_COMMENT) {
@@ -710,6 +716,10 @@ bool CodeFormatter::tryDeclaration()
enter(qt_like_macro);
return true;
}
if (m_tokens.size() > 1 && m_tokens.at(1).kind() == T_COLON) {
enter(label);
return true;
}
}
// fallthrough
case T_CHAR:
@@ -1428,6 +1438,16 @@ void QtStyleCodeFormatter::adjustIndent(const QList<CPlusPlus::Token> &tokens, i
*indentDepth = 0;
}
break;
case T_IDENTIFIER:
if (topState.type == substatement
|| topState.type == substatement_open
|| topState.type == case_cont
|| topState.type == block_open
|| topState.type == defun_open) {
if (tokens.size() > 1 && tokens.at(1).kind() == T_COLON) // label?
*indentDepth = 0;
}
break;
}
}