Adjust rules to handle interfaces correctly - 19 failing tests

This commit is contained in:
Vladimir Matveev 2014-10-15 16:53:59 -07:00
parent 62f464e8bc
commit c211f97169
2 changed files with 47 additions and 8 deletions

View File

@ -363,22 +363,60 @@ module ts.formatting {
if (lastTriviaWasNewLine && indentToken) {
// TODO: remove
var tokenRange = getNonAdjustedLineAndCharacterFromPosition(currentTokenInfo.token.pos, sourceFile);
var indentNextTokenOrTrivia = true;
// TODO: handle indentation in multiline comments
var currentIndentation = tokenRange.character;
if (indentation !== currentIndentation) {
var indentationString = getIndentationString(indentation, options);
var startLinePosition = getStartPositionOfLine(tokenRange.line, sourceFile);
recordReplace(startLinePosition, currentIndentation, indentationString);
if (currentTokenInfo.leadingTrivia) {
for (var i = 0, len = currentTokenInfo.leadingTrivia.length; i < len; ++i) {
var triviaItem = currentTokenInfo.leadingTrivia[i];
if (rangeContainsRange(originalRange, triviaItem)) {
switch (triviaItem.kind) {
case SyntaxKind.MultiLineCommentTrivia:
// TODO
indentNextTokenOrTrivia = false;
break;
case SyntaxKind.SingleLineCommentTrivia:
if (indentNextTokenOrTrivia) {
insertIndentation(triviaItem.pos, indentation, sourceFile);
indentNextTokenOrTrivia = false;
}
break;
case SyntaxKind.WhitespaceTrivia:
// TODO
break;
case SyntaxKind.NewLineTrivia:
indentNextTokenOrTrivia = true;
break;
}
}
}
}
insertIndentation(currentTokenInfo.token.pos, indentation, sourceFile);
//// TODO: remove
//var tokenRange = getNonAdjustedLineAndCharacterFromPosition(currentTokenInfo.token.pos, sourceFile);
//// TODO: handle indentation in multiline comments
//var currentIndentation = tokenRange.character;
//if (indentation !== currentIndentation) {
// var indentationString = getIndentationString(indentation, options);
// var startLinePosition = getStartPositionOfLine(tokenRange.line, sourceFile);
// recordReplace(startLinePosition, currentIndentation, indentationString);
//}
}
return fetchNextTokenInfo();
}
function insertIndentation(pos: number, indentation: number, sourceFile: SourceFile): void {
var tokenRange = getNonAdjustedLineAndCharacterFromPosition(pos, sourceFile);
if (indentation !== tokenRange.character) {
var indentationString = getIndentationString(indentation, options);
var startLinePosition = getStartPositionOfLine(tokenRange.line, sourceFile);
recordReplace(startLinePosition, tokenRange.character, indentationString);
}
}
function processTrivia(trivia: TextRangeWithKind[], parent: Node, contextNode: Node, currentIndentation: number): void {
for (var i = 0, len = trivia.length; i < len; ++i) {
var triviaItem = trivia[i];

View File

@ -602,6 +602,7 @@ module ts.formatting {
static NodeIsTypeScriptDeclWithBlockContext(node: Node): boolean {
switch (node.kind) {
case SyntaxKind.ClassDeclaration:
case SyntaxKind.InterfaceDeclaration:
case SyntaxKind.EnumDeclaration:
case SyntaxKind.TypeLiteral:
case SyntaxKind.ModuleDeclaration: