Suppress brace completion of Quotes in Comments

This commit is contained in:
Arthur Ozga
2017-06-09 21:10:01 -07:00
parent 09321b3834
commit 798db1e884
3 changed files with 32 additions and 1 deletions

View File

@@ -1117,6 +1117,25 @@ namespace ts.formatting {
}
}
export function getRangeOfEnclosingComment(sourceFile: SourceFile, position: number, onlyMultiLine: boolean): CommentRange | undefined {
const precedingToken = findPrecedingToken(position, sourceFile);
const trailingRangesOfPreviousToken = precedingToken && getTrailingCommentRanges(sourceFile.text, precedingToken.end);
const leadingCommentRangesOfNextToken = getLeadingCommentRangesOfNode(getTokenAtPosition(sourceFile, position, /*includeJsDocComment*/ false), sourceFile);
const commentRanges = trailingRangesOfPreviousToken && leadingCommentRangesOfNextToken ?
trailingRangesOfPreviousToken.concat(leadingCommentRangesOfNextToken) :
trailingRangesOfPreviousToken || leadingCommentRangesOfNextToken;
if (commentRanges) {
for (const range of commentRanges) {
// We need to extend the range when in an unclosed multi-line comment.
if (range.pos < position && position < range.end ||
position === range.end && (range.kind === SyntaxKind.SingleLineCommentTrivia || position === sourceFile.getFullWidth())) {
return onlyMultiLine && range.kind !== SyntaxKind.MultiLineCommentTrivia ? undefined : range;
}
}
}
return undefined;
}
function getOpenTokenForList(node: Node, list: Node[]) {
switch (node.kind) {
case SyntaxKind.Constructor:

View File

@@ -1822,6 +1822,13 @@ namespace ts {
return false;
}
switch (openingBrace) {
case CharacterCodes.singleQuote:
case CharacterCodes.doubleQuote:
case CharacterCodes.backtick:
return !ts.formatting.getRangeOfEnclosingComment(sourceFile, position, /*onlyMultiLine*/ false);
}
return true;
}

View File

@@ -15,9 +15,14 @@
goTo.marker('1');
verify.isValidBraceCompletionAtPosition('(');
verify.not.isValidBraceCompletionAtPosition('"');
verify.not.isValidBraceCompletionAtPosition(`'`);
verify.not.isValidBraceCompletionAtPosition('`');
goTo.marker('2');
verify.isValidBraceCompletionAtPosition('(');
verify.not.isValidBraceCompletionAtPosition('"');
goTo.marker('3');
verify.isValidBraceCompletionAtPosition('(');
verify.isValidBraceCompletionAtPosition('(');
verify.not.isValidBraceCompletionAtPosition('"');