Skip to content

Commit 172db13

Browse files
committed
Parse more types in JSDoc function() syntax
Also some cleanup from PR comments
1 parent bdc3f1f commit 172db13

10 files changed

Lines changed: 30 additions & 86 deletions

File tree

src/compiler/checker.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6866,6 +6866,10 @@ namespace ts {
68666866
}
68676867
}
68686868

6869+
function isJSDocTypeReference(node: TypeReferenceType): node is TypeReferenceNode {
6870+
return node.flags & NodeFlags.JSDoc && node.kind === SyntaxKind.TypeReference;
6871+
}
6872+
68696873
function getPrimitiveTypeFromJSDocTypeReference(node: TypeReferenceNode): Type {
68706874
if (isIdentifier(node.typeName)) {
68716875
switch (node.typeName.text) {

src/compiler/parser.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2199,7 +2199,11 @@ namespace ts {
21992199
}
22002200

22012201
function isStartOfParameter(): boolean {
2202-
return token() === SyntaxKind.DotDotDotToken || isIdentifierOrPattern() || isModifierKind(token()) || token() === SyntaxKind.AtToken || token() === SyntaxKind.ThisKeyword || token() === SyntaxKind.NewKeyword;
2202+
return token() === SyntaxKind.DotDotDotToken ||
2203+
isIdentifierOrPattern() ||
2204+
isModifierKind(token()) ||
2205+
token() === SyntaxKind.AtToken || token() === SyntaxKind.ThisKeyword || token() === SyntaxKind.NewKeyword ||
2206+
token() === SyntaxKind.StringLiteral || token() === SyntaxKind.NumericLiteral;
22032207
}
22042208

22052209
function parseParameter(): ParameterDeclaration {

src/compiler/utilities.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3302,10 +3302,6 @@ namespace ts {
33023302
return false;
33033303
}
33043304

3305-
export function isJSDocTypeReference(node: TypeReferenceType): node is TypeReferenceNode {
3306-
return node.flags & NodeFlags.JSDoc && node.kind === SyntaxKind.TypeReference;
3307-
}
3308-
33093305
/**
33103306
* Formats an enum value as a string for debugging and debug assertions.
33113307
*/

tests/baselines/reference/jsdocFunctionType.symbols

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,9 @@ z.length;
6161
>z : Symbol(z, Decl(functions.js, 26, 3))
6262
>length : Symbol(length, Decl(functions.js, 12, 27))
6363

64+
/** @type {function ("a" | "b"): 1 | 2} */
65+
var f = function (s) { return s === "a" ? 1 : 2; }
66+
>f : Symbol(f, Decl(functions.js, 30, 3))
67+
>s : Symbol(s, Decl(functions.js, 30, 18))
68+
>s : Symbol(s, Decl(functions.js, 30, 18))
69+

tests/baselines/reference/jsdocFunctionType.types

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,15 @@ z.length;
6868
>z : { length: number; }
6969
>length : number
7070

71+
/** @type {function ("a" | "b"): 1 | 2} */
72+
var f = function (s) { return s === "a" ? 1 : 2; }
73+
>f : (arg0: "a" | "b") => 1 | 2
74+
>function (s) { return s === "a" ? 1 : 2; } : (s: "a" | "b") => 1 | 2
75+
>s : "a" | "b"
76+
>s === "a" ? 1 : 2 : 1 | 2
77+
>s === "a" : boolean
78+
>s : "a" | "b"
79+
>"a" : "a"
80+
>1 : 1
81+
>2 : 2
82+

tests/baselines/reference/jsdocTypesInTypeAnnotations.errors.txt

Lines changed: 0 additions & 29 deletions
This file was deleted.

tests/baselines/reference/jsweird.symbols

Lines changed: 0 additions & 14 deletions
This file was deleted.

tests/baselines/reference/jsweird.types

Lines changed: 0 additions & 16 deletions
This file was deleted.

tests/cases/conformance/jsdoc/jsdocFunctionType.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,6 @@ class C {
3333
var y = id2(C);
3434
var z = new y(12);
3535
z.length;
36+
37+
/** @type {function ("a" | "b"): 1 | 2} */
38+
var f = function (s) { return s === "a" ? 1 : 2; }

tests/cases/conformance/jsdoc/jsdocTypesInTypeAnnotations.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)