typescript 4.9.0-dev.20220920 → 4.9.0-dev.20220921
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/tsc.js +151 -72
- package/lib/tsserver.js +322 -126
- package/lib/tsserverlibrary.js +322 -126
- package/lib/typescript.js +322 -126
- package/lib/typescriptServices.js +322 -126
- package/lib/typingsInstaller.js +157 -73
- package/package.json +1 -1
package/lib/tsserver.js
CHANGED
|
@@ -109,7 +109,7 @@ var ts;
|
|
|
109
109
|
// The following is baselined as a literal template type without intervention
|
|
110
110
|
/** The version of the TypeScript compiler release */
|
|
111
111
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
112
|
-
ts.version = "".concat(ts.versionMajorMinor, ".0-dev.
|
|
112
|
+
ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220921");
|
|
113
113
|
/* @internal */
|
|
114
114
|
var Comparison;
|
|
115
115
|
(function (Comparison) {
|
|
@@ -3018,7 +3018,7 @@ var ts;
|
|
|
3018
3018
|
];
|
|
3019
3019
|
for (var _i = 0, nodeConstructors_1 = nodeConstructors; _i < nodeConstructors_1.length; _i++) {
|
|
3020
3020
|
var ctor = nodeConstructors_1[_i];
|
|
3021
|
-
if (!ts.hasProperty(ctor, "__debugKind")) {
|
|
3021
|
+
if (!ts.hasProperty(ctor.prototype, "__debugKind")) {
|
|
3022
3022
|
Object.defineProperties(ctor.prototype, {
|
|
3023
3023
|
// for use with vscode-js-debug's new customDescriptionGenerator in launch.json
|
|
3024
3024
|
__tsDebuggerDisplay: {
|
|
@@ -9133,6 +9133,7 @@ var ts;
|
|
|
9133
9133
|
_0_is_an_unused_renaming_of_1_Did_you_intend_to_use_it_as_a_type_annotation: diag(2842, ts.DiagnosticCategory.Error, "_0_is_an_unused_renaming_of_1_Did_you_intend_to_use_it_as_a_type_annotation_2842", "'{0}' is an unused renaming of '{1}'. Did you intend to use it as a type annotation?"),
|
|
9134
9134
|
We_can_only_write_a_type_for_0_by_adding_a_type_for_the_entire_parameter_here: diag(2843, ts.DiagnosticCategory.Error, "We_can_only_write_a_type_for_0_by_adding_a_type_for_the_entire_parameter_here_2843", "We can only write a type for '{0}' by adding a type for the entire parameter here."),
|
|
9135
9135
|
Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: diag(2844, ts.DiagnosticCategory.Error, "Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2844", "Type of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor."),
|
|
9136
|
+
This_condition_will_always_return_0: diag(2845, ts.DiagnosticCategory.Error, "This_condition_will_always_return_0_2845", "This condition will always return '{0}'."),
|
|
9136
9137
|
Import_declaration_0_is_using_private_name_1: diag(4000, ts.DiagnosticCategory.Error, "Import_declaration_0_is_using_private_name_1_4000", "Import declaration '{0}' is using private name '{1}'."),
|
|
9137
9138
|
Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: diag(4002, ts.DiagnosticCategory.Error, "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", "Type parameter '{0}' of exported class has or is using private name '{1}'."),
|
|
9138
9139
|
Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: diag(4004, ts.DiagnosticCategory.Error, "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", "Type parameter '{0}' of exported interface has or is using private name '{1}'."),
|
|
@@ -10075,6 +10076,8 @@ var ts;
|
|
|
10075
10076
|
Delete_unused_param_tag_0: diag(95171, ts.DiagnosticCategory.Message, "Delete_unused_param_tag_0_95171", "Delete unused '@param' tag '{0}'"),
|
|
10076
10077
|
Delete_all_unused_param_tags: diag(95172, ts.DiagnosticCategory.Message, "Delete_all_unused_param_tags_95172", "Delete all unused '@param' tags"),
|
|
10077
10078
|
Rename_param_tag_name_0_to_1: diag(95173, ts.DiagnosticCategory.Message, "Rename_param_tag_name_0_to_1_95173", "Rename '@param' tag name '{0}' to '{1}'"),
|
|
10079
|
+
Use_0: diag(95174, ts.DiagnosticCategory.Message, "Use_0_95174", "Use `{0}`."),
|
|
10080
|
+
Use_Number_isNaN_in_all_conditions: diag(95175, ts.DiagnosticCategory.Message, "Use_Number_isNaN_in_all_conditions_95175", "Use `Number.isNaN` in all conditions."),
|
|
10078
10081
|
No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: diag(18004, ts.DiagnosticCategory.Error, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."),
|
|
10079
10082
|
Classes_may_not_have_a_field_named_constructor: diag(18006, ts.DiagnosticCategory.Error, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."),
|
|
10080
10083
|
JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: diag(18007, ts.DiagnosticCategory.Error, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"),
|
|
@@ -11897,12 +11900,36 @@ var ts;
|
|
|
11897
11900
|
pos++;
|
|
11898
11901
|
return token = 0 /* SyntaxKind.Unknown */;
|
|
11899
11902
|
}
|
|
11900
|
-
|
|
11903
|
+
var charAfterHash = codePointAt(text, pos + 1);
|
|
11904
|
+
if (charAfterHash === 92 /* CharacterCodes.backslash */) {
|
|
11901
11905
|
pos++;
|
|
11902
|
-
|
|
11906
|
+
var extendedCookedChar_1 = peekExtendedUnicodeEscape();
|
|
11907
|
+
if (extendedCookedChar_1 >= 0 && isIdentifierStart(extendedCookedChar_1, languageVersion)) {
|
|
11908
|
+
pos += 3;
|
|
11909
|
+
tokenFlags |= 8 /* TokenFlags.ExtendedUnicodeEscape */;
|
|
11910
|
+
tokenValue = "#" + scanExtendedUnicodeEscape() + scanIdentifierParts();
|
|
11911
|
+
return token = 80 /* SyntaxKind.PrivateIdentifier */;
|
|
11912
|
+
}
|
|
11913
|
+
var cookedChar_1 = peekUnicodeEscape();
|
|
11914
|
+
if (cookedChar_1 >= 0 && isIdentifierStart(cookedChar_1, languageVersion)) {
|
|
11915
|
+
pos += 6;
|
|
11916
|
+
tokenFlags |= 1024 /* TokenFlags.UnicodeEscape */;
|
|
11917
|
+
tokenValue = "#" + String.fromCharCode(cookedChar_1) + scanIdentifierParts();
|
|
11918
|
+
return token = 80 /* SyntaxKind.PrivateIdentifier */;
|
|
11919
|
+
}
|
|
11920
|
+
pos--;
|
|
11921
|
+
}
|
|
11922
|
+
if (isIdentifierStart(charAfterHash, languageVersion)) {
|
|
11923
|
+
pos++;
|
|
11924
|
+
// We're relying on scanIdentifier's behavior and adjusting the token kind after the fact.
|
|
11925
|
+
// Notably absent from this block is the fact that calling a function named "scanIdentifier",
|
|
11926
|
+
// but identifiers don't include '#', and that function doesn't deal with it at all.
|
|
11927
|
+
// This works because 'scanIdentifier' tries to reuse source characters and builds up substrings;
|
|
11928
|
+
// however, it starts at the 'tokenPos' which includes the '#', and will "accidentally" prepend the '#' for us.
|
|
11929
|
+
scanIdentifier(charAfterHash, languageVersion);
|
|
11903
11930
|
}
|
|
11904
11931
|
else {
|
|
11905
|
-
tokenValue =
|
|
11932
|
+
tokenValue = "#";
|
|
11906
11933
|
error(ts.Diagnostics.Invalid_character, pos++, charSize(ch));
|
|
11907
11934
|
}
|
|
11908
11935
|
return token = 80 /* SyntaxKind.PrivateIdentifier */;
|
|
@@ -33140,7 +33167,7 @@ var ts;
|
|
|
33140
33167
|
}
|
|
33141
33168
|
function parsePrivateIdentifier() {
|
|
33142
33169
|
var pos = getNodePos();
|
|
33143
|
-
var node = factory.createPrivateIdentifier(internPrivateIdentifier(scanner.
|
|
33170
|
+
var node = factory.createPrivateIdentifier(internPrivateIdentifier(scanner.getTokenValue()));
|
|
33144
33171
|
nextToken();
|
|
33145
33172
|
return finishNode(node, pos);
|
|
33146
33173
|
}
|
|
@@ -49773,6 +49800,7 @@ var ts;
|
|
|
49773
49800
|
var deferredGlobalOmitSymbol;
|
|
49774
49801
|
var deferredGlobalAwaitedSymbol;
|
|
49775
49802
|
var deferredGlobalBigIntType;
|
|
49803
|
+
var deferredGlobalNaNSymbol;
|
|
49776
49804
|
var deferredGlobalRecordSymbol;
|
|
49777
49805
|
var allPotentiallyUnusedIdentifiers = new ts.Map(); // key is file name
|
|
49778
49806
|
var flowLoopStart = 0;
|
|
@@ -60261,7 +60289,7 @@ var ts;
|
|
|
60261
60289
|
var isInstantiation = (getTargetSymbol(prop) || prop) === (getTargetSymbol(singleProp) || singleProp);
|
|
60262
60290
|
// If the symbols are instances of one another with identical types - consider the symbols
|
|
60263
60291
|
// equivalent and just use the first one, which thus allows us to avoid eliding private
|
|
60264
|
-
// members when intersecting a (this-)instantiations of a class with
|
|
60292
|
+
// members when intersecting a (this-)instantiations of a class with its raw base or another instance
|
|
60265
60293
|
if (isInstantiation && compareProperties(singleProp, prop, function (a, b) { return a === b ? -1 /* Ternary.True */ : 0 /* Ternary.False */; }) === -1 /* Ternary.True */) {
|
|
60266
60294
|
// If we merged instantiations of a generic type, we replicate the symbol parent resetting behavior we used
|
|
60267
60295
|
// to do when we recorded multiple distinct symbols so that we still get, eg, `Array<T>.length` printed
|
|
@@ -60309,7 +60337,11 @@ var ts;
|
|
|
60309
60337
|
}
|
|
60310
60338
|
}
|
|
60311
60339
|
}
|
|
60312
|
-
if (!singleProp ||
|
|
60340
|
+
if (!singleProp ||
|
|
60341
|
+
isUnion &&
|
|
60342
|
+
(propSet || checkFlags & 48 /* CheckFlags.Partial */) &&
|
|
60343
|
+
checkFlags & (1024 /* CheckFlags.ContainsPrivate */ | 512 /* CheckFlags.ContainsProtected */) &&
|
|
60344
|
+
!(propSet && getCommonDeclarationsOfSymbols(ts.arrayFrom(propSet.values())))) {
|
|
60313
60345
|
// No property was found, or, in a union, a property has a private or protected declaration in one
|
|
60314
60346
|
// constituent, but is missing or has a different declaration in another constituent.
|
|
60315
60347
|
return undefined;
|
|
@@ -60411,6 +60443,33 @@ var ts;
|
|
|
60411
60443
|
}
|
|
60412
60444
|
return property;
|
|
60413
60445
|
}
|
|
60446
|
+
function getCommonDeclarationsOfSymbols(symbols) {
|
|
60447
|
+
var commonDeclarations;
|
|
60448
|
+
var _loop_14 = function (symbol) {
|
|
60449
|
+
if (!symbol.declarations) {
|
|
60450
|
+
return { value: undefined };
|
|
60451
|
+
}
|
|
60452
|
+
if (!commonDeclarations) {
|
|
60453
|
+
commonDeclarations = new ts.Set(symbol.declarations);
|
|
60454
|
+
return "continue";
|
|
60455
|
+
}
|
|
60456
|
+
commonDeclarations.forEach(function (declaration) {
|
|
60457
|
+
if (!ts.contains(symbol.declarations, declaration)) {
|
|
60458
|
+
commonDeclarations.delete(declaration);
|
|
60459
|
+
}
|
|
60460
|
+
});
|
|
60461
|
+
if (commonDeclarations.size === 0) {
|
|
60462
|
+
return { value: undefined };
|
|
60463
|
+
}
|
|
60464
|
+
};
|
|
60465
|
+
for (var _i = 0, symbols_3 = symbols; _i < symbols_3.length; _i++) {
|
|
60466
|
+
var symbol = symbols_3[_i];
|
|
60467
|
+
var state_4 = _loop_14(symbol);
|
|
60468
|
+
if (typeof state_4 === "object")
|
|
60469
|
+
return state_4.value;
|
|
60470
|
+
}
|
|
60471
|
+
return commonDeclarations;
|
|
60472
|
+
}
|
|
60414
60473
|
function getPropertyOfUnionOrIntersectionType(type, name, skipObjectFunctionPropertyAugment) {
|
|
60415
60474
|
var property = getUnionOrIntersectionProperty(type, name, skipObjectFunctionPropertyAugment);
|
|
60416
60475
|
// We need to filter out partial properties in union types
|
|
@@ -61125,7 +61184,7 @@ var ts;
|
|
|
61125
61184
|
function getIndexInfosOfIndexSymbol(indexSymbol) {
|
|
61126
61185
|
if (indexSymbol.declarations) {
|
|
61127
61186
|
var indexInfos_4 = [];
|
|
61128
|
-
var
|
|
61187
|
+
var _loop_15 = function (declaration) {
|
|
61129
61188
|
if (declaration.parameters.length === 1) {
|
|
61130
61189
|
var parameter = declaration.parameters[0];
|
|
61131
61190
|
if (parameter.type) {
|
|
@@ -61139,7 +61198,7 @@ var ts;
|
|
|
61139
61198
|
};
|
|
61140
61199
|
for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) {
|
|
61141
61200
|
var declaration = _a[_i];
|
|
61142
|
-
|
|
61201
|
+
_loop_15(declaration);
|
|
61143
61202
|
}
|
|
61144
61203
|
return indexInfos_4;
|
|
61145
61204
|
}
|
|
@@ -61156,7 +61215,7 @@ var ts;
|
|
|
61156
61215
|
var _a;
|
|
61157
61216
|
var inferences;
|
|
61158
61217
|
if ((_a = typeParameter.symbol) === null || _a === void 0 ? void 0 : _a.declarations) {
|
|
61159
|
-
var
|
|
61218
|
+
var _loop_16 = function (declaration) {
|
|
61160
61219
|
if (declaration.parent.kind === 192 /* SyntaxKind.InferType */) {
|
|
61161
61220
|
// When an 'infer T' declaration is immediately contained in a type reference node
|
|
61162
61221
|
// (such as 'Foo<infer T>'), T's constraint is inferred from the constraint of the
|
|
@@ -61220,7 +61279,7 @@ var ts;
|
|
|
61220
61279
|
};
|
|
61221
61280
|
for (var _i = 0, _b = typeParameter.symbol.declarations; _i < _b.length; _i++) {
|
|
61222
61281
|
var declaration = _b[_i];
|
|
61223
|
-
|
|
61282
|
+
_loop_16(declaration);
|
|
61224
61283
|
}
|
|
61225
61284
|
}
|
|
61226
61285
|
return inferences && getIntersectionType(inferences);
|
|
@@ -61877,6 +61936,9 @@ var ts;
|
|
|
61877
61936
|
function getGlobalBigIntType() {
|
|
61878
61937
|
return (deferredGlobalBigIntType || (deferredGlobalBigIntType = getGlobalType("BigInt", /*arity*/ 0, /*reportErrors*/ false))) || emptyObjectType;
|
|
61879
61938
|
}
|
|
61939
|
+
function getGlobalNaNSymbol() {
|
|
61940
|
+
return (deferredGlobalNaNSymbol || (deferredGlobalNaNSymbol = getGlobalValueSymbol("NaN", /*reportErrors*/ false)));
|
|
61941
|
+
}
|
|
61880
61942
|
function getGlobalRecordSymbol() {
|
|
61881
61943
|
deferredGlobalRecordSymbol || (deferredGlobalRecordSymbol = getGlobalTypeAliasSymbol("Record", /*arity*/ 2, /*reportErrors*/ true) || unknownSymbol);
|
|
61882
61944
|
return deferredGlobalRecordSymbol === unknownSymbol ? undefined : deferredGlobalRecordSymbol;
|
|
@@ -62117,7 +62179,7 @@ var ts;
|
|
|
62117
62179
|
var lastRequiredIndex = -1;
|
|
62118
62180
|
var firstRestIndex = -1;
|
|
62119
62181
|
var lastOptionalOrRestIndex = -1;
|
|
62120
|
-
var
|
|
62182
|
+
var _loop_17 = function (i) {
|
|
62121
62183
|
var type = elementTypes[i];
|
|
62122
62184
|
var flags = target.elementFlags[i];
|
|
62123
62185
|
if (flags & 8 /* ElementFlags.Variadic */) {
|
|
@@ -62147,9 +62209,9 @@ var ts;
|
|
|
62147
62209
|
}
|
|
62148
62210
|
};
|
|
62149
62211
|
for (var i = 0; i < elementTypes.length; i++) {
|
|
62150
|
-
var
|
|
62151
|
-
if (typeof
|
|
62152
|
-
return
|
|
62212
|
+
var state_5 = _loop_17(i);
|
|
62213
|
+
if (typeof state_5 === "object")
|
|
62214
|
+
return state_5.value;
|
|
62153
62215
|
}
|
|
62154
62216
|
// Turn optional elements preceding the last required element into required elements
|
|
62155
62217
|
for (var i = 0; i < lastRequiredIndex; i++) {
|
|
@@ -62177,7 +62239,7 @@ var ts;
|
|
|
62177
62239
|
if (flags & (2 /* ElementFlags.Optional */ | 4 /* ElementFlags.Rest */)) {
|
|
62178
62240
|
lastOptionalOrRestIndex = expandedFlags.length;
|
|
62179
62241
|
}
|
|
62180
|
-
expandedTypes.push(type);
|
|
62242
|
+
expandedTypes.push(flags & 2 /* ElementFlags.Optional */ ? addOptionality(type, /*isProperty*/ true) : type);
|
|
62181
62243
|
expandedFlags.push(flags);
|
|
62182
62244
|
if (expandedDeclarations && declaration) {
|
|
62183
62245
|
expandedDeclarations.push(declaration);
|
|
@@ -62343,7 +62405,7 @@ var ts;
|
|
|
62343
62405
|
var templates = ts.filter(types, isPatternLiteralType);
|
|
62344
62406
|
if (templates.length) {
|
|
62345
62407
|
var i = types.length;
|
|
62346
|
-
var
|
|
62408
|
+
var _loop_18 = function () {
|
|
62347
62409
|
i--;
|
|
62348
62410
|
var t = types[i];
|
|
62349
62411
|
if (t.flags & 128 /* TypeFlags.StringLiteral */ && ts.some(templates, function (template) { return isTypeMatchedByTemplateLiteralType(t, template); })) {
|
|
@@ -62351,7 +62413,7 @@ var ts;
|
|
|
62351
62413
|
}
|
|
62352
62414
|
};
|
|
62353
62415
|
while (i > 0) {
|
|
62354
|
-
|
|
62416
|
+
_loop_18();
|
|
62355
62417
|
}
|
|
62356
62418
|
}
|
|
62357
62419
|
}
|
|
@@ -62428,14 +62490,14 @@ var ts;
|
|
|
62428
62490
|
var namedUnions = [];
|
|
62429
62491
|
addNamedUnions(namedUnions, types);
|
|
62430
62492
|
var reducedTypes = [];
|
|
62431
|
-
var
|
|
62493
|
+
var _loop_19 = function (t) {
|
|
62432
62494
|
if (!ts.some(namedUnions, function (union) { return containsType(union.types, t); })) {
|
|
62433
62495
|
reducedTypes.push(t);
|
|
62434
62496
|
}
|
|
62435
62497
|
};
|
|
62436
62498
|
for (var _i = 0, typeSet_1 = typeSet; _i < typeSet_1.length; _i++) {
|
|
62437
62499
|
var t = typeSet_1[_i];
|
|
62438
|
-
|
|
62500
|
+
_loop_19(t);
|
|
62439
62501
|
}
|
|
62440
62502
|
if (!aliasSymbol && namedUnions.length === 1 && reducedTypes.length === 0) {
|
|
62441
62503
|
return namedUnions[0];
|
|
@@ -63665,7 +63727,7 @@ var ts;
|
|
|
63665
63727
|
var result;
|
|
63666
63728
|
var extraTypes;
|
|
63667
63729
|
var tailCount = 0;
|
|
63668
|
-
var
|
|
63730
|
+
var _loop_20 = function () {
|
|
63669
63731
|
if (tailCount === 1000) {
|
|
63670
63732
|
error(currentNode, ts.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite);
|
|
63671
63733
|
result = errorType;
|
|
@@ -63786,10 +63848,10 @@ var ts;
|
|
|
63786
63848
|
// another (or, through recursion, possibly the same) conditional type. In the potentially tail-recursive
|
|
63787
63849
|
// cases we increment the tail recursion counter and stop after 1000 iterations.
|
|
63788
63850
|
while (true) {
|
|
63789
|
-
var
|
|
63790
|
-
if (typeof
|
|
63791
|
-
return
|
|
63792
|
-
if (
|
|
63851
|
+
var state_6 = _loop_20();
|
|
63852
|
+
if (typeof state_6 === "object")
|
|
63853
|
+
return state_6.value;
|
|
63854
|
+
if (state_6 === "break")
|
|
63793
63855
|
break;
|
|
63794
63856
|
}
|
|
63795
63857
|
return extraTypes ? getUnionType(ts.append(extraTypes, result)) : result;
|
|
@@ -66404,7 +66466,7 @@ var ts;
|
|
|
66404
66466
|
reducedTarget = findMatchingDiscriminantType(source, target, isRelatedTo) || filterPrimitivesIfContainsNonPrimitive(target);
|
|
66405
66467
|
checkTypes = reducedTarget.flags & 1048576 /* TypeFlags.Union */ ? reducedTarget.types : [reducedTarget];
|
|
66406
66468
|
}
|
|
66407
|
-
var
|
|
66469
|
+
var _loop_21 = function (prop) {
|
|
66408
66470
|
if (shouldCheckAsExcessProperty(prop, source.symbol) && !isIgnoredJsxProperty(source, prop)) {
|
|
66409
66471
|
if (!isKnownProperty(reducedTarget, prop.escapedName, isComparingJsxAttributes)) {
|
|
66410
66472
|
if (reportErrors) {
|
|
@@ -66467,9 +66529,9 @@ var ts;
|
|
|
66467
66529
|
};
|
|
66468
66530
|
for (var _i = 0, _b = getPropertiesOfType(source); _i < _b.length; _i++) {
|
|
66469
66531
|
var prop = _b[_i];
|
|
66470
|
-
var
|
|
66471
|
-
if (typeof
|
|
66472
|
-
return
|
|
66532
|
+
var state_7 = _loop_21(prop);
|
|
66533
|
+
if (typeof state_7 === "object")
|
|
66534
|
+
return state_7.value;
|
|
66473
66535
|
}
|
|
66474
66536
|
return false;
|
|
66475
66537
|
}
|
|
@@ -67460,11 +67522,11 @@ var ts;
|
|
|
67460
67522
|
// constituents of 'target'. If any combination does not have a match then 'source' is not relatable.
|
|
67461
67523
|
var discriminantCombinations = ts.cartesianProduct(sourceDiscriminantTypes);
|
|
67462
67524
|
var matchingTypes = [];
|
|
67463
|
-
var
|
|
67525
|
+
var _loop_22 = function (combination) {
|
|
67464
67526
|
var hasMatch = false;
|
|
67465
67527
|
outer: for (var _c = 0, _d = target.types; _c < _d.length; _c++) {
|
|
67466
67528
|
var type = _d[_c];
|
|
67467
|
-
var
|
|
67529
|
+
var _loop_23 = function (i) {
|
|
67468
67530
|
var sourceProperty = sourcePropertiesFiltered[i];
|
|
67469
67531
|
var targetProperty = getPropertyOfType(type, sourceProperty.escapedName);
|
|
67470
67532
|
if (!targetProperty)
|
|
@@ -67480,8 +67542,8 @@ var ts;
|
|
|
67480
67542
|
}
|
|
67481
67543
|
};
|
|
67482
67544
|
for (var i = 0; i < sourcePropertiesFiltered.length; i++) {
|
|
67483
|
-
var
|
|
67484
|
-
switch (
|
|
67545
|
+
var state_9 = _loop_23(i);
|
|
67546
|
+
switch (state_9) {
|
|
67485
67547
|
case "continue-outer": continue outer;
|
|
67486
67548
|
}
|
|
67487
67549
|
}
|
|
@@ -67494,9 +67556,9 @@ var ts;
|
|
|
67494
67556
|
};
|
|
67495
67557
|
for (var _a = 0, discriminantCombinations_1 = discriminantCombinations; _a < discriminantCombinations_1.length; _a++) {
|
|
67496
67558
|
var combination = discriminantCombinations_1[_a];
|
|
67497
|
-
var
|
|
67498
|
-
if (typeof
|
|
67499
|
-
return
|
|
67559
|
+
var state_8 = _loop_22(combination);
|
|
67560
|
+
if (typeof state_8 === "object")
|
|
67561
|
+
return state_8.value;
|
|
67500
67562
|
}
|
|
67501
67563
|
// Compare the remaining non-discriminant properties of each match.
|
|
67502
67564
|
var result = -1 /* Ternary.True */;
|
|
@@ -68201,7 +68263,7 @@ var ts;
|
|
|
68201
68263
|
ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.push("checkTypes" /* tracing.Phase.CheckTypes */, "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
|
|
68202
68264
|
links.variances = ts.emptyArray;
|
|
68203
68265
|
var variances = [];
|
|
68204
|
-
var
|
|
68266
|
+
var _loop_24 = function (tp) {
|
|
68205
68267
|
var modifiers = getVarianceModifiers(tp);
|
|
68206
68268
|
var variance = modifiers & 65536 /* ModifierFlags.Out */ ?
|
|
68207
68269
|
modifiers & 32768 /* ModifierFlags.In */ ? 0 /* VarianceFlags.Invariant */ : 1 /* VarianceFlags.Covariant */ :
|
|
@@ -68239,7 +68301,7 @@ var ts;
|
|
|
68239
68301
|
};
|
|
68240
68302
|
for (var _i = 0, typeParameters_2 = typeParameters; _i < typeParameters_2.length; _i++) {
|
|
68241
68303
|
var tp = typeParameters_2[_i];
|
|
68242
|
-
|
|
68304
|
+
_loop_24(tp);
|
|
68243
68305
|
}
|
|
68244
68306
|
links.variances = variances;
|
|
68245
68307
|
ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.pop({ variances: variances.map(ts.Debug.formatVariance) });
|
|
@@ -68831,7 +68893,8 @@ var ts;
|
|
|
68831
68893
|
function getOptionalType(type, isProperty) {
|
|
68832
68894
|
if (isProperty === void 0) { isProperty = false; }
|
|
68833
68895
|
ts.Debug.assert(strictNullChecks);
|
|
68834
|
-
|
|
68896
|
+
var missingOrUndefined = isProperty ? missingType : undefinedType;
|
|
68897
|
+
return type.flags & 32768 /* TypeFlags.Undefined */ || type.flags & 1048576 /* TypeFlags.Union */ && type.types[0] === missingOrUndefined ? type : getUnionType([type, missingOrUndefined]);
|
|
68835
68898
|
}
|
|
68836
68899
|
function getGlobalNonNullableTypeInstantiation(type) {
|
|
68837
68900
|
if (!deferredGlobalNonNullableTypeAlias) {
|
|
@@ -70196,7 +70259,7 @@ var ts;
|
|
|
70196
70259
|
// upon instantiation, would collapse all the placeholders to just 'string', and an assignment check might
|
|
70197
70260
|
// succeed. That would be a pointless and confusing outcome.
|
|
70198
70261
|
if (matches || ts.every(target.texts, function (s) { return s.length === 0; })) {
|
|
70199
|
-
var
|
|
70262
|
+
var _loop_25 = function (i) {
|
|
70200
70263
|
var source_1 = matches ? matches[i] : neverType;
|
|
70201
70264
|
var target_3 = types[i];
|
|
70202
70265
|
// If we are inferring from a string literal type to a type variable whose constraint includes one of the
|
|
@@ -70246,7 +70309,7 @@ var ts;
|
|
|
70246
70309
|
inferFromTypes(source_1, target_3);
|
|
70247
70310
|
};
|
|
70248
70311
|
for (var i = 0; i < types.length; i++) {
|
|
70249
|
-
|
|
70312
|
+
_loop_25(i);
|
|
70250
70313
|
}
|
|
70251
70314
|
}
|
|
70252
70315
|
}
|
|
@@ -70710,7 +70773,7 @@ var ts;
|
|
|
70710
70773
|
return name;
|
|
70711
70774
|
}
|
|
70712
70775
|
}
|
|
70713
|
-
if (ts.hasOnlyExpressionInitializer(declaration)) {
|
|
70776
|
+
if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
|
|
70714
70777
|
var initializer = ts.getEffectiveInitializer(declaration);
|
|
70715
70778
|
return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
|
|
70716
70779
|
}
|
|
@@ -70770,7 +70833,7 @@ var ts;
|
|
|
70770
70833
|
function mapTypesByKeyProperty(types, name) {
|
|
70771
70834
|
var map = new ts.Map();
|
|
70772
70835
|
var count = 0;
|
|
70773
|
-
var
|
|
70836
|
+
var _loop_26 = function (type) {
|
|
70774
70837
|
if (type.flags & (524288 /* TypeFlags.Object */ | 2097152 /* TypeFlags.Intersection */ | 58982400 /* TypeFlags.InstantiableNonPrimitive */)) {
|
|
70775
70838
|
var discriminant = getTypeOfPropertyOfType(type, name);
|
|
70776
70839
|
if (discriminant) {
|
|
@@ -70796,9 +70859,9 @@ var ts;
|
|
|
70796
70859
|
};
|
|
70797
70860
|
for (var _i = 0, types_15 = types; _i < types_15.length; _i++) {
|
|
70798
70861
|
var type = types_15[_i];
|
|
70799
|
-
var
|
|
70800
|
-
if (typeof
|
|
70801
|
-
return
|
|
70862
|
+
var state_10 = _loop_26(type);
|
|
70863
|
+
if (typeof state_10 === "object")
|
|
70864
|
+
return state_10.value;
|
|
70802
70865
|
}
|
|
70803
70866
|
return count >= 10 && count * 2 >= types.length ? map : undefined;
|
|
70804
70867
|
}
|
|
@@ -77253,7 +77316,7 @@ var ts;
|
|
|
77253
77316
|
if (spreadIndex >= 0) {
|
|
77254
77317
|
// Create synthetic arguments from spreads of tuple types.
|
|
77255
77318
|
var effectiveArgs_1 = args.slice(0, spreadIndex);
|
|
77256
|
-
var
|
|
77319
|
+
var _loop_27 = function (i) {
|
|
77257
77320
|
var arg = args[i];
|
|
77258
77321
|
// We can call checkExpressionCached because spread expressions never have a contextual type.
|
|
77259
77322
|
var spreadType = arg.kind === 227 /* SyntaxKind.SpreadElement */ && (flowLoopCount ? checkExpression(arg.expression) : checkExpressionCached(arg.expression));
|
|
@@ -77270,7 +77333,7 @@ var ts;
|
|
|
77270
77333
|
}
|
|
77271
77334
|
};
|
|
77272
77335
|
for (var i = spreadIndex; i < args.length; i++) {
|
|
77273
|
-
|
|
77336
|
+
_loop_27(i);
|
|
77274
77337
|
}
|
|
77275
77338
|
return effectiveArgs_1;
|
|
77276
77339
|
}
|
|
@@ -77599,7 +77662,7 @@ var ts;
|
|
|
77599
77662
|
var min_3 = Number.MAX_VALUE;
|
|
77600
77663
|
var minIndex = 0;
|
|
77601
77664
|
var i_1 = 0;
|
|
77602
|
-
var
|
|
77665
|
+
var _loop_28 = function (c) {
|
|
77603
77666
|
var chain_2 = function () { return ts.chainDiagnosticMessages(/*details*/ undefined, ts.Diagnostics.Overload_0_of_1_2_gave_the_following_error, i_1 + 1, candidates.length, signatureToString(c)); };
|
|
77604
77667
|
var diags_2 = getSignatureApplicabilityError(node, args, c, assignableRelation, 0 /* CheckMode.Normal */, /*reportErrors*/ true, chain_2);
|
|
77605
77668
|
if (diags_2) {
|
|
@@ -77617,7 +77680,7 @@ var ts;
|
|
|
77617
77680
|
};
|
|
77618
77681
|
for (var _a = 0, candidatesForArgumentError_1 = candidatesForArgumentError; _a < candidatesForArgumentError_1.length; _a++) {
|
|
77619
77682
|
var c = candidatesForArgumentError_1[_a];
|
|
77620
|
-
|
|
77683
|
+
_loop_28(c);
|
|
77621
77684
|
}
|
|
77622
77685
|
var diags_3 = max > 1 ? allDiagnostics[minIndex] : ts.flatten(allDiagnostics);
|
|
77623
77686
|
ts.Debug.assert(diags_3.length > 0, "No errors reported for 3 or fewer overload signatures");
|
|
@@ -77775,7 +77838,7 @@ var ts;
|
|
|
77775
77838
|
}
|
|
77776
77839
|
var _a = ts.minAndMax(candidates, getNumNonRestParameters), minArgumentCount = _a.min, maxNonRestParam = _a.max;
|
|
77777
77840
|
var parameters = [];
|
|
77778
|
-
var
|
|
77841
|
+
var _loop_29 = function (i) {
|
|
77779
77842
|
var symbols = ts.mapDefined(candidates, function (s) { return signatureHasRestParameter(s) ?
|
|
77780
77843
|
i < s.parameters.length - 1 ? s.parameters[i] : ts.last(s.parameters) :
|
|
77781
77844
|
i < s.parameters.length ? s.parameters[i] : undefined; });
|
|
@@ -77783,7 +77846,7 @@ var ts;
|
|
|
77783
77846
|
parameters.push(createCombinedSymbolFromTypes(symbols, ts.mapDefined(candidates, function (candidate) { return tryGetTypeAtPosition(candidate, i); })));
|
|
77784
77847
|
};
|
|
77785
77848
|
for (var i = 0; i < maxNonRestParam; i++) {
|
|
77786
|
-
|
|
77849
|
+
_loop_29(i);
|
|
77787
77850
|
}
|
|
77788
77851
|
var restParameterSymbols = ts.mapDefined(candidates, function (c) { return signatureHasRestParameter(c) ? ts.last(c.parameters) : undefined; });
|
|
77789
77852
|
var flags = 0 /* SignatureFlags.None */;
|
|
@@ -80565,6 +80628,7 @@ var ts;
|
|
|
80565
80628
|
var eqType = operator === 34 /* SyntaxKind.EqualsEqualsToken */ || operator === 36 /* SyntaxKind.EqualsEqualsEqualsToken */;
|
|
80566
80629
|
error(errorNode, ts.Diagnostics.This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value, eqType ? "false" : "true");
|
|
80567
80630
|
}
|
|
80631
|
+
checkNaNEquality(errorNode, operator, left, right);
|
|
80568
80632
|
reportOperatorErrorUnless(function (left, right) { return isTypeEqualityComparableTo(left, right) || isTypeEqualityComparableTo(right, left); });
|
|
80569
80633
|
return booleanType;
|
|
80570
80634
|
case 102 /* SyntaxKind.InstanceOfKeyword */:
|
|
@@ -80770,6 +80834,26 @@ var ts;
|
|
|
80770
80834
|
return undefined;
|
|
80771
80835
|
}
|
|
80772
80836
|
}
|
|
80837
|
+
function checkNaNEquality(errorNode, operator, left, right) {
|
|
80838
|
+
var isLeftNaN = isGlobalNaN(ts.skipParentheses(left));
|
|
80839
|
+
var isRightNaN = isGlobalNaN(ts.skipParentheses(right));
|
|
80840
|
+
if (isLeftNaN || isRightNaN) {
|
|
80841
|
+
var err = error(errorNode, ts.Diagnostics.This_condition_will_always_return_0, ts.tokenToString(operator === 36 /* SyntaxKind.EqualsEqualsEqualsToken */ || operator === 34 /* SyntaxKind.EqualsEqualsToken */ ? 95 /* SyntaxKind.FalseKeyword */ : 110 /* SyntaxKind.TrueKeyword */));
|
|
80842
|
+
if (isLeftNaN && isRightNaN)
|
|
80843
|
+
return;
|
|
80844
|
+
var operatorString = operator === 37 /* SyntaxKind.ExclamationEqualsEqualsToken */ || operator === 35 /* SyntaxKind.ExclamationEqualsToken */ ? ts.tokenToString(53 /* SyntaxKind.ExclamationToken */) : "";
|
|
80845
|
+
var location = isLeftNaN ? right : left;
|
|
80846
|
+
var expression = ts.skipParentheses(location);
|
|
80847
|
+
ts.addRelatedInfo(err, ts.createDiagnosticForNode(location, ts.Diagnostics.Did_you_mean_0, "".concat(operatorString, "Number.isNaN(").concat(ts.isEntityNameExpression(expression) ? ts.entityNameToString(expression) : "...", ")")));
|
|
80848
|
+
}
|
|
80849
|
+
}
|
|
80850
|
+
function isGlobalNaN(expr) {
|
|
80851
|
+
if (ts.isIdentifier(expr) && expr.escapedText === "NaN") {
|
|
80852
|
+
var globalNaNSymbol = getGlobalNaNSymbol();
|
|
80853
|
+
return !!globalNaNSymbol && globalNaNSymbol === getResolvedSymbol(expr);
|
|
80854
|
+
}
|
|
80855
|
+
return false;
|
|
80856
|
+
}
|
|
80773
80857
|
}
|
|
80774
80858
|
function getBaseTypesIfUnrelated(leftType, rightType, isRelated) {
|
|
80775
80859
|
var effectiveLeft = leftType;
|
|
@@ -81807,7 +81891,7 @@ var ts;
|
|
|
81807
81891
|
var indexSymbol = getIndexSymbol(getSymbolOfNode(node));
|
|
81808
81892
|
if (indexSymbol === null || indexSymbol === void 0 ? void 0 : indexSymbol.declarations) {
|
|
81809
81893
|
var indexSignatureMap_1 = new ts.Map();
|
|
81810
|
-
var
|
|
81894
|
+
var _loop_30 = function (declaration) {
|
|
81811
81895
|
if (declaration.parameters.length === 1 && declaration.parameters[0].type) {
|
|
81812
81896
|
forEachType(getTypeFromTypeNode(declaration.parameters[0].type), function (type) {
|
|
81813
81897
|
var entry = indexSignatureMap_1.get(getTypeId(type));
|
|
@@ -81822,7 +81906,7 @@ var ts;
|
|
|
81822
81906
|
};
|
|
81823
81907
|
for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) {
|
|
81824
81908
|
var declaration = _a[_i];
|
|
81825
|
-
|
|
81909
|
+
_loop_30(declaration);
|
|
81826
81910
|
}
|
|
81827
81911
|
indexSignatureMap_1.forEach(function (entry) {
|
|
81828
81912
|
if (entry.declarations.length > 1) {
|
|
@@ -85422,7 +85506,7 @@ var ts;
|
|
|
85422
85506
|
var propDeclaration = declaration && declaration.kind === 223 /* SyntaxKind.BinaryExpression */ ||
|
|
85423
85507
|
name && name.kind === 164 /* SyntaxKind.ComputedPropertyName */ ? declaration : undefined;
|
|
85424
85508
|
var localPropDeclaration = getParentOfSymbol(prop) === type.symbol ? declaration : undefined;
|
|
85425
|
-
var
|
|
85509
|
+
var _loop_31 = function (info) {
|
|
85426
85510
|
var localIndexDeclaration = info.declaration && getParentOfSymbol(getSymbolOfNode(info.declaration)) === type.symbol ? info.declaration : undefined;
|
|
85427
85511
|
// We check only when (a) the property is declared in the containing type, or (b) the applicable index signature is declared
|
|
85428
85512
|
// in the containing type, or (c) the containing type is an interface and no base interface contains both the property and
|
|
@@ -85439,7 +85523,7 @@ var ts;
|
|
|
85439
85523
|
};
|
|
85440
85524
|
for (var _i = 0, indexInfos_9 = indexInfos; _i < indexInfos_9.length; _i++) {
|
|
85441
85525
|
var info = indexInfos_9[_i];
|
|
85442
|
-
|
|
85526
|
+
_loop_31(info);
|
|
85443
85527
|
}
|
|
85444
85528
|
}
|
|
85445
85529
|
function checkIndexConstraintForIndexSignature(type, checkInfo) {
|
|
@@ -85447,7 +85531,7 @@ var ts;
|
|
|
85447
85531
|
var indexInfos = getApplicableIndexInfos(type, checkInfo.keyType);
|
|
85448
85532
|
var interfaceDeclaration = ts.getObjectFlags(type) & 2 /* ObjectFlags.Interface */ ? ts.getDeclarationOfKind(type.symbol, 261 /* SyntaxKind.InterfaceDeclaration */) : undefined;
|
|
85449
85533
|
var localCheckDeclaration = declaration && getParentOfSymbol(getSymbolOfNode(declaration)) === type.symbol ? declaration : undefined;
|
|
85450
|
-
var
|
|
85534
|
+
var _loop_32 = function (info) {
|
|
85451
85535
|
if (info === checkInfo)
|
|
85452
85536
|
return "continue";
|
|
85453
85537
|
var localIndexDeclaration = info.declaration && getParentOfSymbol(getSymbolOfNode(info.declaration)) === type.symbol ? info.declaration : undefined;
|
|
@@ -85462,7 +85546,7 @@ var ts;
|
|
|
85462
85546
|
};
|
|
85463
85547
|
for (var _i = 0, indexInfos_10 = indexInfos; _i < indexInfos_10.length; _i++) {
|
|
85464
85548
|
var info = indexInfos_10[_i];
|
|
85465
|
-
|
|
85549
|
+
_loop_32(info);
|
|
85466
85550
|
}
|
|
85467
85551
|
}
|
|
85468
85552
|
function checkTypeNameIsReserved(name, message) {
|
|
@@ -85782,7 +85866,7 @@ var ts;
|
|
|
85782
85866
|
var baseTypes = baseTypeNode && getBaseTypes(type);
|
|
85783
85867
|
var baseWithThis = (baseTypes === null || baseTypes === void 0 ? void 0 : baseTypes.length) ? getTypeWithThisArgument(ts.first(baseTypes), type.thisType) : undefined;
|
|
85784
85868
|
var baseStaticType = getBaseConstructorTypeOfClass(type);
|
|
85785
|
-
var
|
|
85869
|
+
var _loop_33 = function (member) {
|
|
85786
85870
|
if (ts.hasAmbientModifier(member)) {
|
|
85787
85871
|
return "continue";
|
|
85788
85872
|
}
|
|
@@ -85799,7 +85883,7 @@ var ts;
|
|
|
85799
85883
|
};
|
|
85800
85884
|
for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
|
|
85801
85885
|
var member = _a[_i];
|
|
85802
|
-
|
|
85886
|
+
_loop_33(member);
|
|
85803
85887
|
}
|
|
85804
85888
|
}
|
|
85805
85889
|
/**
|
|
@@ -85887,7 +85971,7 @@ var ts;
|
|
|
85887
85971
|
function issueMemberSpecificError(node, typeWithThis, baseWithThis, broadDiag) {
|
|
85888
85972
|
// iterate over all implemented properties and issue errors on each one which isn't compatible, rather than the class as a whole, if possible
|
|
85889
85973
|
var issuedMemberError = false;
|
|
85890
|
-
var
|
|
85974
|
+
var _loop_34 = function (member) {
|
|
85891
85975
|
if (ts.isStatic(member)) {
|
|
85892
85976
|
return "continue";
|
|
85893
85977
|
}
|
|
@@ -85906,7 +85990,7 @@ var ts;
|
|
|
85906
85990
|
};
|
|
85907
85991
|
for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
|
|
85908
85992
|
var member = _a[_i];
|
|
85909
|
-
|
|
85993
|
+
_loop_34(member);
|
|
85910
85994
|
}
|
|
85911
85995
|
if (!issuedMemberError) {
|
|
85912
85996
|
// check again with diagnostics to generate a less-specific error
|
|
@@ -85977,7 +86061,7 @@ var ts;
|
|
|
85977
86061
|
var _a, _b, _c, _d;
|
|
85978
86062
|
// NOTE: assignability is checked in checkClassDeclaration
|
|
85979
86063
|
var baseProperties = getPropertiesOfType(baseType);
|
|
85980
|
-
var
|
|
86064
|
+
var _loop_35 = function (baseProperty) {
|
|
85981
86065
|
var base = getTargetSymbol(baseProperty);
|
|
85982
86066
|
if (base.flags & 4194304 /* SymbolFlags.Prototype */) {
|
|
85983
86067
|
return "continue";
|
|
@@ -86087,8 +86171,8 @@ var ts;
|
|
|
86087
86171
|
};
|
|
86088
86172
|
basePropertyCheck: for (var _i = 0, baseProperties_1 = baseProperties; _i < baseProperties_1.length; _i++) {
|
|
86089
86173
|
var baseProperty = baseProperties_1[_i];
|
|
86090
|
-
var
|
|
86091
|
-
switch (
|
|
86174
|
+
var state_11 = _loop_35(baseProperty);
|
|
86175
|
+
switch (state_11) {
|
|
86092
86176
|
case "continue-basePropertyCheck": continue basePropertyCheck;
|
|
86093
86177
|
}
|
|
86094
86178
|
}
|
|
@@ -124931,7 +125015,7 @@ var ts;
|
|
|
124931
125015
|
});
|
|
124932
125016
|
// Sort by paths closest to importing file Name directory
|
|
124933
125017
|
var sortedPaths = [];
|
|
124934
|
-
var
|
|
125018
|
+
var _loop_36 = function (directory) {
|
|
124935
125019
|
var directoryStart = ts.ensureTrailingDirectorySeparator(directory);
|
|
124936
125020
|
var pathsInDirectory;
|
|
124937
125021
|
allFileNames.forEach(function (_a, fileName) {
|
|
@@ -124955,9 +125039,9 @@ var ts;
|
|
|
124955
125039
|
};
|
|
124956
125040
|
var out_directory_1;
|
|
124957
125041
|
for (var directory = ts.getDirectoryPath(importingFileName); allFileNames.size !== 0;) {
|
|
124958
|
-
var
|
|
125042
|
+
var state_12 = _loop_36(directory);
|
|
124959
125043
|
directory = out_directory_1;
|
|
124960
|
-
if (
|
|
125044
|
+
if (state_12 === "break")
|
|
124961
125045
|
break;
|
|
124962
125046
|
}
|
|
124963
125047
|
if (allFileNames.size) {
|
|
@@ -125026,7 +125110,7 @@ var ts;
|
|
|
125026
125110
|
}
|
|
125027
125111
|
function tryGetModuleNameFromPaths(relativeToBaseUrl, paths, allowedEndings, host, compilerOptions) {
|
|
125028
125112
|
for (var key in paths) {
|
|
125029
|
-
var
|
|
125113
|
+
var _loop_37 = function (patternText_1) {
|
|
125030
125114
|
var pattern = ts.normalizePath(patternText_1);
|
|
125031
125115
|
var indexOfStar = pattern.indexOf("*");
|
|
125032
125116
|
// In module resolution, if `pattern` itself has an extension, a file with that extension is looked up directly,
|
|
@@ -125093,9 +125177,9 @@ var ts;
|
|
|
125093
125177
|
};
|
|
125094
125178
|
for (var _i = 0, _a = paths[key]; _i < _a.length; _i++) {
|
|
125095
125179
|
var patternText_1 = _a[_i];
|
|
125096
|
-
var
|
|
125097
|
-
if (typeof
|
|
125098
|
-
return
|
|
125180
|
+
var state_13 = _loop_37(patternText_1);
|
|
125181
|
+
if (typeof state_13 === "object")
|
|
125182
|
+
return state_13.value;
|
|
125099
125183
|
}
|
|
125100
125184
|
}
|
|
125101
125185
|
function validateEnding(_a) {
|
|
@@ -135015,7 +135099,7 @@ var ts;
|
|
|
135015
135099
|
return (location === null || location === void 0 ? void 0 : location.kind) === 79 /* SyntaxKind.Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
|
|
135016
135100
|
}
|
|
135017
135101
|
function completionInfoFromData(sourceFile, host, program, compilerOptions, log, completionData, preferences, formatContext, position) {
|
|
135018
|
-
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag,
|
|
135102
|
+
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag, importStatementCompletion = completionData.importStatementCompletion, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextMap = completionData.symbolToSortTextMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
135019
135103
|
// Verify if the file is JSX language variant
|
|
135020
135104
|
if (ts.getLanguageVariant(sourceFile.scriptKind) === 1 /* LanguageVariant.JSX */) {
|
|
135021
135105
|
var completionInfo = getJsxClosingTagCompletion(location, sourceFile);
|
|
@@ -135029,7 +135113,7 @@ var ts;
|
|
|
135029
135113
|
return undefined;
|
|
135030
135114
|
}
|
|
135031
135115
|
var uniqueNames = getCompletionEntriesFromSymbols(symbols, entries,
|
|
135032
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer,
|
|
135116
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
135033
135117
|
if (keywordFilters !== 0 /* KeywordCompletionFilters.None */) {
|
|
135034
135118
|
for (var _i = 0, _a = getKeywordCompletions(keywordFilters, !insideJsDocTagTypeExpression && ts.isSourceFileJS(sourceFile)); _i < _a.length; _i++) {
|
|
135035
135119
|
var keywordEntry = _a[_i];
|
|
@@ -135147,7 +135231,7 @@ var ts;
|
|
|
135147
135231
|
function createCompletionEntryForLiteral(sourceFile, preferences, literal) {
|
|
135148
135232
|
return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* ScriptElementKind.string */, kindModifiers: "" /* ScriptElementKindModifier.none */, sortText: Completions.SortText.LocationPriority };
|
|
135149
135233
|
}
|
|
135150
|
-
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer,
|
|
135234
|
+
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
135151
135235
|
var _a, _b;
|
|
135152
135236
|
var insertText;
|
|
135153
135237
|
var replacementSpan = ts.getReplacementSpanForContextToken(replacementToken);
|
|
@@ -135203,8 +135287,8 @@ var ts;
|
|
|
135203
135287
|
}
|
|
135204
135288
|
if (originIsResolvedExport(origin)) {
|
|
135205
135289
|
sourceDisplay = [ts.textPart(origin.moduleSpecifier)];
|
|
135206
|
-
if (
|
|
135207
|
-
(_a = getInsertTextAndReplacementSpanForImportCompletion(name,
|
|
135290
|
+
if (importStatementCompletion) {
|
|
135291
|
+
(_a = getInsertTextAndReplacementSpanForImportCompletion(name, importStatementCompletion, origin, useSemicolons, sourceFile, options, preferences), insertText = _a.insertText, replacementSpan = _a.replacementSpan);
|
|
135208
135292
|
isSnippet = preferences.includeCompletionsWithSnippetText ? true : undefined;
|
|
135209
135293
|
}
|
|
135210
135294
|
}
|
|
@@ -135259,7 +135343,7 @@ var ts;
|
|
|
135259
135343
|
}
|
|
135260
135344
|
if (originIsExport(origin) || originIsResolvedExport(origin)) {
|
|
135261
135345
|
data = originToCompletionEntryData(origin);
|
|
135262
|
-
hasAction = !
|
|
135346
|
+
hasAction = !importStatementCompletion;
|
|
135263
135347
|
}
|
|
135264
135348
|
// TODO(drosen): Right now we just permit *all* semantic meanings when calling
|
|
135265
135349
|
// 'getSymbolKind' which is permissible given that it is backwards compatible; but
|
|
@@ -135282,7 +135366,7 @@ var ts;
|
|
|
135282
135366
|
labelDetails: labelDetails,
|
|
135283
135367
|
isSnippet: isSnippet,
|
|
135284
135368
|
isPackageJsonImport: originIsPackageJsonImport(origin) || undefined,
|
|
135285
|
-
isImportStatementCompletion: !!
|
|
135369
|
+
isImportStatementCompletion: !!importStatementCompletion || undefined,
|
|
135286
135370
|
data: data,
|
|
135287
135371
|
};
|
|
135288
135372
|
}
|
|
@@ -135654,19 +135738,16 @@ var ts;
|
|
|
135654
135738
|
};
|
|
135655
135739
|
return unresolvedOrigin;
|
|
135656
135740
|
}
|
|
135657
|
-
function getInsertTextAndReplacementSpanForImportCompletion(name,
|
|
135658
|
-
var
|
|
135659
|
-
var sourceFile = importCompletionNode.getSourceFile();
|
|
135660
|
-
var replacementSpan = ts.createTextSpanFromNode(ts.findAncestor(importCompletionNode, ts.or(ts.isImportDeclaration, ts.isImportEqualsDeclaration)) || importCompletionNode, sourceFile);
|
|
135741
|
+
function getInsertTextAndReplacementSpanForImportCompletion(name, importStatementCompletion, origin, useSemicolons, sourceFile, options, preferences) {
|
|
135742
|
+
var replacementSpan = importStatementCompletion.replacementSpan;
|
|
135661
135743
|
var quotedModuleSpecifier = ts.quote(sourceFile, preferences, origin.moduleSpecifier);
|
|
135662
135744
|
var exportKind = origin.isDefaultExport ? 1 /* ExportKind.Default */ :
|
|
135663
135745
|
origin.exportName === "export=" /* InternalSymbolName.ExportEquals */ ? 2 /* ExportKind.ExportEquals */ :
|
|
135664
135746
|
0 /* ExportKind.Named */;
|
|
135665
135747
|
var tabStop = preferences.includeCompletionsWithSnippetText ? "$1" : "";
|
|
135666
135748
|
var importKind = ts.codefix.getImportKind(sourceFile, exportKind, options, /*forceImportKeyword*/ true);
|
|
135667
|
-
var
|
|
135668
|
-
var
|
|
135669
|
-
var topLevelTypeOnlyText = isTopLevelTypeOnly ? " ".concat(ts.tokenToString(154 /* SyntaxKind.TypeKeyword */), " ") : " ";
|
|
135749
|
+
var isImportSpecifierTypeOnly = importStatementCompletion.couldBeTypeOnlyImportSpecifier;
|
|
135750
|
+
var topLevelTypeOnlyText = importStatementCompletion.isTopLevelTypeOnly ? " ".concat(ts.tokenToString(154 /* SyntaxKind.TypeKeyword */), " ") : " ";
|
|
135670
135751
|
var importSpecifierTypeOnlyText = isImportSpecifierTypeOnly ? "".concat(ts.tokenToString(154 /* SyntaxKind.TypeKeyword */), " ") : "";
|
|
135671
135752
|
var suffix = useSemicolons ? ";" : "";
|
|
135672
135753
|
switch (importKind) {
|
|
@@ -135700,7 +135781,7 @@ var ts;
|
|
|
135700
135781
|
return CompletionSource.TypeOnlyAlias;
|
|
135701
135782
|
}
|
|
135702
135783
|
}
|
|
135703
|
-
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer,
|
|
135784
|
+
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
135704
135785
|
var _a;
|
|
135705
135786
|
var start = ts.timestamp();
|
|
135706
135787
|
var variableDeclaration = getVariableDeclaration(location);
|
|
@@ -135721,7 +135802,7 @@ var ts;
|
|
|
135721
135802
|
var name = info.name, needsConvertPropertyAccess = info.needsConvertPropertyAccess;
|
|
135722
135803
|
var originalSortText = (_a = symbolToSortTextMap === null || symbolToSortTextMap === void 0 ? void 0 : symbolToSortTextMap[ts.getSymbolId(symbol)]) !== null && _a !== void 0 ? _a : Completions.SortText.LocationPriority;
|
|
135723
135804
|
var sortText = (isDeprecated(symbol, typeChecker) ? Completions.SortText.Deprecated(originalSortText) : originalSortText);
|
|
135724
|
-
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer,
|
|
135805
|
+
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, compilerOptions, preferences, kind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
135725
135806
|
if (!entry) {
|
|
135726
135807
|
continue;
|
|
135727
135808
|
}
|
|
@@ -135912,7 +135993,7 @@ var ts;
|
|
|
135912
135993
|
Completions.createCompletionDetails = createCompletionDetails;
|
|
135913
135994
|
function getCompletionEntryCodeActionsAndSourceDisplay(name, location, contextToken, origin, symbol, program, host, compilerOptions, sourceFile, position, previousToken, formatContext, preferences, data, source, cancellationToken) {
|
|
135914
135995
|
if (data === null || data === void 0 ? void 0 : data.moduleSpecifier) {
|
|
135915
|
-
if (previousToken && getImportStatementCompletionInfo(contextToken || previousToken).
|
|
135996
|
+
if (previousToken && getImportStatementCompletionInfo(contextToken || previousToken).replacementSpan) {
|
|
135916
135997
|
// Import statement completion: 'import c|'
|
|
135917
135998
|
return { codeActions: undefined, sourceDisplay: [ts.textPart(data.moduleSpecifier)] };
|
|
135918
135999
|
}
|
|
@@ -136113,34 +136194,34 @@ var ts;
|
|
|
136113
136194
|
var isStartingCloseTag = false;
|
|
136114
136195
|
var isJsxInitializer = false;
|
|
136115
136196
|
var isJsxIdentifierExpected = false;
|
|
136116
|
-
var
|
|
136197
|
+
var importStatementCompletion;
|
|
136117
136198
|
var location = ts.getTouchingPropertyName(sourceFile, position);
|
|
136118
136199
|
var keywordFilters = 0 /* KeywordCompletionFilters.None */;
|
|
136119
136200
|
var isNewIdentifierLocation = false;
|
|
136120
136201
|
var flags = 0 /* CompletionInfoFlags.None */;
|
|
136121
136202
|
if (contextToken) {
|
|
136122
|
-
var
|
|
136123
|
-
|
|
136124
|
-
|
|
136125
|
-
if (importStatementCompletion.isKeywordOnlyCompletion) {
|
|
136203
|
+
var importStatementCompletionInfo = getImportStatementCompletionInfo(contextToken);
|
|
136204
|
+
if (importStatementCompletionInfo.keywordCompletion) {
|
|
136205
|
+
if (importStatementCompletionInfo.isKeywordOnlyCompletion) {
|
|
136126
136206
|
return {
|
|
136127
136207
|
kind: 4 /* CompletionDataKind.Keywords */,
|
|
136128
|
-
keywordCompletions: [keywordToCompletionEntry(
|
|
136129
|
-
isNewIdentifierLocation: isNewIdentifierLocation,
|
|
136208
|
+
keywordCompletions: [keywordToCompletionEntry(importStatementCompletionInfo.keywordCompletion)],
|
|
136209
|
+
isNewIdentifierLocation: importStatementCompletionInfo.isNewIdentifierLocation,
|
|
136130
136210
|
};
|
|
136131
136211
|
}
|
|
136132
|
-
keywordFilters = keywordFiltersFromSyntaxKind(
|
|
136212
|
+
keywordFilters = keywordFiltersFromSyntaxKind(importStatementCompletionInfo.keywordCompletion);
|
|
136133
136213
|
}
|
|
136134
|
-
if (
|
|
136214
|
+
if (importStatementCompletionInfo.replacementSpan && preferences.includeCompletionsForImportStatements && preferences.includeCompletionsWithInsertText) {
|
|
136135
136215
|
// Import statement completions use `insertText`, and also require the `data` property of `CompletionEntryIdentifier`
|
|
136136
136216
|
// added in TypeScript 4.3 to be sent back from the client during `getCompletionEntryDetails`. Since this feature
|
|
136137
136217
|
// is not backward compatible with older clients, the language service defaults to disabling it, allowing newer clients
|
|
136138
136218
|
// to opt in with the `includeCompletionsForImportStatements` user preference.
|
|
136139
|
-
importCompletionNode = importStatementCompletion.replacementNode;
|
|
136140
136219
|
flags |= 2 /* CompletionInfoFlags.IsImportStatementCompletion */;
|
|
136220
|
+
importStatementCompletion = importStatementCompletionInfo;
|
|
136221
|
+
isNewIdentifierLocation = importStatementCompletionInfo.isNewIdentifierLocation;
|
|
136141
136222
|
}
|
|
136142
136223
|
// Bail out if this is a known invalid completion location
|
|
136143
|
-
if (!
|
|
136224
|
+
if (!importStatementCompletionInfo.replacementSpan && isCompletionListBlocker(contextToken)) {
|
|
136144
136225
|
log("Returning an empty list because completion was requested in an invalid position.");
|
|
136145
136226
|
return keywordFilters
|
|
136146
136227
|
? keywordCompletionData(keywordFilters, isJsOnlyLocation, isNewIdentifierDefinitionLocation())
|
|
@@ -136186,7 +136267,7 @@ var ts;
|
|
|
136186
136267
|
return undefined;
|
|
136187
136268
|
}
|
|
136188
136269
|
}
|
|
136189
|
-
else if (!
|
|
136270
|
+
else if (!importStatementCompletion) {
|
|
136190
136271
|
// <UI.Test /* completion position */ />
|
|
136191
136272
|
// If the tagname is a property access expression, we will then walk up to the top most of property access expression.
|
|
136192
136273
|
// Then, try to get a JSX container and its associated attributes type.
|
|
@@ -136329,7 +136410,7 @@ var ts;
|
|
|
136329
136410
|
isTypeOnlyLocation: isTypeOnlyLocation,
|
|
136330
136411
|
isJsxIdentifierExpected: isJsxIdentifierExpected,
|
|
136331
136412
|
isRightOfOpenTag: isRightOfOpenTag,
|
|
136332
|
-
|
|
136413
|
+
importStatementCompletion: importStatementCompletion,
|
|
136333
136414
|
hasUnresolvedAutoImports: hasUnresolvedAutoImports,
|
|
136334
136415
|
flags: flags,
|
|
136335
136416
|
};
|
|
@@ -136583,7 +136664,7 @@ var ts;
|
|
|
136583
136664
|
return 1 /* GlobalsSearch.Success */;
|
|
136584
136665
|
}
|
|
136585
136666
|
function tryGetImportCompletionSymbols() {
|
|
136586
|
-
if (!
|
|
136667
|
+
if (!importStatementCompletion)
|
|
136587
136668
|
return 0 /* GlobalsSearch.Continue */;
|
|
136588
136669
|
isNewIdentifierLocation = true;
|
|
136589
136670
|
collectAutoImports();
|
|
@@ -136666,7 +136747,7 @@ var ts;
|
|
|
136666
136747
|
}
|
|
136667
136748
|
function shouldOfferImportCompletions() {
|
|
136668
136749
|
// If already typing an import statement, provide completions for it.
|
|
136669
|
-
if (
|
|
136750
|
+
if (importStatementCompletion)
|
|
136670
136751
|
return true;
|
|
136671
136752
|
// If current completion is for non-contextual Object literal shortahands, ignore auto-import symbols
|
|
136672
136753
|
if (isNonContextualObjectLiteral)
|
|
@@ -136696,7 +136777,7 @@ var ts;
|
|
|
136696
136777
|
}
|
|
136697
136778
|
function isTypeOnlyCompletion() {
|
|
136698
136779
|
return insideJsDocTagTypeExpression
|
|
136699
|
-
|| !!
|
|
136780
|
+
|| !!importStatementCompletion && ts.isTypeOnlyImportOrExportDeclaration(location.parent)
|
|
136700
136781
|
|| !isContextTokenValueLocation(contextToken) &&
|
|
136701
136782
|
(ts.isPossiblyTypeArgumentPosition(contextToken, sourceFile, typeChecker)
|
|
136702
136783
|
|| ts.isPartOfTypeNode(location)
|
|
@@ -136746,8 +136827,7 @@ var ts;
|
|
|
136746
136827
|
flags |= 1 /* CompletionInfoFlags.MayIncludeAutoImports */;
|
|
136747
136828
|
// import { type | -> token text should be blank
|
|
136748
136829
|
var isAfterTypeOnlyImportSpecifierModifier = previousToken === contextToken
|
|
136749
|
-
&&
|
|
136750
|
-
&& couldBeTypeOnlyImportSpecifier(importCompletionNode, contextToken);
|
|
136830
|
+
&& importStatementCompletion;
|
|
136751
136831
|
var lowerCaseTokenText = isAfterTypeOnlyImportSpecifierModifier ? "" :
|
|
136752
136832
|
previousToken && ts.isIdentifier(previousToken) ? previousToken.text.toLowerCase() :
|
|
136753
136833
|
"";
|
|
@@ -136755,14 +136835,14 @@ var ts;
|
|
|
136755
136835
|
var exportInfo = ts.getExportInfoMap(sourceFile, host, program, preferences, cancellationToken);
|
|
136756
136836
|
var packageJsonAutoImportProvider = (_b = host.getPackageJsonAutoImportProvider) === null || _b === void 0 ? void 0 : _b.call(host);
|
|
136757
136837
|
var packageJsonFilter = detailsEntryId ? undefined : ts.createPackageJsonImportFilter(sourceFile, preferences, host);
|
|
136758
|
-
resolvingModuleSpecifiers("collectAutoImports", host, importSpecifierResolver || (importSpecifierResolver = ts.codefix.createImportSpecifierResolver(sourceFile, program, host, preferences)), program, position, preferences, !!
|
|
136838
|
+
resolvingModuleSpecifiers("collectAutoImports", host, importSpecifierResolver || (importSpecifierResolver = ts.codefix.createImportSpecifierResolver(sourceFile, program, host, preferences)), program, position, preferences, !!importStatementCompletion, ts.isValidTypeOnlyAliasUseSite(location), function (context) {
|
|
136759
136839
|
exportInfo.search(sourceFile.path,
|
|
136760
136840
|
/*preferCapitalized*/ isRightOfOpenTag, function (symbolName, targetFlags) {
|
|
136761
136841
|
if (!ts.isIdentifierText(symbolName, ts.getEmitScriptTarget(host.getCompilationSettings())))
|
|
136762
136842
|
return false;
|
|
136763
136843
|
if (!detailsEntryId && ts.isStringANonContextualKeyword(symbolName))
|
|
136764
136844
|
return false;
|
|
136765
|
-
if (!isTypeOnlyLocation && !
|
|
136845
|
+
if (!isTypeOnlyLocation && !importStatementCompletion && !(targetFlags & 111551 /* SymbolFlags.Value */))
|
|
136766
136846
|
return false;
|
|
136767
136847
|
if (isTypeOnlyLocation && !(targetFlags & (1536 /* SymbolFlags.Module */ | 788968 /* SymbolFlags.Type */)))
|
|
136768
136848
|
return false;
|
|
@@ -136843,7 +136923,7 @@ var ts;
|
|
|
136843
136923
|
return;
|
|
136844
136924
|
}
|
|
136845
136925
|
symbolToOriginInfoMap[symbols.length] = origin;
|
|
136846
|
-
symbolToSortTextMap[symbolId] =
|
|
136926
|
+
symbolToSortTextMap[symbolId] = importStatementCompletion ? Completions.SortText.LocationPriority : Completions.SortText.AutoImportSuggestions;
|
|
136847
136927
|
symbols.push(symbol);
|
|
136848
136928
|
}
|
|
136849
136929
|
/* Mutates `symbols` and `symbolToOriginInfoMap`. */
|
|
@@ -138110,6 +138190,7 @@ var ts;
|
|
|
138110
138190
|
return undefined;
|
|
138111
138191
|
}
|
|
138112
138192
|
function getImportStatementCompletionInfo(contextToken) {
|
|
138193
|
+
var _a, _b, _c;
|
|
138113
138194
|
var keywordCompletion;
|
|
138114
138195
|
var isKeywordOnlyCompletion = false;
|
|
138115
138196
|
var candidate = getCandidate();
|
|
@@ -138117,9 +138198,9 @@ var ts;
|
|
|
138117
138198
|
isKeywordOnlyCompletion: isKeywordOnlyCompletion,
|
|
138118
138199
|
keywordCompletion: keywordCompletion,
|
|
138119
138200
|
isNewIdentifierLocation: !!(candidate || keywordCompletion === 154 /* SyntaxKind.TypeKeyword */),
|
|
138120
|
-
|
|
138121
|
-
|
|
138122
|
-
|
|
138201
|
+
isTopLevelTypeOnly: !!((_b = (_a = ts.tryCast(candidate, ts.isImportDeclaration)) === null || _a === void 0 ? void 0 : _a.importClause) === null || _b === void 0 ? void 0 : _b.isTypeOnly) || !!((_c = ts.tryCast(candidate, ts.isImportEqualsDeclaration)) === null || _c === void 0 ? void 0 : _c.isTypeOnly),
|
|
138202
|
+
couldBeTypeOnlyImportSpecifier: !!candidate && couldBeTypeOnlyImportSpecifier(candidate, contextToken),
|
|
138203
|
+
replacementSpan: getSingleLineReplacementSpanForImportCompletionNode(candidate),
|
|
138123
138204
|
};
|
|
138124
138205
|
function getCandidate() {
|
|
138125
138206
|
var parent = contextToken.parent;
|
|
@@ -138161,14 +138242,71 @@ var ts;
|
|
|
138161
138242
|
return undefined;
|
|
138162
138243
|
}
|
|
138163
138244
|
}
|
|
138245
|
+
function getSingleLineReplacementSpanForImportCompletionNode(node) {
|
|
138246
|
+
var _a, _b, _c;
|
|
138247
|
+
if (!node)
|
|
138248
|
+
return undefined;
|
|
138249
|
+
var top = (_a = ts.findAncestor(node, ts.or(ts.isImportDeclaration, ts.isImportEqualsDeclaration))) !== null && _a !== void 0 ? _a : node;
|
|
138250
|
+
var sourceFile = top.getSourceFile();
|
|
138251
|
+
if (ts.rangeIsOnSingleLine(top, sourceFile)) {
|
|
138252
|
+
return ts.createTextSpanFromNode(top, sourceFile);
|
|
138253
|
+
}
|
|
138254
|
+
// ImportKeyword was necessarily on one line; ImportSpecifier was necessarily parented in an ImportDeclaration
|
|
138255
|
+
ts.Debug.assert(top.kind !== 100 /* SyntaxKind.ImportKeyword */ && top.kind !== 273 /* SyntaxKind.ImportSpecifier */);
|
|
138256
|
+
// Guess which point in the import might actually be a later statement parsed as part of the import
|
|
138257
|
+
// during parser recovery - either in the middle of named imports, or the module specifier.
|
|
138258
|
+
var potentialSplitPoint = top.kind === 269 /* SyntaxKind.ImportDeclaration */
|
|
138259
|
+
? (_c = getPotentiallyInvalidImportSpecifier((_b = top.importClause) === null || _b === void 0 ? void 0 : _b.namedBindings)) !== null && _c !== void 0 ? _c : top.moduleSpecifier
|
|
138260
|
+
: top.moduleReference;
|
|
138261
|
+
var withoutModuleSpecifier = {
|
|
138262
|
+
pos: top.getFirstToken().getStart(),
|
|
138263
|
+
end: potentialSplitPoint.pos,
|
|
138264
|
+
};
|
|
138265
|
+
// The module specifier/reference was previously found to be missing, empty, or
|
|
138266
|
+
// not a string literal - in this last case, it's likely that statement on a following
|
|
138267
|
+
// line was parsed as the module specifier of a partially-typed import, e.g.
|
|
138268
|
+
// import Foo|
|
|
138269
|
+
// interface Blah {}
|
|
138270
|
+
// This appears to be a multiline-import, and editors can't replace multiple lines.
|
|
138271
|
+
// But if everything but the "module specifier" is on one line, by this point we can
|
|
138272
|
+
// assume that the "module specifier" is actually just another statement, and return
|
|
138273
|
+
// the single-line range of the import excluding that probable statement.
|
|
138274
|
+
if (ts.rangeIsOnSingleLine(withoutModuleSpecifier, sourceFile)) {
|
|
138275
|
+
return ts.createTextSpanFromRange(withoutModuleSpecifier);
|
|
138276
|
+
}
|
|
138277
|
+
}
|
|
138278
|
+
// Tries to identify the first named import that is not really a named import, but rather
|
|
138279
|
+
// just parser recovery for a situation like:
|
|
138280
|
+
// import { Foo|
|
|
138281
|
+
// interface Bar {}
|
|
138282
|
+
// in which `Foo`, `interface`, and `Bar` are all parsed as import specifiers. The caller
|
|
138283
|
+
// will also check if this token is on a separate line from the rest of the import.
|
|
138284
|
+
function getPotentiallyInvalidImportSpecifier(namedBindings) {
|
|
138285
|
+
var _a;
|
|
138286
|
+
return ts.find((_a = ts.tryCast(namedBindings, ts.isNamedImports)) === null || _a === void 0 ? void 0 : _a.elements, function (e) {
|
|
138287
|
+
var _a;
|
|
138288
|
+
return !e.propertyName &&
|
|
138289
|
+
ts.isStringANonContextualKeyword(e.name.text) &&
|
|
138290
|
+
((_a = ts.findPrecedingToken(e.name.pos, namedBindings.getSourceFile(), namedBindings)) === null || _a === void 0 ? void 0 : _a.kind) !== 27 /* SyntaxKind.CommaToken */;
|
|
138291
|
+
});
|
|
138292
|
+
}
|
|
138164
138293
|
function couldBeTypeOnlyImportSpecifier(importSpecifier, contextToken) {
|
|
138165
138294
|
return ts.isImportSpecifier(importSpecifier)
|
|
138166
138295
|
&& (importSpecifier.isTypeOnly || contextToken === importSpecifier.name && ts.isTypeKeywordTokenOrIdentifier(contextToken));
|
|
138167
138296
|
}
|
|
138168
138297
|
function canCompleteFromNamedBindings(namedBindings) {
|
|
138169
|
-
|
|
138170
|
-
|
|
138171
|
-
|
|
138298
|
+
if (!isModuleSpecifierMissingOrEmpty(namedBindings.parent.parent.moduleSpecifier) || namedBindings.parent.name) {
|
|
138299
|
+
return false;
|
|
138300
|
+
}
|
|
138301
|
+
if (ts.isNamedImports(namedBindings)) {
|
|
138302
|
+
// We can only complete on named imports if there are no other named imports already,
|
|
138303
|
+
// but parser recovery sometimes puts later statements in the named imports list, so
|
|
138304
|
+
// we try to only consider the probably-valid ones.
|
|
138305
|
+
var invalidNamedImport = getPotentiallyInvalidImportSpecifier(namedBindings);
|
|
138306
|
+
var validImports = invalidNamedImport ? namedBindings.elements.indexOf(invalidNamedImport) : namedBindings.elements.length;
|
|
138307
|
+
return validImports < 2;
|
|
138308
|
+
}
|
|
138309
|
+
return true;
|
|
138172
138310
|
}
|
|
138173
138311
|
function isModuleSpecifierMissingOrEmpty(specifier) {
|
|
138174
138312
|
var _a;
|
|
@@ -156901,7 +157039,7 @@ var ts;
|
|
|
156901
157039
|
var related = ts.find(diag.relatedInformation, function (related) { return related.code === ts.Diagnostics.This_type_parameter_might_need_an_extends_0_constraint.code; });
|
|
156902
157040
|
if (related === undefined || related.file === undefined || related.start === undefined || related.length === undefined)
|
|
156903
157041
|
return;
|
|
156904
|
-
var declaration = findAncestorMatchingSpan(related.file, ts.createTextSpan(related.start, related.length));
|
|
157042
|
+
var declaration = codefix.findAncestorMatchingSpan(related.file, ts.createTextSpan(related.start, related.length));
|
|
156905
157043
|
if (declaration === undefined)
|
|
156906
157044
|
return;
|
|
156907
157045
|
if (ts.isIdentifier(declaration) && ts.isTypeParameterDeclaration(declaration.parent)) {
|
|
@@ -156935,14 +157073,6 @@ var ts;
|
|
|
156935
157073
|
}
|
|
156936
157074
|
}
|
|
156937
157075
|
}
|
|
156938
|
-
function findAncestorMatchingSpan(sourceFile, span) {
|
|
156939
|
-
var end = ts.textSpanEnd(span);
|
|
156940
|
-
var token = ts.getTokenAtPosition(sourceFile, span.start);
|
|
156941
|
-
while (token.end < end) {
|
|
156942
|
-
token = token.parent;
|
|
156943
|
-
}
|
|
156944
|
-
return token;
|
|
156945
|
-
}
|
|
156946
157076
|
function tryGetConstraintFromDiagnosticMessage(messageText) {
|
|
156947
157077
|
var _a = ts.flattenDiagnosticMessageText(messageText, "\n", 0).match(/`extends (.*)`/) || [], _ = _a[0], constraint = _a[1];
|
|
156948
157078
|
return constraint;
|
|
@@ -158488,6 +158618,63 @@ var ts;
|
|
|
158488
158618
|
})(ts || (ts = {}));
|
|
158489
158619
|
/* @internal */
|
|
158490
158620
|
var ts;
|
|
158621
|
+
(function (ts) {
|
|
158622
|
+
var codefix;
|
|
158623
|
+
(function (codefix) {
|
|
158624
|
+
var fixId = "fixNaNEquality";
|
|
158625
|
+
var errorCodes = [
|
|
158626
|
+
ts.Diagnostics.This_condition_will_always_return_0.code,
|
|
158627
|
+
];
|
|
158628
|
+
codefix.registerCodeFix({
|
|
158629
|
+
errorCodes: errorCodes,
|
|
158630
|
+
getCodeActions: function (context) {
|
|
158631
|
+
var sourceFile = context.sourceFile, span = context.span, program = context.program;
|
|
158632
|
+
var info = getInfo(program, sourceFile, span);
|
|
158633
|
+
if (info === undefined)
|
|
158634
|
+
return;
|
|
158635
|
+
var suggestion = info.suggestion, expression = info.expression, arg = info.arg;
|
|
158636
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return doChange(t, sourceFile, arg, expression); });
|
|
158637
|
+
return [codefix.createCodeFixAction(fixId, changes, [ts.Diagnostics.Use_0, suggestion], fixId, ts.Diagnostics.Use_Number_isNaN_in_all_conditions)];
|
|
158638
|
+
},
|
|
158639
|
+
fixIds: [fixId],
|
|
158640
|
+
getAllCodeActions: function (context) {
|
|
158641
|
+
return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
|
|
158642
|
+
var info = getInfo(context.program, diag.file, ts.createTextSpan(diag.start, diag.length));
|
|
158643
|
+
if (info) {
|
|
158644
|
+
doChange(changes, diag.file, info.arg, info.expression);
|
|
158645
|
+
}
|
|
158646
|
+
});
|
|
158647
|
+
}
|
|
158648
|
+
});
|
|
158649
|
+
function getInfo(program, sourceFile, span) {
|
|
158650
|
+
var diag = ts.find(program.getSemanticDiagnostics(sourceFile), function (diag) { return diag.start === span.start && diag.length === span.length; });
|
|
158651
|
+
if (diag === undefined || diag.relatedInformation === undefined)
|
|
158652
|
+
return;
|
|
158653
|
+
var related = ts.find(diag.relatedInformation, function (related) { return related.code === ts.Diagnostics.Did_you_mean_0.code; });
|
|
158654
|
+
if (related === undefined || related.file === undefined || related.start === undefined || related.length === undefined)
|
|
158655
|
+
return;
|
|
158656
|
+
var token = codefix.findAncestorMatchingSpan(related.file, ts.createTextSpan(related.start, related.length));
|
|
158657
|
+
if (token === undefined)
|
|
158658
|
+
return;
|
|
158659
|
+
if (ts.isExpression(token) && ts.isBinaryExpression(token.parent)) {
|
|
158660
|
+
return { suggestion: getSuggestion(related.messageText), expression: token.parent, arg: token };
|
|
158661
|
+
}
|
|
158662
|
+
return undefined;
|
|
158663
|
+
}
|
|
158664
|
+
function doChange(changes, sourceFile, arg, expression) {
|
|
158665
|
+
var callExpression = ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier("Number"), ts.factory.createIdentifier("isNaN")), /*typeArguments*/ undefined, [arg]);
|
|
158666
|
+
var operator = expression.operatorToken.kind;
|
|
158667
|
+
changes.replaceNode(sourceFile, expression, operator === 37 /* SyntaxKind.ExclamationEqualsEqualsToken */ || operator === 35 /* SyntaxKind.ExclamationEqualsToken */
|
|
158668
|
+
? ts.factory.createPrefixUnaryExpression(53 /* SyntaxKind.ExclamationToken */, callExpression) : callExpression);
|
|
158669
|
+
}
|
|
158670
|
+
function getSuggestion(messageText) {
|
|
158671
|
+
var _a = ts.flattenDiagnosticMessageText(messageText, "\n", 0).match(/\'(.*)\'/) || [], _ = _a[0], suggestion = _a[1];
|
|
158672
|
+
return suggestion;
|
|
158673
|
+
}
|
|
158674
|
+
})(codefix = ts.codefix || (ts.codefix = {}));
|
|
158675
|
+
})(ts || (ts = {}));
|
|
158676
|
+
/* @internal */
|
|
158677
|
+
var ts;
|
|
158491
158678
|
(function (ts) {
|
|
158492
158679
|
var codefix;
|
|
158493
158680
|
(function (codefix) {
|
|
@@ -161205,6 +161392,15 @@ var ts;
|
|
|
161205
161392
|
symbols.forEach(function (s) { return importAdder.addImportFromExportedSymbol(s, /*isValidTypeOnlyUseSite*/ true); });
|
|
161206
161393
|
}
|
|
161207
161394
|
codefix.importSymbols = importSymbols;
|
|
161395
|
+
function findAncestorMatchingSpan(sourceFile, span) {
|
|
161396
|
+
var end = ts.textSpanEnd(span);
|
|
161397
|
+
var token = ts.getTokenAtPosition(sourceFile, span.start);
|
|
161398
|
+
while (token.end < end) {
|
|
161399
|
+
token = token.parent;
|
|
161400
|
+
}
|
|
161401
|
+
return token;
|
|
161402
|
+
}
|
|
161403
|
+
codefix.findAncestorMatchingSpan = findAncestorMatchingSpan;
|
|
161208
161404
|
})(codefix = ts.codefix || (ts.codefix = {}));
|
|
161209
161405
|
})(ts || (ts = {}));
|
|
161210
161406
|
/* @internal */
|