@typescript-deploys/pr-build 5.1.0-pr-51328-34 → 5.1.0-pr-53729-10

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 CHANGED
@@ -18,7 +18,7 @@ and limitations under the License.
18
18
 
19
19
  // src/compiler/corePublic.ts
20
20
  var versionMajorMinor = "5.1";
21
- var version = `${versionMajorMinor}.0-insiders.20230411`;
21
+ var version = `${versionMajorMinor}.0-insiders.20230412`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -7741,8 +7741,7 @@ var Diagnostics = {
7741
7741
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
7742
7742
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
7743
7743
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
7744
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
7745
- Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type.")
7744
+ Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'")
7746
7745
  };
7747
7746
 
7748
7747
  // src/compiler/scanner.ts
@@ -43408,6 +43407,8 @@ function createTypeChecker(host) {
43408
43407
  var resolutionTargets = [];
43409
43408
  var resolutionResults = [];
43410
43409
  var resolutionPropertyNames = [];
43410
+ var resolutionStart = 0;
43411
+ var inVarianceComputation = false;
43411
43412
  var suggestionCount = 0;
43412
43413
  var maximumSuggestionCount = 10;
43413
43414
  var mergedSymbols = [];
@@ -50608,7 +50609,7 @@ function createTypeChecker(host) {
50608
50609
  return true;
50609
50610
  }
50610
50611
  function findResolutionCycleStartIndex(target, propertyName) {
50611
- for (let i = resolutionTargets.length - 1; i >= 0; i--) {
50612
+ for (let i = resolutionTargets.length - 1; i >= resolutionStart; i--) {
50612
50613
  if (resolutionTargetHasProperty(resolutionTargets[i], resolutionPropertyNames[i])) {
50613
50614
  return -1;
50614
50615
  }
@@ -61580,40 +61581,31 @@ function createTypeChecker(host) {
61580
61581
  return getPropertiesOfType(type).filter((targetProp) => containsMissingType(getTypeOfSymbol(targetProp)));
61581
61582
  }
61582
61583
  function getBestMatchingType(source, target, isRelatedTo = compareTypesAssignable) {
61583
- return findMatchingDiscriminantType(
61584
- source,
61585
- target,
61586
- isRelatedTo,
61587
- /*skipPartial*/
61588
- true
61589
- ) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
61584
+ return findMatchingDiscriminantType(source, target, isRelatedTo) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
61590
61585
  }
61591
- function discriminateTypeByDiscriminableItems(target, discriminators, related, defaultValue, skipPartial) {
61592
- const discriminable = target.types.map((_) => void 0);
61586
+ function discriminateTypeByDiscriminableItems(target, discriminators, related) {
61587
+ const types = target.types;
61588
+ const include = types.map((t) => t.flags & 402784252 /* Primitive */ ? 0 /* False */ : -1 /* True */);
61593
61589
  for (const [getDiscriminatingType, propertyName] of discriminators) {
61594
- const targetProp = getUnionOrIntersectionProperty(target, propertyName);
61595
- if (skipPartial && targetProp && getCheckFlags(targetProp) & 16 /* ReadPartial */) {
61596
- continue;
61590
+ let matched = false;
61591
+ for (let i = 0; i < types.length; i++) {
61592
+ if (include[i]) {
61593
+ const targetType = getTypeOfPropertyOfType(types[i], propertyName);
61594
+ if (targetType && related(getDiscriminatingType(), targetType)) {
61595
+ matched = true;
61596
+ } else {
61597
+ include[i] = 3 /* Maybe */;
61598
+ }
61599
+ }
61597
61600
  }
61598
- let i = 0;
61599
- for (const type of target.types) {
61600
- const targetType = getTypeOfPropertyOfType(type, propertyName);
61601
- if (targetType && related(getDiscriminatingType(), targetType)) {
61602
- discriminable[i] = discriminable[i] === void 0 ? true : discriminable[i];
61603
- } else {
61604
- discriminable[i] = false;
61601
+ for (let i = 0; i < types.length; i++) {
61602
+ if (include[i] === 3 /* Maybe */) {
61603
+ include[i] = matched ? 0 /* False */ : -1 /* True */;
61605
61604
  }
61606
- i++;
61607
61605
  }
61608
61606
  }
61609
- const match = discriminable.indexOf(
61610
- /*searchElement*/
61611
- true
61612
- );
61613
- if (match === -1) {
61614
- return defaultValue;
61615
- }
61616
- return getUnionType(target.types.filter((_, index) => discriminable[index]));
61607
+ const filtered = contains(include, 0 /* False */) ? getUnionType(types.filter((_, i) => include[i])) : target;
61608
+ return filtered.flags & 131072 /* Never */ ? target : filtered;
61617
61609
  }
61618
61610
  function isWeakType(type) {
61619
61611
  if (type.flags & 524288 /* Object */) {
@@ -61644,6 +61636,11 @@ function createTypeChecker(host) {
61644
61636
  const links = getSymbolLinks(symbol);
61645
61637
  if (!links.variances) {
61646
61638
  (_a2 = tracing) == null ? void 0 : _a2.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
61639
+ const oldVarianceComputation = inVarianceComputation;
61640
+ if (!inVarianceComputation) {
61641
+ inVarianceComputation = true;
61642
+ resolutionStart = resolutionTargets.length;
61643
+ }
61647
61644
  links.variances = emptyArray;
61648
61645
  const variances = [];
61649
61646
  for (const tp of typeParameters) {
@@ -61672,6 +61669,10 @@ function createTypeChecker(host) {
61672
61669
  }
61673
61670
  variances.push(variance);
61674
61671
  }
61672
+ if (!oldVarianceComputation) {
61673
+ inVarianceComputation = false;
61674
+ resolutionStart = 0;
61675
+ }
61675
61676
  links.variances = variances;
61676
61677
  (_b = tracing) == null ? void 0 : _b.pop({ variances: variances.map(Debug.formatVariance) });
61677
61678
  }
@@ -66908,8 +66909,7 @@ function createTypeChecker(host) {
66908
66909
  (s) => [() => undefinedType, s.escapedName]
66909
66910
  )
66910
66911
  ),
66911
- isTypeAssignableTo,
66912
- contextualType
66912
+ isTypeAssignableTo
66913
66913
  );
66914
66914
  }
66915
66915
  function discriminateContextualTypeByJSXAttributes(node, contextualType) {
@@ -66928,8 +66928,7 @@ function createTypeChecker(host) {
66928
66928
  (s) => [() => undefinedType, s.escapedName]
66929
66929
  )
66930
66930
  ),
66931
- isTypeAssignableTo,
66932
- contextualType
66931
+ isTypeAssignableTo
66933
66932
  );
66934
66933
  }
66935
66934
  function getApparentTypeOfContextualType(node, contextFlags) {
@@ -68169,12 +68168,6 @@ function createTypeChecker(host) {
68169
68168
  return getUnionType([jsxElementType, nullType]);
68170
68169
  }
68171
68170
  }
68172
- function getJsxElementTypeTypeAt(location) {
68173
- const type = getJsxType(JsxNames.ElementType, location);
68174
- if (isErrorType(type))
68175
- return void 0;
68176
- return type;
68177
- }
68178
68171
  function getJsxIntrinsicTagNamesAt(location) {
68179
68172
  const intrinsics = getJsxType(JsxNames.IntrinsicElements, location);
68180
68173
  return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray;
@@ -68237,24 +68230,7 @@ function createTypeChecker(host) {
68237
68230
  const jsxOpeningLikeNode = node;
68238
68231
  const sig = getResolvedSignature(jsxOpeningLikeNode);
68239
68232
  checkDeprecatedSignature(sig, node);
68240
- const elementTypeConstraint = getJsxElementTypeTypeAt(jsxOpeningLikeNode);
68241
- if (elementTypeConstraint !== void 0) {
68242
- const tagType = isJsxIntrinsicIdentifier(jsxOpeningLikeNode.tagName) ? (
68243
- // TODO: Should this be a literal that library authors could potentially check against?
68244
- stringType
68245
- ) : getApparentType(checkExpression(jsxOpeningLikeNode.tagName));
68246
- checkTypeRelatedTo(tagType, elementTypeConstraint, assignableRelation, jsxOpeningLikeNode.tagName, Diagnostics.Its_type_0_is_not_a_valid_JSX_element_type, () => {
68247
- const componentName = getTextOfNode(jsxOpeningLikeNode.tagName);
68248
- return chainDiagnosticMessages(
68249
- /*details*/
68250
- void 0,
68251
- Diagnostics._0_cannot_be_used_as_a_JSX_component,
68252
- componentName
68253
- );
68254
- });
68255
- } else {
68256
- checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
68257
- }
68233
+ checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
68258
68234
  }
68259
68235
  }
68260
68236
  function isKnownProperty(targetType, name, isComparingJsxAttributes) {
@@ -82966,7 +82942,7 @@ function createTypeChecker(host) {
82966
82942
  }
82967
82943
  return type;
82968
82944
  }
82969
- function findMatchingDiscriminantType(source, target, isRelatedTo, skipPartial) {
82945
+ function findMatchingDiscriminantType(source, target, isRelatedTo) {
82970
82946
  if (target.flags & 1048576 /* Union */ && source.flags & (2097152 /* Intersection */ | 524288 /* Object */)) {
82971
82947
  const match = getMatchingUnionConstituentForType(target, source);
82972
82948
  if (match) {
@@ -82976,14 +82952,10 @@ function createTypeChecker(host) {
82976
82952
  if (sourceProperties) {
82977
82953
  const sourcePropertiesFiltered = findDiscriminantProperties(sourceProperties, target);
82978
82954
  if (sourcePropertiesFiltered) {
82979
- return discriminateTypeByDiscriminableItems(
82980
- target,
82981
- map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]),
82982
- isRelatedTo,
82983
- /*defaultValue*/
82984
- void 0,
82985
- skipPartial
82986
- );
82955
+ const discriminated = discriminateTypeByDiscriminableItems(target, map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]), isRelatedTo);
82956
+ if (discriminated !== target) {
82957
+ return discriminated;
82958
+ }
82987
82959
  }
82988
82960
  }
82989
82961
  }
@@ -83017,7 +82989,6 @@ var JsxNames;
83017
82989
  JsxNames2.ElementAttributesPropertyNameContainer = "ElementAttributesProperty";
83018
82990
  JsxNames2.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute";
83019
82991
  JsxNames2.Element = "Element";
83020
- JsxNames2.ElementType = "ElementType";
83021
82992
  JsxNames2.IntrinsicAttributes = "IntrinsicAttributes";
83022
82993
  JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes";
83023
82994
  JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes";
package/lib/tsserver.js CHANGED
@@ -2293,7 +2293,7 @@ module.exports = __toCommonJS(server_exports);
2293
2293
 
2294
2294
  // src/compiler/corePublic.ts
2295
2295
  var versionMajorMinor = "5.1";
2296
- var version = `${versionMajorMinor}.0-insiders.20230411`;
2296
+ var version = `${versionMajorMinor}.0-insiders.20230412`;
2297
2297
  var Comparison = /* @__PURE__ */ ((Comparison3) => {
2298
2298
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
2299
2299
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -11242,8 +11242,7 @@ var Diagnostics = {
11242
11242
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
11243
11243
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
11244
11244
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
11245
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
11246
- Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type.")
11245
+ Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'")
11247
11246
  };
11248
11247
 
11249
11248
  // src/compiler/scanner.ts
@@ -48058,6 +48057,8 @@ function createTypeChecker(host) {
48058
48057
  var resolutionTargets = [];
48059
48058
  var resolutionResults = [];
48060
48059
  var resolutionPropertyNames = [];
48060
+ var resolutionStart = 0;
48061
+ var inVarianceComputation = false;
48061
48062
  var suggestionCount = 0;
48062
48063
  var maximumSuggestionCount = 10;
48063
48064
  var mergedSymbols = [];
@@ -55258,7 +55259,7 @@ function createTypeChecker(host) {
55258
55259
  return true;
55259
55260
  }
55260
55261
  function findResolutionCycleStartIndex(target, propertyName) {
55261
- for (let i = resolutionTargets.length - 1; i >= 0; i--) {
55262
+ for (let i = resolutionTargets.length - 1; i >= resolutionStart; i--) {
55262
55263
  if (resolutionTargetHasProperty(resolutionTargets[i], resolutionPropertyNames[i])) {
55263
55264
  return -1;
55264
55265
  }
@@ -66230,40 +66231,31 @@ function createTypeChecker(host) {
66230
66231
  return getPropertiesOfType(type).filter((targetProp) => containsMissingType(getTypeOfSymbol(targetProp)));
66231
66232
  }
66232
66233
  function getBestMatchingType(source, target, isRelatedTo = compareTypesAssignable) {
66233
- return findMatchingDiscriminantType(
66234
- source,
66235
- target,
66236
- isRelatedTo,
66237
- /*skipPartial*/
66238
- true
66239
- ) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
66234
+ return findMatchingDiscriminantType(source, target, isRelatedTo) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
66240
66235
  }
66241
- function discriminateTypeByDiscriminableItems(target, discriminators, related, defaultValue, skipPartial) {
66242
- const discriminable = target.types.map((_) => void 0);
66236
+ function discriminateTypeByDiscriminableItems(target, discriminators, related) {
66237
+ const types = target.types;
66238
+ const include = types.map((t) => t.flags & 402784252 /* Primitive */ ? 0 /* False */ : -1 /* True */);
66243
66239
  for (const [getDiscriminatingType, propertyName] of discriminators) {
66244
- const targetProp = getUnionOrIntersectionProperty(target, propertyName);
66245
- if (skipPartial && targetProp && getCheckFlags(targetProp) & 16 /* ReadPartial */) {
66246
- continue;
66240
+ let matched = false;
66241
+ for (let i = 0; i < types.length; i++) {
66242
+ if (include[i]) {
66243
+ const targetType = getTypeOfPropertyOfType(types[i], propertyName);
66244
+ if (targetType && related(getDiscriminatingType(), targetType)) {
66245
+ matched = true;
66246
+ } else {
66247
+ include[i] = 3 /* Maybe */;
66248
+ }
66249
+ }
66247
66250
  }
66248
- let i = 0;
66249
- for (const type of target.types) {
66250
- const targetType = getTypeOfPropertyOfType(type, propertyName);
66251
- if (targetType && related(getDiscriminatingType(), targetType)) {
66252
- discriminable[i] = discriminable[i] === void 0 ? true : discriminable[i];
66253
- } else {
66254
- discriminable[i] = false;
66251
+ for (let i = 0; i < types.length; i++) {
66252
+ if (include[i] === 3 /* Maybe */) {
66253
+ include[i] = matched ? 0 /* False */ : -1 /* True */;
66255
66254
  }
66256
- i++;
66257
66255
  }
66258
66256
  }
66259
- const match = discriminable.indexOf(
66260
- /*searchElement*/
66261
- true
66262
- );
66263
- if (match === -1) {
66264
- return defaultValue;
66265
- }
66266
- return getUnionType(target.types.filter((_, index) => discriminable[index]));
66257
+ const filtered = contains(include, 0 /* False */) ? getUnionType(types.filter((_, i) => include[i])) : target;
66258
+ return filtered.flags & 131072 /* Never */ ? target : filtered;
66267
66259
  }
66268
66260
  function isWeakType(type) {
66269
66261
  if (type.flags & 524288 /* Object */) {
@@ -66294,6 +66286,11 @@ function createTypeChecker(host) {
66294
66286
  const links = getSymbolLinks(symbol);
66295
66287
  if (!links.variances) {
66296
66288
  (_a2 = tracing) == null ? void 0 : _a2.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
66289
+ const oldVarianceComputation = inVarianceComputation;
66290
+ if (!inVarianceComputation) {
66291
+ inVarianceComputation = true;
66292
+ resolutionStart = resolutionTargets.length;
66293
+ }
66297
66294
  links.variances = emptyArray;
66298
66295
  const variances = [];
66299
66296
  for (const tp of typeParameters) {
@@ -66322,6 +66319,10 @@ function createTypeChecker(host) {
66322
66319
  }
66323
66320
  variances.push(variance);
66324
66321
  }
66322
+ if (!oldVarianceComputation) {
66323
+ inVarianceComputation = false;
66324
+ resolutionStart = 0;
66325
+ }
66325
66326
  links.variances = variances;
66326
66327
  (_b = tracing) == null ? void 0 : _b.pop({ variances: variances.map(Debug.formatVariance) });
66327
66328
  }
@@ -71558,8 +71559,7 @@ function createTypeChecker(host) {
71558
71559
  (s) => [() => undefinedType, s.escapedName]
71559
71560
  )
71560
71561
  ),
71561
- isTypeAssignableTo,
71562
- contextualType
71562
+ isTypeAssignableTo
71563
71563
  );
71564
71564
  }
71565
71565
  function discriminateContextualTypeByJSXAttributes(node, contextualType) {
@@ -71578,8 +71578,7 @@ function createTypeChecker(host) {
71578
71578
  (s) => [() => undefinedType, s.escapedName]
71579
71579
  )
71580
71580
  ),
71581
- isTypeAssignableTo,
71582
- contextualType
71581
+ isTypeAssignableTo
71583
71582
  );
71584
71583
  }
71585
71584
  function getApparentTypeOfContextualType(node, contextFlags) {
@@ -72819,12 +72818,6 @@ function createTypeChecker(host) {
72819
72818
  return getUnionType([jsxElementType, nullType]);
72820
72819
  }
72821
72820
  }
72822
- function getJsxElementTypeTypeAt(location) {
72823
- const type = getJsxType(JsxNames.ElementType, location);
72824
- if (isErrorType(type))
72825
- return void 0;
72826
- return type;
72827
- }
72828
72821
  function getJsxIntrinsicTagNamesAt(location) {
72829
72822
  const intrinsics = getJsxType(JsxNames.IntrinsicElements, location);
72830
72823
  return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray;
@@ -72887,24 +72880,7 @@ function createTypeChecker(host) {
72887
72880
  const jsxOpeningLikeNode = node;
72888
72881
  const sig = getResolvedSignature(jsxOpeningLikeNode);
72889
72882
  checkDeprecatedSignature(sig, node);
72890
- const elementTypeConstraint = getJsxElementTypeTypeAt(jsxOpeningLikeNode);
72891
- if (elementTypeConstraint !== void 0) {
72892
- const tagType = isJsxIntrinsicIdentifier(jsxOpeningLikeNode.tagName) ? (
72893
- // TODO: Should this be a literal that library authors could potentially check against?
72894
- stringType
72895
- ) : getApparentType(checkExpression(jsxOpeningLikeNode.tagName));
72896
- checkTypeRelatedTo(tagType, elementTypeConstraint, assignableRelation, jsxOpeningLikeNode.tagName, Diagnostics.Its_type_0_is_not_a_valid_JSX_element_type, () => {
72897
- const componentName = getTextOfNode(jsxOpeningLikeNode.tagName);
72898
- return chainDiagnosticMessages(
72899
- /*details*/
72900
- void 0,
72901
- Diagnostics._0_cannot_be_used_as_a_JSX_component,
72902
- componentName
72903
- );
72904
- });
72905
- } else {
72906
- checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
72907
- }
72883
+ checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
72908
72884
  }
72909
72885
  }
72910
72886
  function isKnownProperty(targetType, name, isComparingJsxAttributes) {
@@ -87616,7 +87592,7 @@ function createTypeChecker(host) {
87616
87592
  }
87617
87593
  return type;
87618
87594
  }
87619
- function findMatchingDiscriminantType(source, target, isRelatedTo, skipPartial) {
87595
+ function findMatchingDiscriminantType(source, target, isRelatedTo) {
87620
87596
  if (target.flags & 1048576 /* Union */ && source.flags & (2097152 /* Intersection */ | 524288 /* Object */)) {
87621
87597
  const match = getMatchingUnionConstituentForType(target, source);
87622
87598
  if (match) {
@@ -87626,14 +87602,10 @@ function createTypeChecker(host) {
87626
87602
  if (sourceProperties) {
87627
87603
  const sourcePropertiesFiltered = findDiscriminantProperties(sourceProperties, target);
87628
87604
  if (sourcePropertiesFiltered) {
87629
- return discriminateTypeByDiscriminableItems(
87630
- target,
87631
- map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]),
87632
- isRelatedTo,
87633
- /*defaultValue*/
87634
- void 0,
87635
- skipPartial
87636
- );
87605
+ const discriminated = discriminateTypeByDiscriminableItems(target, map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]), isRelatedTo);
87606
+ if (discriminated !== target) {
87607
+ return discriminated;
87608
+ }
87637
87609
  }
87638
87610
  }
87639
87611
  }
@@ -87667,7 +87639,6 @@ var JsxNames;
87667
87639
  JsxNames2.ElementAttributesPropertyNameContainer = "ElementAttributesProperty";
87668
87640
  JsxNames2.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute";
87669
87641
  JsxNames2.Element = "Element";
87670
- JsxNames2.ElementType = "ElementType";
87671
87642
  JsxNames2.IntrinsicAttributes = "IntrinsicAttributes";
87672
87643
  JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes";
87673
87644
  JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes";
@@ -156299,6 +156270,7 @@ function getReferenceAtPosition(sourceFile, position, program) {
156299
156270
  return void 0;
156300
156271
  }
156301
156272
  function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) {
156273
+ var _a2;
156302
156274
  const node = getTouchingPropertyName(sourceFile, position);
156303
156275
  if (node === sourceFile) {
156304
156276
  return void 0;
@@ -156323,8 +156295,9 @@ function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) {
156323
156295
  const typeAtLocation = typeChecker.getTypeOfSymbolAtLocation(symbol, node);
156324
156296
  const returnType = tryGetReturnTypeOfFunction(symbol, typeAtLocation, typeChecker);
156325
156297
  const fromReturnType = returnType && definitionFromType(returnType, typeChecker, node, failedAliasResolution);
156326
- const typeDefinitions = fromReturnType && fromReturnType.length !== 0 ? fromReturnType : definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution);
156327
- return typeDefinitions.length ? typeDefinitions : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
156298
+ const [resolvedType, typeDefinitions] = fromReturnType && fromReturnType.length !== 0 ? [returnType, fromReturnType] : [typeAtLocation, definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution)];
156299
+ const singleTypeArgumentDefinition = !!(getObjectFlags(resolvedType) & 4 /* Reference */) && ((_a2 = resolvedType.resolvedTypeArguments) == null ? void 0 : _a2.length) === 1 ? definitionFromType(resolvedType.resolvedTypeArguments[0], typeChecker, node, failedAliasResolution) : [];
156300
+ return typeDefinitions.length ? [...singleTypeArgumentDefinition, ...typeDefinitions] : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
156328
156301
  }
156329
156302
  function definitionFromType(type, checker, node, failedAliasResolution) {
156330
156303
  return flatMap(type.isUnion() && !(type.flags & 32 /* Enum */) ? type.types : [type], (t) => t.symbol && getDefinitionFromSymbol(checker, t.symbol, node, failedAliasResolution));
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.1";
38
- version = `${versionMajorMinor}.0-insiders.20230411`;
38
+ version = `${versionMajorMinor}.0-insiders.20230412`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -9058,8 +9058,7 @@ ${lanes.join("\n")}
9058
9058
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
9059
9059
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
9060
9060
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
9061
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
9062
- Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type.")
9061
+ Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'")
9063
9062
  };
9064
9063
  }
9065
9064
  });
@@ -45859,6 +45858,8 @@ ${lanes.join("\n")}
45859
45858
  var resolutionTargets = [];
45860
45859
  var resolutionResults = [];
45861
45860
  var resolutionPropertyNames = [];
45861
+ var resolutionStart = 0;
45862
+ var inVarianceComputation = false;
45862
45863
  var suggestionCount = 0;
45863
45864
  var maximumSuggestionCount = 10;
45864
45865
  var mergedSymbols = [];
@@ -53059,7 +53060,7 @@ ${lanes.join("\n")}
53059
53060
  return true;
53060
53061
  }
53061
53062
  function findResolutionCycleStartIndex(target, propertyName) {
53062
- for (let i = resolutionTargets.length - 1; i >= 0; i--) {
53063
+ for (let i = resolutionTargets.length - 1; i >= resolutionStart; i--) {
53063
53064
  if (resolutionTargetHasProperty(resolutionTargets[i], resolutionPropertyNames[i])) {
53064
53065
  return -1;
53065
53066
  }
@@ -64031,40 +64032,31 @@ ${lanes.join("\n")}
64031
64032
  return getPropertiesOfType(type).filter((targetProp) => containsMissingType(getTypeOfSymbol(targetProp)));
64032
64033
  }
64033
64034
  function getBestMatchingType(source, target, isRelatedTo = compareTypesAssignable) {
64034
- return findMatchingDiscriminantType(
64035
- source,
64036
- target,
64037
- isRelatedTo,
64038
- /*skipPartial*/
64039
- true
64040
- ) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
64035
+ return findMatchingDiscriminantType(source, target, isRelatedTo) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
64041
64036
  }
64042
- function discriminateTypeByDiscriminableItems(target, discriminators, related, defaultValue, skipPartial) {
64043
- const discriminable = target.types.map((_) => void 0);
64037
+ function discriminateTypeByDiscriminableItems(target, discriminators, related) {
64038
+ const types = target.types;
64039
+ const include = types.map((t) => t.flags & 402784252 /* Primitive */ ? 0 /* False */ : -1 /* True */);
64044
64040
  for (const [getDiscriminatingType, propertyName] of discriminators) {
64045
- const targetProp = getUnionOrIntersectionProperty(target, propertyName);
64046
- if (skipPartial && targetProp && getCheckFlags(targetProp) & 16 /* ReadPartial */) {
64047
- continue;
64041
+ let matched = false;
64042
+ for (let i = 0; i < types.length; i++) {
64043
+ if (include[i]) {
64044
+ const targetType = getTypeOfPropertyOfType(types[i], propertyName);
64045
+ if (targetType && related(getDiscriminatingType(), targetType)) {
64046
+ matched = true;
64047
+ } else {
64048
+ include[i] = 3 /* Maybe */;
64049
+ }
64050
+ }
64048
64051
  }
64049
- let i = 0;
64050
- for (const type of target.types) {
64051
- const targetType = getTypeOfPropertyOfType(type, propertyName);
64052
- if (targetType && related(getDiscriminatingType(), targetType)) {
64053
- discriminable[i] = discriminable[i] === void 0 ? true : discriminable[i];
64054
- } else {
64055
- discriminable[i] = false;
64052
+ for (let i = 0; i < types.length; i++) {
64053
+ if (include[i] === 3 /* Maybe */) {
64054
+ include[i] = matched ? 0 /* False */ : -1 /* True */;
64056
64055
  }
64057
- i++;
64058
64056
  }
64059
64057
  }
64060
- const match = discriminable.indexOf(
64061
- /*searchElement*/
64062
- true
64063
- );
64064
- if (match === -1) {
64065
- return defaultValue;
64066
- }
64067
- return getUnionType(target.types.filter((_, index) => discriminable[index]));
64058
+ const filtered = contains(include, 0 /* False */) ? getUnionType(types.filter((_, i) => include[i])) : target;
64059
+ return filtered.flags & 131072 /* Never */ ? target : filtered;
64068
64060
  }
64069
64061
  function isWeakType(type) {
64070
64062
  if (type.flags & 524288 /* Object */) {
@@ -64095,6 +64087,11 @@ ${lanes.join("\n")}
64095
64087
  const links = getSymbolLinks(symbol);
64096
64088
  if (!links.variances) {
64097
64089
  (_a2 = tracing) == null ? void 0 : _a2.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
64090
+ const oldVarianceComputation = inVarianceComputation;
64091
+ if (!inVarianceComputation) {
64092
+ inVarianceComputation = true;
64093
+ resolutionStart = resolutionTargets.length;
64094
+ }
64098
64095
  links.variances = emptyArray;
64099
64096
  const variances = [];
64100
64097
  for (const tp of typeParameters) {
@@ -64123,6 +64120,10 @@ ${lanes.join("\n")}
64123
64120
  }
64124
64121
  variances.push(variance);
64125
64122
  }
64123
+ if (!oldVarianceComputation) {
64124
+ inVarianceComputation = false;
64125
+ resolutionStart = 0;
64126
+ }
64126
64127
  links.variances = variances;
64127
64128
  (_b = tracing) == null ? void 0 : _b.pop({ variances: variances.map(Debug.formatVariance) });
64128
64129
  }
@@ -69359,8 +69360,7 @@ ${lanes.join("\n")}
69359
69360
  (s) => [() => undefinedType, s.escapedName]
69360
69361
  )
69361
69362
  ),
69362
- isTypeAssignableTo,
69363
- contextualType
69363
+ isTypeAssignableTo
69364
69364
  );
69365
69365
  }
69366
69366
  function discriminateContextualTypeByJSXAttributes(node, contextualType) {
@@ -69379,8 +69379,7 @@ ${lanes.join("\n")}
69379
69379
  (s) => [() => undefinedType, s.escapedName]
69380
69380
  )
69381
69381
  ),
69382
- isTypeAssignableTo,
69383
- contextualType
69382
+ isTypeAssignableTo
69384
69383
  );
69385
69384
  }
69386
69385
  function getApparentTypeOfContextualType(node, contextFlags) {
@@ -70620,12 +70619,6 @@ ${lanes.join("\n")}
70620
70619
  return getUnionType([jsxElementType, nullType]);
70621
70620
  }
70622
70621
  }
70623
- function getJsxElementTypeTypeAt(location) {
70624
- const type = getJsxType(JsxNames.ElementType, location);
70625
- if (isErrorType(type))
70626
- return void 0;
70627
- return type;
70628
- }
70629
70622
  function getJsxIntrinsicTagNamesAt(location) {
70630
70623
  const intrinsics = getJsxType(JsxNames.IntrinsicElements, location);
70631
70624
  return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray;
@@ -70688,24 +70681,7 @@ ${lanes.join("\n")}
70688
70681
  const jsxOpeningLikeNode = node;
70689
70682
  const sig = getResolvedSignature(jsxOpeningLikeNode);
70690
70683
  checkDeprecatedSignature(sig, node);
70691
- const elementTypeConstraint = getJsxElementTypeTypeAt(jsxOpeningLikeNode);
70692
- if (elementTypeConstraint !== void 0) {
70693
- const tagType = isJsxIntrinsicIdentifier(jsxOpeningLikeNode.tagName) ? (
70694
- // TODO: Should this be a literal that library authors could potentially check against?
70695
- stringType
70696
- ) : getApparentType(checkExpression(jsxOpeningLikeNode.tagName));
70697
- checkTypeRelatedTo(tagType, elementTypeConstraint, assignableRelation, jsxOpeningLikeNode.tagName, Diagnostics.Its_type_0_is_not_a_valid_JSX_element_type, () => {
70698
- const componentName = getTextOfNode(jsxOpeningLikeNode.tagName);
70699
- return chainDiagnosticMessages(
70700
- /*details*/
70701
- void 0,
70702
- Diagnostics._0_cannot_be_used_as_a_JSX_component,
70703
- componentName
70704
- );
70705
- });
70706
- } else {
70707
- checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
70708
- }
70684
+ checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
70709
70685
  }
70710
70686
  }
70711
70687
  function isKnownProperty(targetType, name, isComparingJsxAttributes) {
@@ -85417,7 +85393,7 @@ ${lanes.join("\n")}
85417
85393
  }
85418
85394
  return type;
85419
85395
  }
85420
- function findMatchingDiscriminantType(source, target, isRelatedTo, skipPartial) {
85396
+ function findMatchingDiscriminantType(source, target, isRelatedTo) {
85421
85397
  if (target.flags & 1048576 /* Union */ && source.flags & (2097152 /* Intersection */ | 524288 /* Object */)) {
85422
85398
  const match = getMatchingUnionConstituentForType(target, source);
85423
85399
  if (match) {
@@ -85427,14 +85403,10 @@ ${lanes.join("\n")}
85427
85403
  if (sourceProperties) {
85428
85404
  const sourcePropertiesFiltered = findDiscriminantProperties(sourceProperties, target);
85429
85405
  if (sourcePropertiesFiltered) {
85430
- return discriminateTypeByDiscriminableItems(
85431
- target,
85432
- map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]),
85433
- isRelatedTo,
85434
- /*defaultValue*/
85435
- void 0,
85436
- skipPartial
85437
- );
85406
+ const discriminated = discriminateTypeByDiscriminableItems(target, map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]), isRelatedTo);
85407
+ if (discriminated !== target) {
85408
+ return discriminated;
85409
+ }
85438
85410
  }
85439
85411
  }
85440
85412
  }
@@ -85633,7 +85605,6 @@ ${lanes.join("\n")}
85633
85605
  JsxNames2.ElementAttributesPropertyNameContainer = "ElementAttributesProperty";
85634
85606
  JsxNames2.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute";
85635
85607
  JsxNames2.Element = "Element";
85636
- JsxNames2.ElementType = "ElementType";
85637
85608
  JsxNames2.IntrinsicAttributes = "IntrinsicAttributes";
85638
85609
  JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes";
85639
85610
  JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes";
@@ -155451,6 +155422,7 @@ ${lanes.join("\n")}
155451
155422
  return void 0;
155452
155423
  }
155453
155424
  function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) {
155425
+ var _a2;
155454
155426
  const node = getTouchingPropertyName(sourceFile, position);
155455
155427
  if (node === sourceFile) {
155456
155428
  return void 0;
@@ -155475,8 +155447,9 @@ ${lanes.join("\n")}
155475
155447
  const typeAtLocation = typeChecker.getTypeOfSymbolAtLocation(symbol, node);
155476
155448
  const returnType = tryGetReturnTypeOfFunction(symbol, typeAtLocation, typeChecker);
155477
155449
  const fromReturnType = returnType && definitionFromType(returnType, typeChecker, node, failedAliasResolution);
155478
- const typeDefinitions = fromReturnType && fromReturnType.length !== 0 ? fromReturnType : definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution);
155479
- return typeDefinitions.length ? typeDefinitions : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
155450
+ const [resolvedType, typeDefinitions] = fromReturnType && fromReturnType.length !== 0 ? [returnType, fromReturnType] : [typeAtLocation, definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution)];
155451
+ const singleTypeArgumentDefinition = !!(getObjectFlags(resolvedType) & 4 /* Reference */) && ((_a2 = resolvedType.resolvedTypeArguments) == null ? void 0 : _a2.length) === 1 ? definitionFromType(resolvedType.resolvedTypeArguments[0], typeChecker, node, failedAliasResolution) : [];
155452
+ return typeDefinitions.length ? [...singleTypeArgumentDefinition, ...typeDefinitions] : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
155480
155453
  }
155481
155454
  function definitionFromType(type, checker, node, failedAliasResolution) {
155482
155455
  return flatMap(type.isUnion() && !(type.flags & 32 /* Enum */) ? type.types : [type], (t) => t.symbol && getDefinitionFromSymbol(checker, t.symbol, node, failedAliasResolution));
package/lib/typescript.js CHANGED
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.1";
38
- version = `${versionMajorMinor}.0-insiders.20230411`;
38
+ version = `${versionMajorMinor}.0-insiders.20230412`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -9058,8 +9058,7 @@ ${lanes.join("\n")}
9058
9058
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
9059
9059
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
9060
9060
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
9061
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
9062
- Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type.")
9061
+ Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'")
9063
9062
  };
9064
9063
  }
9065
9064
  });
@@ -45859,6 +45858,8 @@ ${lanes.join("\n")}
45859
45858
  var resolutionTargets = [];
45860
45859
  var resolutionResults = [];
45861
45860
  var resolutionPropertyNames = [];
45861
+ var resolutionStart = 0;
45862
+ var inVarianceComputation = false;
45862
45863
  var suggestionCount = 0;
45863
45864
  var maximumSuggestionCount = 10;
45864
45865
  var mergedSymbols = [];
@@ -53059,7 +53060,7 @@ ${lanes.join("\n")}
53059
53060
  return true;
53060
53061
  }
53061
53062
  function findResolutionCycleStartIndex(target, propertyName) {
53062
- for (let i = resolutionTargets.length - 1; i >= 0; i--) {
53063
+ for (let i = resolutionTargets.length - 1; i >= resolutionStart; i--) {
53063
53064
  if (resolutionTargetHasProperty(resolutionTargets[i], resolutionPropertyNames[i])) {
53064
53065
  return -1;
53065
53066
  }
@@ -64031,40 +64032,31 @@ ${lanes.join("\n")}
64031
64032
  return getPropertiesOfType(type).filter((targetProp) => containsMissingType(getTypeOfSymbol(targetProp)));
64032
64033
  }
64033
64034
  function getBestMatchingType(source, target, isRelatedTo = compareTypesAssignable) {
64034
- return findMatchingDiscriminantType(
64035
- source,
64036
- target,
64037
- isRelatedTo,
64038
- /*skipPartial*/
64039
- true
64040
- ) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
64035
+ return findMatchingDiscriminantType(source, target, isRelatedTo) || findMatchingTypeReferenceOrTypeAliasReference(source, target) || findBestTypeForObjectLiteral(source, target) || findBestTypeForInvokable(source, target) || findMostOverlappyType(source, target);
64041
64036
  }
64042
- function discriminateTypeByDiscriminableItems(target, discriminators, related, defaultValue, skipPartial) {
64043
- const discriminable = target.types.map((_) => void 0);
64037
+ function discriminateTypeByDiscriminableItems(target, discriminators, related) {
64038
+ const types = target.types;
64039
+ const include = types.map((t) => t.flags & 402784252 /* Primitive */ ? 0 /* False */ : -1 /* True */);
64044
64040
  for (const [getDiscriminatingType, propertyName] of discriminators) {
64045
- const targetProp = getUnionOrIntersectionProperty(target, propertyName);
64046
- if (skipPartial && targetProp && getCheckFlags(targetProp) & 16 /* ReadPartial */) {
64047
- continue;
64041
+ let matched = false;
64042
+ for (let i = 0; i < types.length; i++) {
64043
+ if (include[i]) {
64044
+ const targetType = getTypeOfPropertyOfType(types[i], propertyName);
64045
+ if (targetType && related(getDiscriminatingType(), targetType)) {
64046
+ matched = true;
64047
+ } else {
64048
+ include[i] = 3 /* Maybe */;
64049
+ }
64050
+ }
64048
64051
  }
64049
- let i = 0;
64050
- for (const type of target.types) {
64051
- const targetType = getTypeOfPropertyOfType(type, propertyName);
64052
- if (targetType && related(getDiscriminatingType(), targetType)) {
64053
- discriminable[i] = discriminable[i] === void 0 ? true : discriminable[i];
64054
- } else {
64055
- discriminable[i] = false;
64052
+ for (let i = 0; i < types.length; i++) {
64053
+ if (include[i] === 3 /* Maybe */) {
64054
+ include[i] = matched ? 0 /* False */ : -1 /* True */;
64056
64055
  }
64057
- i++;
64058
64056
  }
64059
64057
  }
64060
- const match = discriminable.indexOf(
64061
- /*searchElement*/
64062
- true
64063
- );
64064
- if (match === -1) {
64065
- return defaultValue;
64066
- }
64067
- return getUnionType(target.types.filter((_, index) => discriminable[index]));
64058
+ const filtered = contains(include, 0 /* False */) ? getUnionType(types.filter((_, i) => include[i])) : target;
64059
+ return filtered.flags & 131072 /* Never */ ? target : filtered;
64068
64060
  }
64069
64061
  function isWeakType(type) {
64070
64062
  if (type.flags & 524288 /* Object */) {
@@ -64095,6 +64087,11 @@ ${lanes.join("\n")}
64095
64087
  const links = getSymbolLinks(symbol);
64096
64088
  if (!links.variances) {
64097
64089
  (_a2 = tracing) == null ? void 0 : _a2.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
64090
+ const oldVarianceComputation = inVarianceComputation;
64091
+ if (!inVarianceComputation) {
64092
+ inVarianceComputation = true;
64093
+ resolutionStart = resolutionTargets.length;
64094
+ }
64098
64095
  links.variances = emptyArray;
64099
64096
  const variances = [];
64100
64097
  for (const tp of typeParameters) {
@@ -64123,6 +64120,10 @@ ${lanes.join("\n")}
64123
64120
  }
64124
64121
  variances.push(variance);
64125
64122
  }
64123
+ if (!oldVarianceComputation) {
64124
+ inVarianceComputation = false;
64125
+ resolutionStart = 0;
64126
+ }
64126
64127
  links.variances = variances;
64127
64128
  (_b = tracing) == null ? void 0 : _b.pop({ variances: variances.map(Debug.formatVariance) });
64128
64129
  }
@@ -69359,8 +69360,7 @@ ${lanes.join("\n")}
69359
69360
  (s) => [() => undefinedType, s.escapedName]
69360
69361
  )
69361
69362
  ),
69362
- isTypeAssignableTo,
69363
- contextualType
69363
+ isTypeAssignableTo
69364
69364
  );
69365
69365
  }
69366
69366
  function discriminateContextualTypeByJSXAttributes(node, contextualType) {
@@ -69379,8 +69379,7 @@ ${lanes.join("\n")}
69379
69379
  (s) => [() => undefinedType, s.escapedName]
69380
69380
  )
69381
69381
  ),
69382
- isTypeAssignableTo,
69383
- contextualType
69382
+ isTypeAssignableTo
69384
69383
  );
69385
69384
  }
69386
69385
  function getApparentTypeOfContextualType(node, contextFlags) {
@@ -70620,12 +70619,6 @@ ${lanes.join("\n")}
70620
70619
  return getUnionType([jsxElementType, nullType]);
70621
70620
  }
70622
70621
  }
70623
- function getJsxElementTypeTypeAt(location) {
70624
- const type = getJsxType(JsxNames.ElementType, location);
70625
- if (isErrorType(type))
70626
- return void 0;
70627
- return type;
70628
- }
70629
70622
  function getJsxIntrinsicTagNamesAt(location) {
70630
70623
  const intrinsics = getJsxType(JsxNames.IntrinsicElements, location);
70631
70624
  return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray;
@@ -70688,24 +70681,7 @@ ${lanes.join("\n")}
70688
70681
  const jsxOpeningLikeNode = node;
70689
70682
  const sig = getResolvedSignature(jsxOpeningLikeNode);
70690
70683
  checkDeprecatedSignature(sig, node);
70691
- const elementTypeConstraint = getJsxElementTypeTypeAt(jsxOpeningLikeNode);
70692
- if (elementTypeConstraint !== void 0) {
70693
- const tagType = isJsxIntrinsicIdentifier(jsxOpeningLikeNode.tagName) ? (
70694
- // TODO: Should this be a literal that library authors could potentially check against?
70695
- stringType
70696
- ) : getApparentType(checkExpression(jsxOpeningLikeNode.tagName));
70697
- checkTypeRelatedTo(tagType, elementTypeConstraint, assignableRelation, jsxOpeningLikeNode.tagName, Diagnostics.Its_type_0_is_not_a_valid_JSX_element_type, () => {
70698
- const componentName = getTextOfNode(jsxOpeningLikeNode.tagName);
70699
- return chainDiagnosticMessages(
70700
- /*details*/
70701
- void 0,
70702
- Diagnostics._0_cannot_be_used_as_a_JSX_component,
70703
- componentName
70704
- );
70705
- });
70706
- } else {
70707
- checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
70708
- }
70684
+ checkJsxReturnAssignableToAppropriateBound(getJsxReferenceKind(jsxOpeningLikeNode), getReturnTypeOfSignature(sig), jsxOpeningLikeNode);
70709
70685
  }
70710
70686
  }
70711
70687
  function isKnownProperty(targetType, name, isComparingJsxAttributes) {
@@ -85417,7 +85393,7 @@ ${lanes.join("\n")}
85417
85393
  }
85418
85394
  return type;
85419
85395
  }
85420
- function findMatchingDiscriminantType(source, target, isRelatedTo, skipPartial) {
85396
+ function findMatchingDiscriminantType(source, target, isRelatedTo) {
85421
85397
  if (target.flags & 1048576 /* Union */ && source.flags & (2097152 /* Intersection */ | 524288 /* Object */)) {
85422
85398
  const match = getMatchingUnionConstituentForType(target, source);
85423
85399
  if (match) {
@@ -85427,14 +85403,10 @@ ${lanes.join("\n")}
85427
85403
  if (sourceProperties) {
85428
85404
  const sourcePropertiesFiltered = findDiscriminantProperties(sourceProperties, target);
85429
85405
  if (sourcePropertiesFiltered) {
85430
- return discriminateTypeByDiscriminableItems(
85431
- target,
85432
- map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]),
85433
- isRelatedTo,
85434
- /*defaultValue*/
85435
- void 0,
85436
- skipPartial
85437
- );
85406
+ const discriminated = discriminateTypeByDiscriminableItems(target, map(sourcePropertiesFiltered, (p) => [() => getTypeOfSymbol(p), p.escapedName]), isRelatedTo);
85407
+ if (discriminated !== target) {
85408
+ return discriminated;
85409
+ }
85438
85410
  }
85439
85411
  }
85440
85412
  }
@@ -85633,7 +85605,6 @@ ${lanes.join("\n")}
85633
85605
  JsxNames2.ElementAttributesPropertyNameContainer = "ElementAttributesProperty";
85634
85606
  JsxNames2.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute";
85635
85607
  JsxNames2.Element = "Element";
85636
- JsxNames2.ElementType = "ElementType";
85637
85608
  JsxNames2.IntrinsicAttributes = "IntrinsicAttributes";
85638
85609
  JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes";
85639
85610
  JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes";
@@ -155465,6 +155436,7 @@ ${lanes.join("\n")}
155465
155436
  return void 0;
155466
155437
  }
155467
155438
  function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) {
155439
+ var _a2;
155468
155440
  const node = getTouchingPropertyName(sourceFile, position);
155469
155441
  if (node === sourceFile) {
155470
155442
  return void 0;
@@ -155489,8 +155461,9 @@ ${lanes.join("\n")}
155489
155461
  const typeAtLocation = typeChecker.getTypeOfSymbolAtLocation(symbol, node);
155490
155462
  const returnType = tryGetReturnTypeOfFunction(symbol, typeAtLocation, typeChecker);
155491
155463
  const fromReturnType = returnType && definitionFromType(returnType, typeChecker, node, failedAliasResolution);
155492
- const typeDefinitions = fromReturnType && fromReturnType.length !== 0 ? fromReturnType : definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution);
155493
- return typeDefinitions.length ? typeDefinitions : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
155464
+ const [resolvedType, typeDefinitions] = fromReturnType && fromReturnType.length !== 0 ? [returnType, fromReturnType] : [typeAtLocation, definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution)];
155465
+ const singleTypeArgumentDefinition = !!(getObjectFlags(resolvedType) & 4 /* Reference */) && ((_a2 = resolvedType.resolvedTypeArguments) == null ? void 0 : _a2.length) === 1 ? definitionFromType(resolvedType.resolvedTypeArguments[0], typeChecker, node, failedAliasResolution) : [];
155466
+ return typeDefinitions.length ? [...singleTypeArgumentDefinition, ...typeDefinitions] : !(symbol.flags & 111551 /* Value */) && symbol.flags & 788968 /* Type */ ? getDefinitionFromSymbol(typeChecker, skipAlias(symbol, typeChecker), node, failedAliasResolution) : void 0;
155494
155467
  }
155495
155468
  function definitionFromType(type, checker, node, failedAliasResolution) {
155496
155469
  return flatMap(type.isUnion() && !(type.flags & 32 /* Enum */) ? type.types : [type], (t) => t.symbol && getDefinitionFromSymbol(checker, t.symbol, node, failedAliasResolution));
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
54
54
 
55
55
  // src/compiler/corePublic.ts
56
56
  var versionMajorMinor = "5.1";
57
- var version = `${versionMajorMinor}.0-insiders.20230411`;
57
+ var version = `${versionMajorMinor}.0-insiders.20230412`;
58
58
 
59
59
  // src/compiler/core.ts
60
60
  var emptyArray = [];
@@ -7121,8 +7121,7 @@ var Diagnostics = {
7121
7121
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
7122
7122
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
7123
7123
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
7124
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
7125
- Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type.")
7124
+ Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'")
7126
7125
  };
7127
7126
 
7128
7127
  // src/compiler/scanner.ts
@@ -28888,7 +28887,6 @@ var JsxNames;
28888
28887
  JsxNames2.ElementAttributesPropertyNameContainer = "ElementAttributesProperty";
28889
28888
  JsxNames2.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute";
28890
28889
  JsxNames2.Element = "Element";
28891
- JsxNames2.ElementType = "ElementType";
28892
28890
  JsxNames2.IntrinsicAttributes = "IntrinsicAttributes";
28893
28891
  JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes";
28894
28892
  JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typescript-deploys/pr-build",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.1.0-pr-51328-34",
5
+ "version": "5.1.0-pr-53729-10",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -114,5 +114,5 @@
114
114
  "node": "14.21.1",
115
115
  "npm": "8.19.3"
116
116
  },
117
- "gitHead": "4c0ad0eb588205a6ba5138b2e0b20babfe3896d3"
117
+ "gitHead": "70986e011d048e97c7e5db3daf0e326977b3a4c3"
118
118
  }