mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 05:41:22 -06:00
fix a few issues in rules
This commit is contained in:
parent
27cb5b0c18
commit
c0466b636f
@ -231,7 +231,11 @@ module ts {
|
||||
FirstToken = EndOfFileToken,
|
||||
LastToken = StringKeyword,
|
||||
FirstTriviaToken = SingleLineCommentTrivia,
|
||||
LastTriviaToken = WhitespaceTrivia
|
||||
LastTriviaToken = WhitespaceTrivia,
|
||||
FirstOperator = SemicolonToken,
|
||||
LastOperator = CaretEqualsToken,
|
||||
FirstBinaryOperator = LessThanToken,
|
||||
LastBinaryOperator = CaretEqualsToken
|
||||
}
|
||||
|
||||
export enum NodeFlags {
|
||||
|
||||
@ -189,7 +189,7 @@ module ts.formatting {
|
||||
var previousParent: Node;
|
||||
var previousRangeStartLine: number;
|
||||
|
||||
var lastTriviaWasNewLine = false;
|
||||
var lastTriviaWasNewLine = true;
|
||||
var edits: TextChange[] = [];
|
||||
|
||||
// advance the scaner
|
||||
@ -208,7 +208,7 @@ module ts.formatting {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!rangeContainsRange(node, currentTokenInfo)) {
|
||||
if (!rangeContainsRange(node, currentTokenInfo.token)) {
|
||||
// node and its descendents don't contain current token from the scanner - skip it
|
||||
return;
|
||||
}
|
||||
@ -351,14 +351,31 @@ module ts.formatting {
|
||||
processTrivia(currentTokenInfo.leadingTrivia, parent, contextNode, indentation);
|
||||
}
|
||||
|
||||
|
||||
var indentToken: boolean;
|
||||
if (rangeContainsRange(originalRange, currentTokenInfo.token)) {
|
||||
processRange(currentTokenInfo.token, parent, contextNode, indentation);
|
||||
indentToken = processRange(currentTokenInfo.token, parent, contextNode, indentation);
|
||||
}
|
||||
|
||||
if (currentTokenInfo.trailingTrivia) {
|
||||
processTrivia(currentTokenInfo.trailingTrivia, parent, contextNode, indentation);
|
||||
}
|
||||
|
||||
if (lastTriviaWasNewLine && indentToken) {
|
||||
|
||||
// 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();
|
||||
}
|
||||
|
||||
@ -371,10 +388,11 @@ module ts.formatting {
|
||||
}
|
||||
}
|
||||
|
||||
function processRange(range: TextRangeWithKind, parent: Node, contextNode: Node, indentation: number) {
|
||||
function processRange(range: TextRangeWithKind, parent: Node, contextNode: Node, indentation: number): boolean {
|
||||
var rangeStart = getNonAdjustedLineAndCharacterFromPosition(range.pos, sourceFile);
|
||||
if (rangeContainsRange(originalRange, range)) {
|
||||
var indentToken = true;
|
||||
var indentToken = true;
|
||||
|
||||
if (rangeContainsRange(originalRange, range)) {
|
||||
if (!previousRange) {
|
||||
var originalStart = getNonAdjustedLineAndCharacterFromPosition(originalRange.pos, sourceFile);
|
||||
// TODO: implement
|
||||
@ -389,23 +407,12 @@ module ts.formatting {
|
||||
processPair(range, rangeStart.line, parent, previousRange, previousRangeStartLine, previousParent, contextNode)
|
||||
indentToken = rangeStart.line !== previousRangeStartLine;
|
||||
}
|
||||
|
||||
if (lastTriviaWasNewLine && indentToken) {
|
||||
// TODO: handle indentation in multiline comments
|
||||
if (!isTrivia(range.kind)) {
|
||||
var currentIndentation = rangeStart.character;
|
||||
if (indentation !== currentIndentation) {
|
||||
var indentationString = getIndentationString(indentation, options);
|
||||
var startLinePosition = getStartPositionOfLine(rangeStart.line, sourceFile);
|
||||
recordReplace(startLinePosition, currentIndentation, indentationString);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
previousRange = range;
|
||||
previousParent = parent;
|
||||
previousRangeStartLine = rangeStart.line;
|
||||
|
||||
return indentToken;
|
||||
}
|
||||
|
||||
function processPair(currentItem: TextRangeWithKind,
|
||||
|
||||
@ -448,6 +448,7 @@ module ts.formatting {
|
||||
|
||||
switch (context.contextNode.kind) {
|
||||
case SyntaxKind.BinaryExpression:
|
||||
case SyntaxKind.ConditionalExpression:
|
||||
return true;
|
||||
//// binary expressions
|
||||
//case SyntaxKind.AssignmentExpression:
|
||||
@ -492,8 +493,10 @@ module ts.formatting {
|
||||
case SyntaxKind.ImportDeclaration:
|
||||
// equal in var a = 0;
|
||||
case SyntaxKind.VariableDeclaration:
|
||||
// TODO:
|
||||
//case SyntaxKind.EqualsValueClause:
|
||||
// equal in p = 0;
|
||||
case SyntaxKind.Parameter:
|
||||
case SyntaxKind.EnumMember:
|
||||
case SyntaxKind.Property:
|
||||
return context.currentTokenSpan.kind === SyntaxKind.EqualsToken || context.nextTokenSpan.kind === SyntaxKind.EqualsToken;
|
||||
// "in" keyword in for (var x in []) { }
|
||||
case SyntaxKind.ForInStatement:
|
||||
@ -704,8 +707,7 @@ module ts.formatting {
|
||||
}
|
||||
|
||||
static IsVoidOpContext(context: FormattingContext): boolean {
|
||||
return;
|
||||
//return context.currentTokenSpan.token.kind === SyntaxKind.VoidKeyword && context.currentTokenParent.kind() === SyntaxKind.VoidExpression;
|
||||
return context.currentTokenSpan.kind === SyntaxKind.VoidKeyword && context.currentTokenParent.kind === SyntaxKind.PrefixOperator;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -135,8 +135,8 @@ module ts.formatting {
|
||||
static Any: TokenRange = TokenRange.AllTokens();
|
||||
static AnyIncludingMultilineComments = TokenRange.FromTokens(TokenRange.Any.GetTokens().concat([SyntaxKind.MultiLineCommentTrivia]));
|
||||
static Keywords = TokenRange.FromRange(SyntaxKind.FirstKeyword, SyntaxKind.LastKeyword);
|
||||
static Operators = TokenRange.FromRange(SyntaxKind.SemicolonToken, SyntaxKind.SlashEqualsToken);
|
||||
static BinaryOperators = TokenRange.FromRange(SyntaxKind.LessThanToken, SyntaxKind.SlashEqualsToken);
|
||||
static Operators = TokenRange.FromRange(SyntaxKind.FirstOperator, SyntaxKind.LastOperator);
|
||||
static BinaryOperators = TokenRange.FromRange(SyntaxKind.FirstBinaryOperator, SyntaxKind.LastBinaryOperator);
|
||||
static BinaryKeywordOperators = TokenRange.FromTokens([SyntaxKind.InKeyword, SyntaxKind.InstanceOfKeyword]);
|
||||
static ReservedKeywords = TokenRange.FromRange(SyntaxKind.FirstFutureReservedWord, SyntaxKind.LastFutureReservedWord);
|
||||
static UnaryPrefixOperators = TokenRange.FromTokens([SyntaxKind.PlusPlusToken, SyntaxKind.MinusMinusToken, SyntaxKind.TildeToken, SyntaxKind.ExclamationToken]);
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
//// export enum NodeType {/*2*/
|
||||
//// Error,/*3*/
|
||||
//// Comment,/*4*/
|
||||
//// } /*5*/
|
||||
//// } /*5*/
|
||||
//// export enum foob/*6*/
|
||||
//// {
|
||||
//// Blah=1, Bleah=2/*7*/
|
||||
@ -25,7 +25,7 @@ verify.currentLineContentIs(" }");
|
||||
goTo.marker("6");
|
||||
verify.currentLineContentIs(" export enum foob {");
|
||||
goTo.marker("7");
|
||||
verify.currentLineContentIs(" Blah= 1, Bleah= 2");
|
||||
verify.currentLineContentIs(" Blah = 1, Bleah = 2");
|
||||
goTo.marker("8");
|
||||
verify.currentLineContentIs(" }");
|
||||
goTo.marker("9");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user