mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Merge branch 'master' into report-multiple-overload-errors
This commit is contained in:
@@ -19207,7 +19207,9 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
// Result is union of signatures collected (return type is union of return types of this signature set)
|
||||
return signatureList && createUnionSignature(signatureList[0], signatureList);
|
||||
if (signatureList) {
|
||||
return signatureList.length === 1 ? signatureList[0] : createUnionSignature(signatureList[0], signatureList);
|
||||
}
|
||||
}
|
||||
|
||||
function checkSpreadExpression(node: SpreadElement, checkMode?: CheckMode): Type {
|
||||
|
||||
@@ -468,6 +468,8 @@ namespace ts {
|
||||
visitNode(cbNode, (<JSDocPropertyLikeTag>node).typeExpression)
|
||||
: visitNode(cbNode, (<JSDocPropertyLikeTag>node).typeExpression) ||
|
||||
visitNode(cbNode, (<JSDocPropertyLikeTag>node).name));
|
||||
case SyntaxKind.JSDocAuthorTag:
|
||||
return visitNode(cbNode, (node as JSDocTag).tagName);
|
||||
case SyntaxKind.JSDocAugmentsTag:
|
||||
return visitNode(cbNode, (node as JSDocTag).tagName) ||
|
||||
visitNode(cbNode, (<JSDocAugmentsTag>node).class);
|
||||
@@ -6621,6 +6623,9 @@ namespace ts {
|
||||
|
||||
let tag: JSDocTag | undefined;
|
||||
switch (tagName.escapedText) {
|
||||
case "author":
|
||||
tag = parseAuthorTag(start, tagName, margin);
|
||||
break;
|
||||
case "augments":
|
||||
case "extends":
|
||||
tag = parseAugmentsTag(start, tagName);
|
||||
@@ -6900,6 +6905,69 @@ namespace ts {
|
||||
return finishNode(result);
|
||||
}
|
||||
|
||||
function parseAuthorTag(start: number, tagName: Identifier, indent: number): JSDocAuthorTag {
|
||||
const result = <JSDocAuthorTag>createNode(SyntaxKind.JSDocAuthorTag, start);
|
||||
result.tagName = tagName;
|
||||
|
||||
const authorInfoWithEmail = tryParse(() => tryParseAuthorNameAndEmail());
|
||||
if (!authorInfoWithEmail) {
|
||||
return finishNode(result);
|
||||
}
|
||||
|
||||
result.comment = authorInfoWithEmail;
|
||||
|
||||
if (lookAhead(() => nextToken() !== SyntaxKind.NewLineTrivia)) {
|
||||
const comment = parseTagComments(indent);
|
||||
if (comment) {
|
||||
result.comment += comment;
|
||||
}
|
||||
}
|
||||
|
||||
return finishNode(result);
|
||||
}
|
||||
|
||||
function tryParseAuthorNameAndEmail(): string | undefined {
|
||||
const comments: string[] = [];
|
||||
let seenLessThan = false;
|
||||
let seenGreaterThan = false;
|
||||
let token = scanner.getToken();
|
||||
|
||||
loop: while (true) {
|
||||
switch (token) {
|
||||
case SyntaxKind.Identifier:
|
||||
case SyntaxKind.WhitespaceTrivia:
|
||||
case SyntaxKind.DotToken:
|
||||
case SyntaxKind.AtToken:
|
||||
comments.push(scanner.getTokenText());
|
||||
break;
|
||||
case SyntaxKind.LessThanToken:
|
||||
if (seenLessThan || seenGreaterThan) {
|
||||
return;
|
||||
}
|
||||
seenLessThan = true;
|
||||
comments.push(scanner.getTokenText());
|
||||
break;
|
||||
case SyntaxKind.GreaterThanToken:
|
||||
if (!seenLessThan || seenGreaterThan) {
|
||||
return;
|
||||
}
|
||||
seenGreaterThan = true;
|
||||
comments.push(scanner.getTokenText());
|
||||
scanner.setTextPos(scanner.getTokenPos() + 1);
|
||||
break loop;
|
||||
case SyntaxKind.NewLineTrivia:
|
||||
case SyntaxKind.EndOfFileToken:
|
||||
break loop;
|
||||
}
|
||||
|
||||
token = nextTokenJSDoc();
|
||||
}
|
||||
|
||||
if (seenLessThan && seenGreaterThan) {
|
||||
return comments.length === 0 ? undefined : comments.join("");
|
||||
}
|
||||
}
|
||||
|
||||
function parseAugmentsTag(start: number, tagName: Identifier): JSDocAugmentsTag {
|
||||
const result = <JSDocAugmentsTag>createNode(SyntaxKind.JSDocAugmentsTag, start);
|
||||
result.tagName = tagName;
|
||||
|
||||
@@ -2086,6 +2086,8 @@ namespace ts {
|
||||
return token = SyntaxKind.CloseBracketToken;
|
||||
case CharacterCodes.lessThan:
|
||||
return token = SyntaxKind.LessThanToken;
|
||||
case CharacterCodes.greaterThan:
|
||||
return token = SyntaxKind.GreaterThanToken;
|
||||
case CharacterCodes.equals:
|
||||
return token = SyntaxKind.EqualsToken;
|
||||
case CharacterCodes.comma:
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace ts {
|
||||
| SyntaxKind.OpenBraceToken
|
||||
| SyntaxKind.CloseBraceToken
|
||||
| SyntaxKind.LessThanToken
|
||||
| SyntaxKind.GreaterThanToken
|
||||
| SyntaxKind.OpenBracketToken
|
||||
| SyntaxKind.CloseBracketToken
|
||||
| SyntaxKind.EqualsToken
|
||||
@@ -459,6 +460,7 @@ namespace ts {
|
||||
JSDocSignature,
|
||||
JSDocTag,
|
||||
JSDocAugmentsTag,
|
||||
JSDocAuthorTag,
|
||||
JSDocClassTag,
|
||||
JSDocCallbackTag,
|
||||
JSDocEnumTag,
|
||||
@@ -2455,6 +2457,10 @@ namespace ts {
|
||||
class: ExpressionWithTypeArguments & { expression: Identifier | PropertyAccessEntityNameExpression };
|
||||
}
|
||||
|
||||
export interface JSDocAuthorTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocAuthorTag;
|
||||
}
|
||||
|
||||
export interface JSDocClassTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocClassTag;
|
||||
}
|
||||
|
||||
@@ -6071,6 +6071,10 @@ namespace ts {
|
||||
return node.kind === SyntaxKind.JSDocComment;
|
||||
}
|
||||
|
||||
export function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag {
|
||||
return node.kind === SyntaxKind.JSDocAuthorTag;
|
||||
}
|
||||
|
||||
export function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag {
|
||||
return node.kind === SyntaxKind.JSDocAugmentsTag;
|
||||
}
|
||||
|
||||
@@ -315,6 +315,11 @@ namespace ts {
|
||||
* {@link first link}
|
||||
* Inside {@link link text} thing
|
||||
* @see {@link second link text} and {@link Foo|a foo} as well.
|
||||
*/`);
|
||||
parsesCorrectly("authorTag",
|
||||
`/**
|
||||
* @author John Doe <john.doe@example.com>
|
||||
* @author John Doe <john.doe@example.com> unexpected comment
|
||||
*/`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"kind": "JSDocComment",
|
||||
"pos": 0,
|
||||
"end": 112,
|
||||
"modifierFlagsCache": 0,
|
||||
"transformFlags": 0,
|
||||
"tags": {
|
||||
"0": {
|
||||
"kind": "JSDocAuthorTag",
|
||||
"pos": 7,
|
||||
"end": 50,
|
||||
"modifierFlagsCache": 0,
|
||||
"transformFlags": 0,
|
||||
"tagName": {
|
||||
"kind": "Identifier",
|
||||
"pos": 8,
|
||||
"end": 14,
|
||||
"modifierFlagsCache": 0,
|
||||
"transformFlags": 0,
|
||||
"escapedText": "author"
|
||||
},
|
||||
"comment": "John Doe <john.doe@example.com>"
|
||||
},
|
||||
"1": {
|
||||
"kind": "JSDocAuthorTag",
|
||||
"pos": 50,
|
||||
"end": 110,
|
||||
"modifierFlagsCache": 0,
|
||||
"transformFlags": 0,
|
||||
"tagName": {
|
||||
"kind": "Identifier",
|
||||
"pos": 51,
|
||||
"end": 57,
|
||||
"modifierFlagsCache": 0,
|
||||
"transformFlags": 0,
|
||||
"escapedText": "author"
|
||||
},
|
||||
"comment": "John Doe <john.doe@example.com> unexpected comment"
|
||||
},
|
||||
"length": 2,
|
||||
"pos": 7,
|
||||
"end": 110
|
||||
}
|
||||
}
|
||||
+25
-20
@@ -72,7 +72,7 @@ declare namespace ts {
|
||||
pos: number;
|
||||
end: number;
|
||||
}
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
|
||||
enum SyntaxKind {
|
||||
@@ -379,23 +379,24 @@ declare namespace ts {
|
||||
JSDocSignature = 299,
|
||||
JSDocTag = 300,
|
||||
JSDocAugmentsTag = 301,
|
||||
JSDocClassTag = 302,
|
||||
JSDocCallbackTag = 303,
|
||||
JSDocEnumTag = 304,
|
||||
JSDocParameterTag = 305,
|
||||
JSDocReturnTag = 306,
|
||||
JSDocThisTag = 307,
|
||||
JSDocTypeTag = 308,
|
||||
JSDocTemplateTag = 309,
|
||||
JSDocTypedefTag = 310,
|
||||
JSDocPropertyTag = 311,
|
||||
SyntaxList = 312,
|
||||
NotEmittedStatement = 313,
|
||||
PartiallyEmittedExpression = 314,
|
||||
CommaListExpression = 315,
|
||||
MergeDeclarationMarker = 316,
|
||||
EndOfDeclarationMarker = 317,
|
||||
Count = 318,
|
||||
JSDocAuthorTag = 302,
|
||||
JSDocClassTag = 303,
|
||||
JSDocCallbackTag = 304,
|
||||
JSDocEnumTag = 305,
|
||||
JSDocParameterTag = 306,
|
||||
JSDocReturnTag = 307,
|
||||
JSDocThisTag = 308,
|
||||
JSDocTypeTag = 309,
|
||||
JSDocTemplateTag = 310,
|
||||
JSDocTypedefTag = 311,
|
||||
JSDocPropertyTag = 312,
|
||||
SyntaxList = 313,
|
||||
NotEmittedStatement = 314,
|
||||
PartiallyEmittedExpression = 315,
|
||||
CommaListExpression = 316,
|
||||
MergeDeclarationMarker = 317,
|
||||
EndOfDeclarationMarker = 318,
|
||||
Count = 319,
|
||||
FirstAssignment = 60,
|
||||
LastAssignment = 72,
|
||||
FirstCompoundAssignment = 61,
|
||||
@@ -422,9 +423,9 @@ declare namespace ts {
|
||||
LastBinaryOperator = 72,
|
||||
FirstNode = 149,
|
||||
FirstJSDocNode = 289,
|
||||
LastJSDocNode = 311,
|
||||
LastJSDocNode = 312,
|
||||
FirstJSDocTagNode = 300,
|
||||
LastJSDocTagNode = 311,
|
||||
LastJSDocTagNode = 312,
|
||||
}
|
||||
enum NodeFlags {
|
||||
None = 0,
|
||||
@@ -1581,6 +1582,9 @@ declare namespace ts {
|
||||
expression: Identifier | PropertyAccessEntityNameExpression;
|
||||
};
|
||||
}
|
||||
interface JSDocAuthorTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocAuthorTag;
|
||||
}
|
||||
interface JSDocClassTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocClassTag;
|
||||
}
|
||||
@@ -3532,6 +3536,7 @@ declare namespace ts {
|
||||
function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
|
||||
function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
|
||||
function isJSDoc(node: Node): node is JSDoc;
|
||||
function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
|
||||
function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
|
||||
function isJSDocClassTag(node: Node): node is JSDocClassTag;
|
||||
function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
|
||||
|
||||
+25
-20
@@ -72,7 +72,7 @@ declare namespace ts {
|
||||
pos: number;
|
||||
end: number;
|
||||
}
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
|
||||
enum SyntaxKind {
|
||||
@@ -379,23 +379,24 @@ declare namespace ts {
|
||||
JSDocSignature = 299,
|
||||
JSDocTag = 300,
|
||||
JSDocAugmentsTag = 301,
|
||||
JSDocClassTag = 302,
|
||||
JSDocCallbackTag = 303,
|
||||
JSDocEnumTag = 304,
|
||||
JSDocParameterTag = 305,
|
||||
JSDocReturnTag = 306,
|
||||
JSDocThisTag = 307,
|
||||
JSDocTypeTag = 308,
|
||||
JSDocTemplateTag = 309,
|
||||
JSDocTypedefTag = 310,
|
||||
JSDocPropertyTag = 311,
|
||||
SyntaxList = 312,
|
||||
NotEmittedStatement = 313,
|
||||
PartiallyEmittedExpression = 314,
|
||||
CommaListExpression = 315,
|
||||
MergeDeclarationMarker = 316,
|
||||
EndOfDeclarationMarker = 317,
|
||||
Count = 318,
|
||||
JSDocAuthorTag = 302,
|
||||
JSDocClassTag = 303,
|
||||
JSDocCallbackTag = 304,
|
||||
JSDocEnumTag = 305,
|
||||
JSDocParameterTag = 306,
|
||||
JSDocReturnTag = 307,
|
||||
JSDocThisTag = 308,
|
||||
JSDocTypeTag = 309,
|
||||
JSDocTemplateTag = 310,
|
||||
JSDocTypedefTag = 311,
|
||||
JSDocPropertyTag = 312,
|
||||
SyntaxList = 313,
|
||||
NotEmittedStatement = 314,
|
||||
PartiallyEmittedExpression = 315,
|
||||
CommaListExpression = 316,
|
||||
MergeDeclarationMarker = 317,
|
||||
EndOfDeclarationMarker = 318,
|
||||
Count = 319,
|
||||
FirstAssignment = 60,
|
||||
LastAssignment = 72,
|
||||
FirstCompoundAssignment = 61,
|
||||
@@ -422,9 +423,9 @@ declare namespace ts {
|
||||
LastBinaryOperator = 72,
|
||||
FirstNode = 149,
|
||||
FirstJSDocNode = 289,
|
||||
LastJSDocNode = 311,
|
||||
LastJSDocNode = 312,
|
||||
FirstJSDocTagNode = 300,
|
||||
LastJSDocTagNode = 311,
|
||||
LastJSDocTagNode = 312,
|
||||
}
|
||||
enum NodeFlags {
|
||||
None = 0,
|
||||
@@ -1581,6 +1582,9 @@ declare namespace ts {
|
||||
expression: Identifier | PropertyAccessEntityNameExpression;
|
||||
};
|
||||
}
|
||||
interface JSDocAuthorTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocAuthorTag;
|
||||
}
|
||||
interface JSDocClassTag extends JSDocTag {
|
||||
kind: SyntaxKind.JSDocClassTag;
|
||||
}
|
||||
@@ -3532,6 +3536,7 @@ declare namespace ts {
|
||||
function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
|
||||
function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
|
||||
function isJSDoc(node: Node): node is JSDoc;
|
||||
function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
|
||||
function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
|
||||
function isJSDocClassTag(node: Node): node is JSDocClassTag;
|
||||
function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
//// [functionExpressionContextualTyping3.ts]
|
||||
// #31114
|
||||
declare function f<T>(value: T | number): void;
|
||||
f((a: any) => "")
|
||||
|
||||
|
||||
//// [functionExpressionContextualTyping3.js]
|
||||
f(function (a) { return ""; });
|
||||
@@ -0,0 +1,12 @@
|
||||
=== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping3.ts ===
|
||||
// #31114
|
||||
declare function f<T>(value: T | number): void;
|
||||
>f : Symbol(f, Decl(functionExpressionContextualTyping3.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(functionExpressionContextualTyping3.ts, 1, 19))
|
||||
>value : Symbol(value, Decl(functionExpressionContextualTyping3.ts, 1, 22))
|
||||
>T : Symbol(T, Decl(functionExpressionContextualTyping3.ts, 1, 19))
|
||||
|
||||
f((a: any) => "")
|
||||
>f : Symbol(f, Decl(functionExpressionContextualTyping3.ts, 0, 0))
|
||||
>a : Symbol(a, Decl(functionExpressionContextualTyping3.ts, 2, 3))
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
=== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping3.ts ===
|
||||
// #31114
|
||||
declare function f<T>(value: T | number): void;
|
||||
>f : <T>(value: number | T) => void
|
||||
>value : number | T
|
||||
|
||||
f((a: any) => "")
|
||||
>f((a: any) => "") : void
|
||||
>f : <T>(value: number | T) => void
|
||||
>(a: any) => "" : (a: any) => ""
|
||||
>a : any
|
||||
>"" : ""
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
{
|
||||
"marker": {
|
||||
"fileName": "/tests/cases/fourslash/quickInfoJsDocTags.ts",
|
||||
"position": 256
|
||||
"position": 272
|
||||
},
|
||||
"quickInfo": {
|
||||
"kind": "function",
|
||||
"kindModifiers": "",
|
||||
"textSpan": {
|
||||
"start": 256,
|
||||
"start": 272,
|
||||
"length": 3
|
||||
},
|
||||
"displayParts": [
|
||||
@@ -70,7 +70,7 @@
|
||||
"tags": [
|
||||
{
|
||||
"name": "author",
|
||||
"text": "Me"
|
||||
"text": "Me <me@domain.tld>"
|
||||
},
|
||||
{
|
||||
"name": "augments",
|
||||
|
||||
@@ -5,6 +5,8 @@ src/cli/util.js(60,44): error TS2345: Argument of type 'null' is not assignable
|
||||
src/cli/util.js(119,38): error TS2339: Property 'sync' does not exist on type '(...args: any[]) => any'.
|
||||
src/cli/util.js(372,29): error TS2532: Object is possibly 'undefined'.
|
||||
src/cli/util.js(372,64): error TS2339: Property 'length' does not exist on type 'Ignore'.
|
||||
src/cli/util.js(413,36): error TS2345: Argument of type '{ dot: true; nodir: boolean; }' is not assignable to parameter of type 'GlobbyOptions'.
|
||||
Object literal may only specify known properties, and 'nodir' does not exist in type 'GlobbyOptions'.
|
||||
src/cli/util.js(452,25): error TS2532: Object is possibly 'undefined'.
|
||||
src/cli/util.js(452,52): error TS2339: Property 'length' does not exist on type 'Ignore'.
|
||||
src/cli/util.js(510,44): error TS2345: Argument of type 'null' is not assignable to parameter of type 'number | undefined'.
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
// @noImplicitAny: true
|
||||
|
||||
// #31114
|
||||
declare function f<T>(value: T | number): void;
|
||||
f((a: any) => "")
|
||||
@@ -3,7 +3,7 @@
|
||||
// @Filename: quickInfoJsDocTags.ts
|
||||
/////**
|
||||
//// * Doc
|
||||
//// * @author Me
|
||||
//// * @author Me <me@domain.tld>
|
||||
//// * @augments {C<T>} Augments it
|
||||
//// * @template T A template
|
||||
//// * @type {number | string} A type
|
||||
|
||||
Reference in New Issue
Block a user