Skip to content

Commit 6620b25

Browse files
TypeScript Bota-tarasyuktypescript-bot
authored
🤖 Pick PR #40005 (feat(40004): Missing Compiler API p...) into release-4.0 (#40015)
* Cherry-pick PR #40005 into release-4.0 Component commits: fa1ed85 feat(40004): make isNamedTupleMember public * Update LKG Co-authored-by: Alexander T <alexander.tarasyuk@outlook.com> Co-authored-by: typescript-bot <typescript@microsoft.com>
1 parent 7558de6 commit 6620b25

12 files changed

+195
-36
lines changed

‎lib/tsc.js

+31-6
Original file line numberDiff line numberDiff line change
@@ -20363,6 +20363,10 @@ var ts;
2036320363
return node.kind === 178;
2036420364
}
2036520365
ts.isTupleTypeNode = isTupleTypeNode;
20366+
function isNamedTupleMember(node) {
20367+
return node.kind === 191;
20368+
}
20369+
ts.isNamedTupleMember = isNamedTupleMember;
2036620370
function isOptionalTypeNode(node) {
2036720371
return node.kind === 179;
2036820372
}
@@ -56083,7 +56087,31 @@ var ts;
5608356087
}
5608456088
function checkDeprecatedSignature(signature, node) {
5608556089
if (signature.declaration && signature.declaration.flags & 134217728) {
56086-
errorOrSuggestion(false, node, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
56090+
var suggestionNode = getDeprecatedSuggestionNode(node);
56091+
errorOrSuggestion(false, suggestionNode, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
56092+
}
56093+
}
56094+
function getDeprecatedSuggestionNode(node) {
56095+
node = ts.skipParentheses(node);
56096+
switch (node.kind) {
56097+
case 200:
56098+
case 160:
56099+
case 201:
56100+
return getDeprecatedSuggestionNode(node.expression);
56101+
case 202:
56102+
return getDeprecatedSuggestionNode(node.tag);
56103+
case 272:
56104+
case 271:
56105+
return getDeprecatedSuggestionNode(node.tagName);
56106+
case 199:
56107+
return node.argumentExpression;
56108+
case 198:
56109+
return node.name;
56110+
case 172:
56111+
var typeReference = node;
56112+
return ts.isQualifiedName(typeReference.typeName) ? typeReference.typeName.right : typeReference;
56113+
default:
56114+
return node;
5608756115
}
5608856116
}
5608956117
function isSymbolOrSymbolForCall(node) {
@@ -58848,8 +58876,7 @@ var ts;
5884858876
var symbol = getNodeLinks(node).resolvedSymbol;
5884958877
if (symbol) {
5885058878
if (ts.some(symbol.declarations, function (d) { return isTypeDeclaration(d) && !!(d.flags & 134217728); })) {
58851-
var diagLocation = ts.isTypeReferenceNode(node) && ts.isQualifiedName(node.typeName) ? node.typeName.right : node;
58852-
errorOrSuggestion(false, diagLocation, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
58879+
errorOrSuggestion(false, getDeprecatedSuggestionNode(node), ts.Diagnostics._0_is_deprecated, symbol.escapedName);
5885358880
}
5885458881
if (type.flags & 32 && symbol.flags & 8) {
5885558882
error(node, ts.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type));
@@ -62053,9 +62080,7 @@ var ts;
6205362080
&& !(node.flags & 8388608)) {
6205462081
error(node, ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type);
6205562082
}
62056-
if (ts.isImportSpecifier(node) &&
62057-
(target.valueDeclaration && target.valueDeclaration.flags & 134217728
62058-
|| ts.every(target.declarations, function (d) { return !!(d.flags & 134217728); }))) {
62083+
if (ts.isImportSpecifier(node) && ts.every(target.declarations, function (d) { return !!(ts.getCombinedNodeFlags(d) & 134217728); })) {
6205962084
errorOrSuggestion(false, node.name, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
6206062085
}
6206162086
}

‎lib/tsserver.js

+31-6
Original file line numberDiff line numberDiff line change
@@ -25446,6 +25446,10 @@ var ts;
2544625446
return node.kind === 178 /* TupleType */;
2544725447
}
2544825448
ts.isTupleTypeNode = isTupleTypeNode;
25449+
function isNamedTupleMember(node) {
25450+
return node.kind === 191 /* NamedTupleMember */;
25451+
}
25452+
ts.isNamedTupleMember = isNamedTupleMember;
2544925453
function isOptionalTypeNode(node) {
2545025454
return node.kind === 179 /* OptionalType */;
2545125455
}
@@ -67368,7 +67372,31 @@ var ts;
6736867372
}
6736967373
function checkDeprecatedSignature(signature, node) {
6737067374
if (signature.declaration && signature.declaration.flags & 134217728 /* Deprecated */) {
67371-
errorOrSuggestion(/*isError*/ false, node, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67375+
var suggestionNode = getDeprecatedSuggestionNode(node);
67376+
errorOrSuggestion(/*isError*/ false, suggestionNode, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67377+
}
67378+
}
67379+
function getDeprecatedSuggestionNode(node) {
67380+
node = ts.skipParentheses(node);
67381+
switch (node.kind) {
67382+
case 200 /* CallExpression */:
67383+
case 160 /* Decorator */:
67384+
case 201 /* NewExpression */:
67385+
return getDeprecatedSuggestionNode(node.expression);
67386+
case 202 /* TaggedTemplateExpression */:
67387+
return getDeprecatedSuggestionNode(node.tag);
67388+
case 272 /* JsxOpeningElement */:
67389+
case 271 /* JsxSelfClosingElement */:
67390+
return getDeprecatedSuggestionNode(node.tagName);
67391+
case 199 /* ElementAccessExpression */:
67392+
return node.argumentExpression;
67393+
case 198 /* PropertyAccessExpression */:
67394+
return node.name;
67395+
case 172 /* TypeReference */:
67396+
var typeReference = node;
67397+
return ts.isQualifiedName(typeReference.typeName) ? typeReference.typeName.right : typeReference;
67398+
default:
67399+
return node;
6737267400
}
6737367401
}
6737467402
function isSymbolOrSymbolForCall(node) {
@@ -70474,8 +70502,7 @@ var ts;
7047470502
var symbol = getNodeLinks(node).resolvedSymbol;
7047570503
if (symbol) {
7047670504
if (ts.some(symbol.declarations, function (d) { return isTypeDeclaration(d) && !!(d.flags & 134217728 /* Deprecated */); })) {
70477-
var diagLocation = ts.isTypeReferenceNode(node) && ts.isQualifiedName(node.typeName) ? node.typeName.right : node;
70478-
errorOrSuggestion(/* isError */ false, diagLocation, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
70505+
errorOrSuggestion(/* isError */ false, getDeprecatedSuggestionNode(node), ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7047970506
}
7048070507
if (type.flags & 32 /* Enum */ && symbol.flags & 8 /* EnumMember */) {
7048170508
error(node, ts.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type));
@@ -74372,9 +74399,7 @@ var ts;
7437274399
&& !(node.flags & 8388608 /* Ambient */)) {
7437374400
error(node, ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type);
7437474401
}
74375-
if (ts.isImportSpecifier(node) &&
74376-
(target.valueDeclaration && target.valueDeclaration.flags & 134217728 /* Deprecated */
74377-
|| ts.every(target.declarations, function (d) { return !!(d.flags & 134217728 /* Deprecated */); }))) {
74402+
if (ts.isImportSpecifier(node) && ts.every(target.declarations, function (d) { return !!(ts.getCombinedNodeFlags(d) & 134217728 /* Deprecated */); })) {
7437874403
errorOrSuggestion(/* isError */ false, node.name, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7437974404
}
7438074405
}

‎lib/tsserverlibrary.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4306,6 +4306,7 @@ declare namespace ts {
43064306
function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
43074307
function isArrayTypeNode(node: Node): node is ArrayTypeNode;
43084308
function isTupleTypeNode(node: Node): node is TupleTypeNode;
4309+
function isNamedTupleMember(node: Node): node is NamedTupleMember;
43094310
function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
43104311
function isRestTypeNode(node: Node): node is RestTypeNode;
43114312
function isUnionTypeNode(node: Node): node is UnionTypeNode;

‎lib/tsserverlibrary.js

+31-6
Original file line numberDiff line numberDiff line change
@@ -25640,6 +25640,10 @@ var ts;
2564025640
return node.kind === 178 /* TupleType */;
2564125641
}
2564225642
ts.isTupleTypeNode = isTupleTypeNode;
25643+
function isNamedTupleMember(node) {
25644+
return node.kind === 191 /* NamedTupleMember */;
25645+
}
25646+
ts.isNamedTupleMember = isNamedTupleMember;
2564325647
function isOptionalTypeNode(node) {
2564425648
return node.kind === 179 /* OptionalType */;
2564525649
}
@@ -67562,7 +67566,31 @@ var ts;
6756267566
}
6756367567
function checkDeprecatedSignature(signature, node) {
6756467568
if (signature.declaration && signature.declaration.flags & 134217728 /* Deprecated */) {
67565-
errorOrSuggestion(/*isError*/ false, node, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67569+
var suggestionNode = getDeprecatedSuggestionNode(node);
67570+
errorOrSuggestion(/*isError*/ false, suggestionNode, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67571+
}
67572+
}
67573+
function getDeprecatedSuggestionNode(node) {
67574+
node = ts.skipParentheses(node);
67575+
switch (node.kind) {
67576+
case 200 /* CallExpression */:
67577+
case 160 /* Decorator */:
67578+
case 201 /* NewExpression */:
67579+
return getDeprecatedSuggestionNode(node.expression);
67580+
case 202 /* TaggedTemplateExpression */:
67581+
return getDeprecatedSuggestionNode(node.tag);
67582+
case 272 /* JsxOpeningElement */:
67583+
case 271 /* JsxSelfClosingElement */:
67584+
return getDeprecatedSuggestionNode(node.tagName);
67585+
case 199 /* ElementAccessExpression */:
67586+
return node.argumentExpression;
67587+
case 198 /* PropertyAccessExpression */:
67588+
return node.name;
67589+
case 172 /* TypeReference */:
67590+
var typeReference = node;
67591+
return ts.isQualifiedName(typeReference.typeName) ? typeReference.typeName.right : typeReference;
67592+
default:
67593+
return node;
6756667594
}
6756767595
}
6756867596
function isSymbolOrSymbolForCall(node) {
@@ -70668,8 +70696,7 @@ var ts;
7066870696
var symbol = getNodeLinks(node).resolvedSymbol;
7066970697
if (symbol) {
7067070698
if (ts.some(symbol.declarations, function (d) { return isTypeDeclaration(d) && !!(d.flags & 134217728 /* Deprecated */); })) {
70671-
var diagLocation = ts.isTypeReferenceNode(node) && ts.isQualifiedName(node.typeName) ? node.typeName.right : node;
70672-
errorOrSuggestion(/* isError */ false, diagLocation, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
70699+
errorOrSuggestion(/* isError */ false, getDeprecatedSuggestionNode(node), ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7067370700
}
7067470701
if (type.flags & 32 /* Enum */ && symbol.flags & 8 /* EnumMember */) {
7067570702
error(node, ts.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type));
@@ -74566,9 +74593,7 @@ var ts;
7456674593
&& !(node.flags & 8388608 /* Ambient */)) {
7456774594
error(node, ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type);
7456874595
}
74569-
if (ts.isImportSpecifier(node) &&
74570-
(target.valueDeclaration && target.valueDeclaration.flags & 134217728 /* Deprecated */
74571-
|| ts.every(target.declarations, function (d) { return !!(d.flags & 134217728 /* Deprecated */); }))) {
74596+
if (ts.isImportSpecifier(node) && ts.every(target.declarations, function (d) { return !!(ts.getCombinedNodeFlags(d) & 134217728 /* Deprecated */); })) {
7457274597
errorOrSuggestion(/* isError */ false, node.name, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7457374598
}
7457474599
}

‎lib/typescript.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4306,6 +4306,7 @@ declare namespace ts {
43064306
function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
43074307
function isArrayTypeNode(node: Node): node is ArrayTypeNode;
43084308
function isTupleTypeNode(node: Node): node is TupleTypeNode;
4309+
function isNamedTupleMember(node: Node): node is NamedTupleMember;
43094310
function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
43104311
function isRestTypeNode(node: Node): node is RestTypeNode;
43114312
function isUnionTypeNode(node: Node): node is UnionTypeNode;

‎lib/typescript.js

+31-6
Original file line numberDiff line numberDiff line change
@@ -25640,6 +25640,10 @@ var ts;
2564025640
return node.kind === 178 /* TupleType */;
2564125641
}
2564225642
ts.isTupleTypeNode = isTupleTypeNode;
25643+
function isNamedTupleMember(node) {
25644+
return node.kind === 191 /* NamedTupleMember */;
25645+
}
25646+
ts.isNamedTupleMember = isNamedTupleMember;
2564325647
function isOptionalTypeNode(node) {
2564425648
return node.kind === 179 /* OptionalType */;
2564525649
}
@@ -67562,7 +67566,31 @@ var ts;
6756267566
}
6756367567
function checkDeprecatedSignature(signature, node) {
6756467568
if (signature.declaration && signature.declaration.flags & 134217728 /* Deprecated */) {
67565-
errorOrSuggestion(/*isError*/ false, node, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67569+
var suggestionNode = getDeprecatedSuggestionNode(node);
67570+
errorOrSuggestion(/*isError*/ false, suggestionNode, ts.Diagnostics._0_is_deprecated, signatureToString(signature));
67571+
}
67572+
}
67573+
function getDeprecatedSuggestionNode(node) {
67574+
node = ts.skipParentheses(node);
67575+
switch (node.kind) {
67576+
case 200 /* CallExpression */:
67577+
case 160 /* Decorator */:
67578+
case 201 /* NewExpression */:
67579+
return getDeprecatedSuggestionNode(node.expression);
67580+
case 202 /* TaggedTemplateExpression */:
67581+
return getDeprecatedSuggestionNode(node.tag);
67582+
case 272 /* JsxOpeningElement */:
67583+
case 271 /* JsxSelfClosingElement */:
67584+
return getDeprecatedSuggestionNode(node.tagName);
67585+
case 199 /* ElementAccessExpression */:
67586+
return node.argumentExpression;
67587+
case 198 /* PropertyAccessExpression */:
67588+
return node.name;
67589+
case 172 /* TypeReference */:
67590+
var typeReference = node;
67591+
return ts.isQualifiedName(typeReference.typeName) ? typeReference.typeName.right : typeReference;
67592+
default:
67593+
return node;
6756667594
}
6756767595
}
6756867596
function isSymbolOrSymbolForCall(node) {
@@ -70668,8 +70696,7 @@ var ts;
7066870696
var symbol = getNodeLinks(node).resolvedSymbol;
7066970697
if (symbol) {
7067070698
if (ts.some(symbol.declarations, function (d) { return isTypeDeclaration(d) && !!(d.flags & 134217728 /* Deprecated */); })) {
70671-
var diagLocation = ts.isTypeReferenceNode(node) && ts.isQualifiedName(node.typeName) ? node.typeName.right : node;
70672-
errorOrSuggestion(/* isError */ false, diagLocation, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
70699+
errorOrSuggestion(/* isError */ false, getDeprecatedSuggestionNode(node), ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7067370700
}
7067470701
if (type.flags & 32 /* Enum */ && symbol.flags & 8 /* EnumMember */) {
7067570702
error(node, ts.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type));
@@ -74566,9 +74593,7 @@ var ts;
7456674593
&& !(node.flags & 8388608 /* Ambient */)) {
7456774594
error(node, ts.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type);
7456874595
}
74569-
if (ts.isImportSpecifier(node) &&
74570-
(target.valueDeclaration && target.valueDeclaration.flags & 134217728 /* Deprecated */
74571-
|| ts.every(target.declarations, function (d) { return !!(d.flags & 134217728 /* Deprecated */); }))) {
74596+
if (ts.isImportSpecifier(node) && ts.every(target.declarations, function (d) { return !!(ts.getCombinedNodeFlags(d) & 134217728 /* Deprecated */); })) {
7457274597
errorOrSuggestion(/* isError */ false, node.name, ts.Diagnostics._0_is_deprecated, symbol.escapedName);
7457374598
}
7457474599
}

‎lib/typescriptServices.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4306,6 +4306,7 @@ declare namespace ts {
43064306
function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
43074307
function isArrayTypeNode(node: Node): node is ArrayTypeNode;
43084308
function isTupleTypeNode(node: Node): node is TupleTypeNode;
4309+
function isNamedTupleMember(node: Node): node is NamedTupleMember;
43094310
function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
43104311
function isRestTypeNode(node: Node): node is RestTypeNode;
43114312
function isUnionTypeNode(node: Node): node is UnionTypeNode;

0 commit comments

Comments
 (0)