From c1ea3034d5d02b22ef192939704cc77b97657ce0 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Tue, 11 Apr 2017 15:35:06 -0700 Subject: [PATCH] wip-fixing consuming whitespace in children --- src/compiler/emitter.ts | 2 +- src/compiler/scanner.ts | 8 ++++---- src/services/formatting/smartIndenter.ts | 2 +- src/services/textChanges.ts | 2 +- src/services/utilities.ts | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 69b5188878f..669c9f5dd36 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2457,7 +2457,7 @@ namespace ts { let indentation: number; for (const line of lines) { for (let i = 0; i < line.length && (indentation === undefined || i < indentation); i++) { - if (!isWhiteSpace(line.charCodeAt(i))) { + if (!isWhiteSpaceLike(line.charCodeAt(i))) { if (indentation === undefined || i < indentation) { indentation = i; break; diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 2d7ca500893..86699702c3b 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -366,7 +366,7 @@ namespace ts { return computeLineAndCharacterOfPosition(getLineStarts(sourceFile), position); } - export function isWhiteSpace(ch: number): boolean { + export function isWhiteSpaceLike(ch: number): boolean { return isWhiteSpaceSingleLine(ch) || isLineBreak(ch); } @@ -510,7 +510,7 @@ namespace ts { break; default: - if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch))) { + if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) { pos++; continue; } @@ -691,7 +691,7 @@ namespace ts { } break scan; default: - if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpace(ch))) { + if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) { if (hasPendingCommentRange && isLineBreak(ch)) { pendingHasTrailingNewLine = true; } @@ -1750,7 +1750,7 @@ namespace ts { if (isLineBreak(char) && firstNonWhitespace === 0) { firstNonWhitespace = -1; } - else if (!isWhiteSpaceSingleLine(char)) { + else if (!isWhiteSpaceLike(char) && (char !== CharacterCodes.openBrace || char !== CharacterCodes.lessThan)) { firstNonWhitespace = pos; } pos++; diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index b5c901482a7..01feaf39081 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -54,7 +54,7 @@ namespace ts.formatting { let current = position; while (current > 0) { const char = sourceFile.text.charCodeAt(current); - if (!isWhiteSpace(char)) { + if (!isWhiteSpaceLike(char)) { break; } current--; diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index d7056cfdca2..e63c46ea8ce 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -608,7 +608,7 @@ namespace ts.textChanges { if (force || !isTrivia(s)) { this.lastNonTriviaPosition = this.writer.getTextPos(); let i = 0; - while (isWhiteSpace(s.charCodeAt(s.length - i - 1))) { + while (isWhiteSpaceLike(s.charCodeAt(s.length - i - 1))) { i++; } // trim trailing whitespaces diff --git a/src/services/utilities.ts b/src/services/utilities.ts index fe9a310ad4b..5a1acdf1cec 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1381,7 +1381,7 @@ namespace ts { } export function getFirstNonSpaceCharacterPosition(text: string, position: number) { - while (isWhiteSpace(text.charCodeAt(position))) { + while (isWhiteSpaceLike(text.charCodeAt(position))) { position += 1; } return position;