Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3c32478

Browse filesBrowse files
committed
Support other (new) literal types in jsdoc
1 parent 4c35296 commit 3c32478
Copy full SHA for 3c32478

9 files changed

+63-47Lines changed: 63 additions & 47 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/compiler/checker.ts‎

Copy file name to clipboardExpand all lines: src/compiler/checker.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5529,8 +5529,8 @@ namespace ts {
55295529
return getTypeFromThisTypeNode(node);
55305530
case SyntaxKind.LiteralType:
55315531
return getTypeFromLiteralTypeNode(<LiteralTypeNode>node);
5532-
case SyntaxKind.JSDocStringLiteralType:
5533-
return getTypeFromStringLiteralTypeNode((<JSDocStringLiteralType>node).stringLiteral);
5532+
case SyntaxKind.JSDocLiteralType:
5533+
return getTypeFromLiteralTypeNode((<JSDocLiteralType>node).literal);
55345534
case SyntaxKind.TypeReference:
55355535
case SyntaxKind.JSDocTypeReference:
55365536
return getTypeFromTypeReference(<TypeReferenceNode>node);
Collapse file

‎src/compiler/parser.ts‎

Copy file name to clipboardExpand all lines: src/compiler/parser.ts
+9-4Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,8 @@ namespace ts {
417417
case SyntaxKind.JSDocPropertyTag:
418418
return visitNode(cbNode, (<JSDocPropertyTag>node).typeExpression) ||
419419
visitNode(cbNode, (<JSDocPropertyTag>node).name);
420+
case SyntaxKind.JSDocLiteralType:
421+
return visitNode(cbNode, (<JSDocLiteralType>node).literal);
420422
}
421423
}
422424

@@ -5890,7 +5892,10 @@ namespace ts {
58905892
case SyntaxKind.VoidKeyword:
58915893
return parseTokenNode<JSDocType>();
58925894
case SyntaxKind.StringLiteral:
5893-
return parseJSDocStringLiteralType();
5895+
case SyntaxKind.NumericLiteral:
5896+
case SyntaxKind.TrueKeyword:
5897+
case SyntaxKind.FalseKeyword:
5898+
return parseJSDocLiteralType();
58945899
}
58955900

58965901
return parseJSDocTypeReference();
@@ -6071,9 +6076,9 @@ namespace ts {
60716076
return finishNode(result);
60726077
}
60736078

6074-
function parseJSDocStringLiteralType(): JSDocStringLiteralType {
6075-
const result = <JSDocStringLiteralType>createNode(SyntaxKind.JSDocStringLiteralType);
6076-
result.stringLiteral = parseStringLiteralTypeNode();
6079+
function parseJSDocLiteralType(): JSDocLiteralType {
6080+
const result = <JSDocLiteralType>createNode(SyntaxKind.JSDocLiteralType);
6081+
result.literal = parseLiteralTypeNode();
60776082
return finishNode(result);
60786083
}
60796084

Collapse file

‎src/compiler/types.ts‎

Copy file name to clipboardExpand all lines: src/compiler/types.ts
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ namespace ts {
346346
JSDocTypedefTag,
347347
JSDocPropertyTag,
348348
JSDocTypeLiteral,
349-
JSDocStringLiteralType,
349+
JSDocLiteralType,
350350

351351
// Synthesized list
352352
SyntaxList,
@@ -377,9 +377,9 @@ namespace ts {
377377
LastBinaryOperator = CaretEqualsToken,
378378
FirstNode = QualifiedName,
379379
FirstJSDocNode = JSDocTypeExpression,
380-
LastJSDocNode = JSDocStringLiteralType,
380+
LastJSDocNode = JSDocLiteralType,
381381
FirstJSDocTagNode = JSDocComment,
382-
LastJSDocTagNode = JSDocStringLiteralType
382+
LastJSDocTagNode = JSDocLiteralType
383383
}
384384

385385
export const enum NodeFlags {
@@ -1493,8 +1493,8 @@ namespace ts {
14931493
type: JSDocType;
14941494
}
14951495

1496-
export interface JSDocStringLiteralType extends JSDocType {
1497-
stringLiteral: StringLiteralTypeNode;
1496+
export interface JSDocLiteralType extends JSDocType {
1497+
literal: LiteralTypeNode;
14981498
}
14991499

15001500
export type JSDocTypeReferencingNode = JSDocThisType | JSDocConstructorType | JSDocVariadicType | JSDocOptionalType | JSDocNullableType | JSDocNonNullableType;
Collapse file

‎…aselines/reference/jsdocStringLiteral.js‎ ‎tests/baselines/reference/jsdocLiteral.js‎tests/baselines/reference/jsdocStringLiteral.js renamed to tests/baselines/reference/jsdocLiteral.js tests/baselines/reference/jsdocStringLiteral.js renamed to tests/baselines/reference/jsdocLiteral.js

Copy file name to clipboardExpand all lines: tests/baselines/reference/jsdocLiteral.js
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
* @param {"literal"} p2
55
* @param {'literal' | 'other'} p3
66
* @param {'literal' | number} p4
7+
* @param {12 | true | 'str'} p5
78
*/
8-
function f(p1, p2, p3, p4) {
9-
return p1 + p2 + p3 + p4 + '.';
9+
function f(p1, p2, p3, p4, p5) {
10+
return p1 + p2 + p3 + p4 + p5 + '.';
1011
}
1112

1213

@@ -16,7 +17,8 @@ function f(p1, p2, p3, p4) {
1617
* @param {"literal"} p2
1718
* @param {'literal' | 'other'} p3
1819
* @param {'literal' | number} p4
20+
* @param {12 | true | 'str'} p5
1921
*/
20-
function f(p1, p2, p3, p4) {
21-
return p1 + p2 + p3 + p4 + '.';
22+
function f(p1, p2, p3, p4, p5) {
23+
return p1 + p2 + p3 + p4 + p5 + '.';
2224
}
Collapse file
+24Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
=== tests/cases/conformance/jsdoc/in.js ===
2+
/**
3+
* @param {'literal'} p1
4+
* @param {"literal"} p2
5+
* @param {'literal' | 'other'} p3
6+
* @param {'literal' | number} p4
7+
* @param {12 | true | 'str'} p5
8+
*/
9+
function f(p1, p2, p3, p4, p5) {
10+
>f : Symbol(f, Decl(in.js, 0, 0))
11+
>p1 : Symbol(p1, Decl(in.js, 7, 11))
12+
>p2 : Symbol(p2, Decl(in.js, 7, 14))
13+
>p3 : Symbol(p3, Decl(in.js, 7, 18))
14+
>p4 : Symbol(p4, Decl(in.js, 7, 22))
15+
>p5 : Symbol(p5, Decl(in.js, 7, 26))
16+
17+
return p1 + p2 + p3 + p4 + p5 + '.';
18+
>p1 : Symbol(p1, Decl(in.js, 7, 11))
19+
>p2 : Symbol(p2, Decl(in.js, 7, 14))
20+
>p3 : Symbol(p3, Decl(in.js, 7, 18))
21+
>p4 : Symbol(p4, Decl(in.js, 7, 22))
22+
>p5 : Symbol(p5, Decl(in.js, 7, 26))
23+
}
24+
Collapse file

‎…lines/reference/jsdocStringLiteral.types‎ ‎…s/baselines/reference/jsdocLiteral.types‎tests/baselines/reference/jsdocStringLiteral.types renamed to tests/baselines/reference/jsdocLiteral.types tests/baselines/reference/jsdocStringLiteral.types renamed to tests/baselines/reference/jsdocLiteral.types

Copy file name to clipboardExpand all lines: tests/baselines/reference/jsdocLiteral.types
+10-6Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,27 @@
44
* @param {"literal"} p2
55
* @param {'literal' | 'other'} p3
66
* @param {'literal' | number} p4
7+
* @param {12 | true | 'str'} p5
78
*/
8-
function f(p1, p2, p3, p4) {
9-
>f : (p1: "literal", p2: "literal", p3: "literal" | "other", p4: "literal" | number) => string
9+
function f(p1, p2, p3, p4, p5) {
10+
>f : (p1: "literal", p2: "literal", p3: "literal" | "other", p4: number | "literal", p5: true | 12 | "str") => string
1011
>p1 : "literal"
1112
>p2 : "literal"
1213
>p3 : "literal" | "other"
13-
>p4 : "literal" | number
14+
>p4 : number | "literal"
15+
>p5 : true | 12 | "str"
1416

15-
return p1 + p2 + p3 + p4 + '.';
16-
>p1 + p2 + p3 + p4 + '.' : string
17+
return p1 + p2 + p3 + p4 + p5 + '.';
18+
>p1 + p2 + p3 + p4 + p5 + '.' : string
19+
>p1 + p2 + p3 + p4 + p5 : string
1720
>p1 + p2 + p3 + p4 : string
1821
>p1 + p2 + p3 : string
1922
>p1 + p2 : string
2023
>p1 : "literal"
2124
>p2 : "literal"
2225
>p3 : "literal" | "other"
23-
>p4 : "literal" | number
26+
>p4 : number | "literal"
27+
>p5 : true | 12 | "str"
2428
>'.' : string
2529
}
2630

Collapse file

‎tests/baselines/reference/jsdocStringLiteral.symbols‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/jsdocStringLiteral.symbols
-21Lines changed: 0 additions & 21 deletions
This file was deleted.
Collapse file

‎…/conformance/jsdoc/jsdocStringLiteral.ts‎ ‎…/cases/conformance/jsdoc/jsdocLiteral.ts‎tests/cases/conformance/jsdoc/jsdocStringLiteral.ts renamed to tests/cases/conformance/jsdoc/jsdocLiteral.ts tests/cases/conformance/jsdoc/jsdocStringLiteral.ts renamed to tests/cases/conformance/jsdoc/jsdocLiteral.ts

Copy file name to clipboardExpand all lines: tests/cases/conformance/jsdoc/jsdocLiteral.ts
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
* @param {"literal"} p2
77
* @param {'literal' | 'other'} p3
88
* @param {'literal' | number} p4
9+
* @param {12 | true | 'str'} p5
910
*/
10-
function f(p1, p2, p3, p4) {
11-
return p1 + p2 + p3 + p4 + '.';
11+
function f(p1, p2, p3, p4, p5) {
12+
return p1 + p2 + p3 + p4 + p5 + '.';
1213
}
Collapse file

‎tests/cases/fourslash/completionForStringLiteral4.ts‎

Copy file name to clipboardExpand all lines: tests/cases/fourslash/completionForStringLiteral4.ts
+4-3Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66
//// * @param {"literal"} p2
77
//// * @param {'other1' | 'other2'} p3
88
//// * @param {'literal' | number} p4
9+
//// * @param {12 | true} p5
910
//// */
10-
////function f(p1, p2, p3, p4) {
11-
//// return p1 + p2 + p3 + p4 + '.';
11+
////function f(p1, p2, p3, p4, p5) {
12+
//// return p1 + p2 + p3 + p4 + p5 + '.';
1213
////}
1314
////f/*1*/('literal', 'literal', "o/*2*/ther1", 12);
1415

1516
goTo.marker('1');
1617
verify.quickInfoExists();
17-
verify.quickInfoIs('function f(p1: "literal", p2: "literal", p3: "other1" | "other2", p4: "literal" | number): string', 'I am documentation');
18+
verify.quickInfoIs('function f(p1: "literal", p2: "literal", p3: "other1" | "other2", p4: number | "literal", p5: true | 12): string', 'I am documentation');
1819

1920
goTo.marker('2');
2021
verify.completionListContains("other1");

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.