From ff94f2da30da1c9567a8f01ee2a11f0e7352ef4f Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 17 Nov 2017 15:26:41 -0800 Subject: [PATCH] Change from 'bracelss' to 'mayOmitBraces' --- src/compiler/core.ts | 8 +++----- src/compiler/parser.ts | 14 ++++++-------- src/harness/unittests/jsDocParsing.ts | 3 ++- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index d9c33f9aa3..a8dc8ee24d 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1160,7 +1160,9 @@ namespace ts { return result; } - export function toArray(value: T | ReadonlyArray): ReadonlyArray { + export function toArray(value: T | ReadonlyArray): ReadonlyArray; + export function toArray(value: T | T[]): T[]; + export function toArray(value: T | T[]): T[] { return isArray(value) ? value : [value]; } @@ -1366,10 +1368,6 @@ namespace ts { return Array.isArray ? Array.isArray(value) : value instanceof Array; } - export function toArray(value: T | T[]): T[] { - return isArray(value) ? value : [value]; - } - /** * Tests whether a value is string */ diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 01ae8d9ad5..8802db6ae0 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6132,14 +6132,12 @@ namespace ts { } // Parses out a JSDoc type expression. - export function parseJSDocTypeExpression(braceless?: boolean): JSDocTypeExpression { + export function parseJSDocTypeExpression(mayOmitBraces?: boolean): JSDocTypeExpression { const result = createNode(SyntaxKind.JSDocTypeExpression, scanner.getTokenPos()); - if (!braceless) { - parseExpected(SyntaxKind.OpenBraceToken); - } + const sawBrace = (mayOmitBraces ? parseOptional : parseExpected)(SyntaxKind.OpenBraceToken); result.type = doInsideOfContext(NodeFlags.JSDoc, parseType); - if (!braceless) { + if (!mayOmitBraces || sawBrace) { parseExpected(SyntaxKind.CloseBraceToken); } @@ -6486,9 +6484,9 @@ namespace ts { tagsEnd = tag.end; } - function tryParseTypeExpression(bracelessFallback?: boolean): JSDocTypeExpression | undefined { + function tryParseTypeExpression(): JSDocTypeExpression | undefined { skipWhitespace(); - return token() === SyntaxKind.OpenBraceToken ? parseJSDocTypeExpression() : bracelessFallback && parseJSDocTypeExpression(/*braceless*/ true); + return token() === SyntaxKind.OpenBraceToken ? parseJSDocTypeExpression() : undefined; } function parseBracketNameInPropertyAndParamTag(): { name: EntityName, isBracketed: boolean } { @@ -6597,7 +6595,7 @@ namespace ts { const result = createNode(SyntaxKind.JSDocTypeTag, atToken.pos); result.atToken = atToken; result.tagName = tagName; - result.typeExpression = tryParseTypeExpression(/*bracketlessFallback*/ true); + result.typeExpression = parseJSDocTypeExpression(/*mayOmitBraces*/ true); return finishNode(result); } diff --git a/src/harness/unittests/jsDocParsing.ts b/src/harness/unittests/jsDocParsing.ts index b7215f5ea3..ad2f354bb4 100644 --- a/src/harness/unittests/jsDocParsing.ts +++ b/src/harness/unittests/jsDocParsing.ts @@ -94,7 +94,8 @@ namespace ts { Debug.fail("Comment failed to parse entirely"); } if (comment.diagnostics.length > 0) { - Debug.fail("Comment has at least one diagnostic: " + comment.diagnostics[0].messageText); + const diag = comment.diagnostics[0]; + Debug.fail("Comment has at least one diagnostic: " + diag.messageText + " at " + diag.start); } Harness.Baseline.runBaseline("JSDocParsing/DocComments.parsesCorrectly." + name + ".json",