Skip to content

Commit 19b593e

Browse files
committed
Merge branch 'master' into report-multiple-overload-errors
2 parents 722917f + 68cb3ae commit 19b593e

16 files changed

+226
-45
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19207,7 +19207,9 @@ namespace ts {
1920719207
}
1920819208
}
1920919209
// Result is union of signatures collected (return type is union of return types of this signature set)
19210-
return signatureList && createUnionSignature(signatureList[0], signatureList);
19210+
if (signatureList) {
19211+
return signatureList.length === 1 ? signatureList[0] : createUnionSignature(signatureList[0], signatureList);
19212+
}
1921119213
}
1921219214

1921319215
function checkSpreadExpression(node: SpreadElement, checkMode?: CheckMode): Type {

src/compiler/parser.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,8 @@ namespace ts {
468468
visitNode(cbNode, (<JSDocPropertyLikeTag>node).typeExpression)
469469
: visitNode(cbNode, (<JSDocPropertyLikeTag>node).typeExpression) ||
470470
visitNode(cbNode, (<JSDocPropertyLikeTag>node).name));
471+
case SyntaxKind.JSDocAuthorTag:
472+
return visitNode(cbNode, (node as JSDocTag).tagName);
471473
case SyntaxKind.JSDocAugmentsTag:
472474
return visitNode(cbNode, (node as JSDocTag).tagName) ||
473475
visitNode(cbNode, (<JSDocAugmentsTag>node).class);
@@ -6621,6 +6623,9 @@ namespace ts {
66216623

66226624
let tag: JSDocTag | undefined;
66236625
switch (tagName.escapedText) {
6626+
case "author":
6627+
tag = parseAuthorTag(start, tagName, margin);
6628+
break;
66246629
case "augments":
66256630
case "extends":
66266631
tag = parseAugmentsTag(start, tagName);
@@ -6900,6 +6905,69 @@ namespace ts {
69006905
return finishNode(result);
69016906
}
69026907

6908+
function parseAuthorTag(start: number, tagName: Identifier, indent: number): JSDocAuthorTag {
6909+
const result = <JSDocAuthorTag>createNode(SyntaxKind.JSDocAuthorTag, start);
6910+
result.tagName = tagName;
6911+
6912+
const authorInfoWithEmail = tryParse(() => tryParseAuthorNameAndEmail());
6913+
if (!authorInfoWithEmail) {
6914+
return finishNode(result);
6915+
}
6916+
6917+
result.comment = authorInfoWithEmail;
6918+
6919+
if (lookAhead(() => nextToken() !== SyntaxKind.NewLineTrivia)) {
6920+
const comment = parseTagComments(indent);
6921+
if (comment) {
6922+
result.comment += comment;
6923+
}
6924+
}
6925+
6926+
return finishNode(result);
6927+
}
6928+
6929+
function tryParseAuthorNameAndEmail(): string | undefined {
6930+
const comments: string[] = [];
6931+
let seenLessThan = false;
6932+
let seenGreaterThan = false;
6933+
let token = scanner.getToken();
6934+
6935+
loop: while (true) {
6936+
switch (token) {
6937+
case SyntaxKind.Identifier:
6938+
case SyntaxKind.WhitespaceTrivia:
6939+
case SyntaxKind.DotToken:
6940+
case SyntaxKind.AtToken:
6941+
comments.push(scanner.getTokenText());
6942+
break;
6943+
case SyntaxKind.LessThanToken:
6944+
if (seenLessThan || seenGreaterThan) {
6945+
return;
6946+
}
6947+
seenLessThan = true;
6948+
comments.push(scanner.getTokenText());
6949+
break;
6950+
case SyntaxKind.GreaterThanToken:
6951+
if (!seenLessThan || seenGreaterThan) {
6952+
return;
6953+
}
6954+
seenGreaterThan = true;
6955+
comments.push(scanner.getTokenText());
6956+
scanner.setTextPos(scanner.getTokenPos() + 1);
6957+
break loop;
6958+
case SyntaxKind.NewLineTrivia:
6959+
case SyntaxKind.EndOfFileToken:
6960+
break loop;
6961+
}
6962+
6963+
token = nextTokenJSDoc();
6964+
}
6965+
6966+
if (seenLessThan && seenGreaterThan) {
6967+
return comments.length === 0 ? undefined : comments.join("");
6968+
}
6969+
}
6970+
69036971
function parseAugmentsTag(start: number, tagName: Identifier): JSDocAugmentsTag {
69046972
const result = <JSDocAugmentsTag>createNode(SyntaxKind.JSDocAugmentsTag, start);
69056973
result.tagName = tagName;

src/compiler/scanner.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,6 +2086,8 @@ namespace ts {
20862086
return token = SyntaxKind.CloseBracketToken;
20872087
case CharacterCodes.lessThan:
20882088
return token = SyntaxKind.LessThanToken;
2089+
case CharacterCodes.greaterThan:
2090+
return token = SyntaxKind.GreaterThanToken;
20892091
case CharacterCodes.equals:
20902092
return token = SyntaxKind.EqualsToken;
20912093
case CharacterCodes.comma:

src/compiler/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace ts {
1717
| SyntaxKind.OpenBraceToken
1818
| SyntaxKind.CloseBraceToken
1919
| SyntaxKind.LessThanToken
20+
| SyntaxKind.GreaterThanToken
2021
| SyntaxKind.OpenBracketToken
2122
| SyntaxKind.CloseBracketToken
2223
| SyntaxKind.EqualsToken
@@ -459,6 +460,7 @@ namespace ts {
459460
JSDocSignature,
460461
JSDocTag,
461462
JSDocAugmentsTag,
463+
JSDocAuthorTag,
462464
JSDocClassTag,
463465
JSDocCallbackTag,
464466
JSDocEnumTag,
@@ -2455,6 +2457,10 @@ namespace ts {
24552457
class: ExpressionWithTypeArguments & { expression: Identifier | PropertyAccessEntityNameExpression };
24562458
}
24572459

2460+
export interface JSDocAuthorTag extends JSDocTag {
2461+
kind: SyntaxKind.JSDocAuthorTag;
2462+
}
2463+
24582464
export interface JSDocClassTag extends JSDocTag {
24592465
kind: SyntaxKind.JSDocClassTag;
24602466
}

src/compiler/utilities.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6071,6 +6071,10 @@ namespace ts {
60716071
return node.kind === SyntaxKind.JSDocComment;
60726072
}
60736073

6074+
export function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag {
6075+
return node.kind === SyntaxKind.JSDocAuthorTag;
6076+
}
6077+
60746078
export function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag {
60756079
return node.kind === SyntaxKind.JSDocAugmentsTag;
60766080
}

src/testRunner/unittests/jsDocParsing.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,11 @@ namespace ts {
315315
* {@link first link}
316316
* Inside {@link link text} thing
317317
* @see {@link second link text} and {@link Foo|a foo} as well.
318+
*/`);
319+
parsesCorrectly("authorTag",
320+
`/**
321+
* @author John Doe <[email protected]>
322+
* @author John Doe <[email protected]> unexpected comment
318323
*/`);
319324
});
320325
});
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"kind": "JSDocComment",
3+
"pos": 0,
4+
"end": 112,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
7+
"tags": {
8+
"0": {
9+
"kind": "JSDocAuthorTag",
10+
"pos": 7,
11+
"end": 50,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
14+
"tagName": {
15+
"kind": "Identifier",
16+
"pos": 8,
17+
"end": 14,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
20+
"escapedText": "author"
21+
},
22+
"comment": "John Doe <[email protected]>"
23+
},
24+
"1": {
25+
"kind": "JSDocAuthorTag",
26+
"pos": 50,
27+
"end": 110,
28+
"modifierFlagsCache": 0,
29+
"transformFlags": 0,
30+
"tagName": {
31+
"kind": "Identifier",
32+
"pos": 51,
33+
"end": 57,
34+
"modifierFlagsCache": 0,
35+
"transformFlags": 0,
36+
"escapedText": "author"
37+
},
38+
"comment": "John Doe <[email protected]> unexpected comment"
39+
},
40+
"length": 2,
41+
"pos": 7,
42+
"end": 110
43+
}
44+
}

tests/baselines/reference/api/tsserverlibrary.d.ts

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ declare namespace ts {
7272
pos: number;
7373
end: number;
7474
}
75-
type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.Unknown | KeywordSyntaxKind;
75+
type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.GreaterThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.Unknown | KeywordSyntaxKind;
7676
type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InferKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.OfKeyword;
7777
type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
7878
enum SyntaxKind {
@@ -379,23 +379,24 @@ declare namespace ts {
379379
JSDocSignature = 299,
380380
JSDocTag = 300,
381381
JSDocAugmentsTag = 301,
382-
JSDocClassTag = 302,
383-
JSDocCallbackTag = 303,
384-
JSDocEnumTag = 304,
385-
JSDocParameterTag = 305,
386-
JSDocReturnTag = 306,
387-
JSDocThisTag = 307,
388-
JSDocTypeTag = 308,
389-
JSDocTemplateTag = 309,
390-
JSDocTypedefTag = 310,
391-
JSDocPropertyTag = 311,
392-
SyntaxList = 312,
393-
NotEmittedStatement = 313,
394-
PartiallyEmittedExpression = 314,
395-
CommaListExpression = 315,
396-
MergeDeclarationMarker = 316,
397-
EndOfDeclarationMarker = 317,
398-
Count = 318,
382+
JSDocAuthorTag = 302,
383+
JSDocClassTag = 303,
384+
JSDocCallbackTag = 304,
385+
JSDocEnumTag = 305,
386+
JSDocParameterTag = 306,
387+
JSDocReturnTag = 307,
388+
JSDocThisTag = 308,
389+
JSDocTypeTag = 309,
390+
JSDocTemplateTag = 310,
391+
JSDocTypedefTag = 311,
392+
JSDocPropertyTag = 312,
393+
SyntaxList = 313,
394+
NotEmittedStatement = 314,
395+
PartiallyEmittedExpression = 315,
396+
CommaListExpression = 316,
397+
MergeDeclarationMarker = 317,
398+
EndOfDeclarationMarker = 318,
399+
Count = 319,
399400
FirstAssignment = 60,
400401
LastAssignment = 72,
401402
FirstCompoundAssignment = 61,
@@ -422,9 +423,9 @@ declare namespace ts {
422423
LastBinaryOperator = 72,
423424
FirstNode = 149,
424425
FirstJSDocNode = 289,
425-
LastJSDocNode = 311,
426+
LastJSDocNode = 312,
426427
FirstJSDocTagNode = 300,
427-
LastJSDocTagNode = 311,
428+
LastJSDocTagNode = 312,
428429
}
429430
enum NodeFlags {
430431
None = 0,
@@ -1581,6 +1582,9 @@ declare namespace ts {
15811582
expression: Identifier | PropertyAccessEntityNameExpression;
15821583
};
15831584
}
1585+
interface JSDocAuthorTag extends JSDocTag {
1586+
kind: SyntaxKind.JSDocAuthorTag;
1587+
}
15841588
interface JSDocClassTag extends JSDocTag {
15851589
kind: SyntaxKind.JSDocClassTag;
15861590
}
@@ -3532,6 +3536,7 @@ declare namespace ts {
35323536
function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
35333537
function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
35343538
function isJSDoc(node: Node): node is JSDoc;
3539+
function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
35353540
function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
35363541
function isJSDocClassTag(node: Node): node is JSDocClassTag;
35373542
function isJSDocEnumTag(node: Node): node is JSDocEnumTag;

tests/baselines/reference/api/typescript.d.ts

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ declare namespace ts {
7272
pos: number;
7373
end: number;
7474
}
75-
type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.Unknown | KeywordSyntaxKind;
75+
type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.GreaterThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.Unknown | KeywordSyntaxKind;
7676
type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InferKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.OfKeyword;
7777
type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
7878
enum SyntaxKind {
@@ -379,23 +379,24 @@ declare namespace ts {
379379
JSDocSignature = 299,
380380
JSDocTag = 300,
381381
JSDocAugmentsTag = 301,
382-
JSDocClassTag = 302,
383-
JSDocCallbackTag = 303,
384-
JSDocEnumTag = 304,
385-
JSDocParameterTag = 305,
386-
JSDocReturnTag = 306,
387-
JSDocThisTag = 307,
388-
JSDocTypeTag = 308,
389-
JSDocTemplateTag = 309,
390-
JSDocTypedefTag = 310,
391-
JSDocPropertyTag = 311,
392-
SyntaxList = 312,
393-
NotEmittedStatement = 313,
394-
PartiallyEmittedExpression = 314,
395-
CommaListExpression = 315,
396-
MergeDeclarationMarker = 316,
397-
EndOfDeclarationMarker = 317,
398-
Count = 318,
382+
JSDocAuthorTag = 302,
383+
JSDocClassTag = 303,
384+
JSDocCallbackTag = 304,
385+
JSDocEnumTag = 305,
386+
JSDocParameterTag = 306,
387+
JSDocReturnTag = 307,
388+
JSDocThisTag = 308,
389+
JSDocTypeTag = 309,
390+
JSDocTemplateTag = 310,
391+
JSDocTypedefTag = 311,
392+
JSDocPropertyTag = 312,
393+
SyntaxList = 313,
394+
NotEmittedStatement = 314,
395+
PartiallyEmittedExpression = 315,
396+
CommaListExpression = 316,
397+
MergeDeclarationMarker = 317,
398+
EndOfDeclarationMarker = 318,
399+
Count = 319,
399400
FirstAssignment = 60,
400401
LastAssignment = 72,
401402
FirstCompoundAssignment = 61,
@@ -422,9 +423,9 @@ declare namespace ts {
422423
LastBinaryOperator = 72,
423424
FirstNode = 149,
424425
FirstJSDocNode = 289,
425-
LastJSDocNode = 311,
426+
LastJSDocNode = 312,
426427
FirstJSDocTagNode = 300,
427-
LastJSDocTagNode = 311,
428+
LastJSDocTagNode = 312,
428429
}
429430
enum NodeFlags {
430431
None = 0,
@@ -1581,6 +1582,9 @@ declare namespace ts {
15811582
expression: Identifier | PropertyAccessEntityNameExpression;
15821583
};
15831584
}
1585+
interface JSDocAuthorTag extends JSDocTag {
1586+
kind: SyntaxKind.JSDocAuthorTag;
1587+
}
15841588
interface JSDocClassTag extends JSDocTag {
15851589
kind: SyntaxKind.JSDocClassTag;
15861590
}
@@ -3532,6 +3536,7 @@ declare namespace ts {
35323536
function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
35333537
function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
35343538
function isJSDoc(node: Node): node is JSDoc;
3539+
function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
35353540
function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
35363541
function isJSDocClassTag(node: Node): node is JSDocClassTag;
35373542
function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [functionExpressionContextualTyping3.ts]
2+
// #31114
3+
declare function f<T>(value: T | number): void;
4+
f((a: any) => "")
5+
6+
7+
//// [functionExpressionContextualTyping3.js]
8+
f(function (a) { return ""; });

0 commit comments

Comments
 (0)