typescript 4.8.0-dev.20220531 → 4.8.0-dev.20220601

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/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20220531";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220601";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -8905,6 +8905,7 @@ var ts;
8905
8905
  Import_assertion_values_must_be_string_literal_expressions: diag(2837, ts.DiagnosticCategory.Error, "Import_assertion_values_must_be_string_literal_expressions_2837", "Import assertion values must be string literal expressions."),
8906
8906
  All_declarations_of_0_must_have_identical_constraints: diag(2838, ts.DiagnosticCategory.Error, "All_declarations_of_0_must_have_identical_constraints_2838", "All declarations of '{0}' must have identical constraints."),
8907
8907
  This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value: diag(2839, ts.DiagnosticCategory.Error, "This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value_2839", "This condition will always return '{0}' since JavaScript compares objects by reference, not value."),
8908
+ An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_classes: diag(2840, ts.DiagnosticCategory.Error, "An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_clas_2840", "An interface cannot extend a primitive type like '{0}'; an interface can only extend named types and classes"),
8908
8909
  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}'."),
8909
8910
  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}'."),
8910
8911
  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}'."),
@@ -44174,8 +44175,8 @@ var ts;
44174
44175
  var pathAndExtension = loadModuleFromFile(extensions, candidate, onlyRecordFailures, state) ||
44175
44176
  loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFailures, state, packageInfo && packageInfo.packageJsonContent, packageInfo && packageInfo.versionPaths);
44176
44177
  if (!pathAndExtension && packageInfo
44177
- && packageInfo.packageJsonContent.exports === undefined
44178
- && packageInfo.packageJsonContent.main === undefined
44178
+ // eslint-disable-next-line no-null/no-null
44179
+ && (packageInfo.packageJsonContent.exports === undefined || packageInfo.packageJsonContent.exports === null)
44179
44180
  && state.features & NodeResolutionFeatures.EsmMode) {
44180
44181
  // EsmMode disables index lookup in `loadNodeModuleFromDirectoryWorker` generally, however non-relative package resolutions still assume
44181
44182
  // a default `index.js` entrypoint if no `main` or `exports` are present
@@ -47840,7 +47841,10 @@ var ts;
47840
47841
  TypeFacts[TypeFacts["NEUndefinedOrNull"] = 2097152] = "NEUndefinedOrNull";
47841
47842
  TypeFacts[TypeFacts["Truthy"] = 4194304] = "Truthy";
47842
47843
  TypeFacts[TypeFacts["Falsy"] = 8388608] = "Falsy";
47843
- TypeFacts[TypeFacts["All"] = 16777215] = "All";
47844
+ TypeFacts[TypeFacts["IsUndefined"] = 16777216] = "IsUndefined";
47845
+ TypeFacts[TypeFacts["IsNull"] = 33554432] = "IsNull";
47846
+ TypeFacts[TypeFacts["IsUndefinedOrNull"] = 50331648] = "IsUndefinedOrNull";
47847
+ TypeFacts[TypeFacts["All"] = 134217727] = "All";
47844
47848
  // The following members encode facts about particular kinds of types for use in the getTypeFacts function.
47845
47849
  // The presence of a particular fact means that the given test is true for some (and possibly all) values
47846
47850
  // of that kind of type.
@@ -47882,14 +47886,16 @@ var ts;
47882
47886
  TypeFacts[TypeFacts["ObjectFacts"] = 16736160] = "ObjectFacts";
47883
47887
  TypeFacts[TypeFacts["FunctionStrictFacts"] = 7880640] = "FunctionStrictFacts";
47884
47888
  TypeFacts[TypeFacts["FunctionFacts"] = 16728000] = "FunctionFacts";
47885
- TypeFacts[TypeFacts["UndefinedFacts"] = 9830144] = "UndefinedFacts";
47886
- TypeFacts[TypeFacts["NullFacts"] = 9363232] = "NullFacts";
47887
- TypeFacts[TypeFacts["EmptyObjectStrictFacts"] = 16318463] = "EmptyObjectStrictFacts";
47889
+ TypeFacts[TypeFacts["VoidFacts"] = 9830144] = "VoidFacts";
47890
+ TypeFacts[TypeFacts["UndefinedFacts"] = 26607360] = "UndefinedFacts";
47891
+ TypeFacts[TypeFacts["NullFacts"] = 42917664] = "NullFacts";
47892
+ TypeFacts[TypeFacts["EmptyObjectStrictFacts"] = 83427327] = "EmptyObjectStrictFacts";
47893
+ TypeFacts[TypeFacts["EmptyObjectFacts"] = 83886079] = "EmptyObjectFacts";
47894
+ TypeFacts[TypeFacts["UnknownFacts"] = 83886079] = "UnknownFacts";
47888
47895
  TypeFacts[TypeFacts["AllTypeofNE"] = 556800] = "AllTypeofNE";
47889
- TypeFacts[TypeFacts["EmptyObjectFacts"] = 16777215] = "EmptyObjectFacts";
47890
47896
  // Masks
47891
47897
  TypeFacts[TypeFacts["OrFactsMask"] = 8256] = "OrFactsMask";
47892
- TypeFacts[TypeFacts["AndFactsMask"] = 16768959] = "AndFactsMask";
47898
+ TypeFacts[TypeFacts["AndFactsMask"] = 134209471] = "AndFactsMask";
47893
47899
  })(TypeFacts || (TypeFacts = {}));
47894
47900
  var typeofEQFacts = new ts.Map(ts.getEntries({
47895
47901
  string: 1 /* TypeofEQString */,
@@ -50053,7 +50059,12 @@ var ts;
50053
50059
  function checkAndReportErrorForUsingTypeAsValue(errorLocation, name, meaning) {
50054
50060
  if (meaning & (111551 /* Value */ & ~1024 /* NamespaceModule */)) {
50055
50061
  if (isPrimitiveTypeName(name)) {
50056
- error(errorLocation, ts.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here, ts.unescapeLeadingUnderscores(name));
50062
+ if (isExtendedByInterface(errorLocation)) {
50063
+ error(errorLocation, ts.Diagnostics.An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_classes, ts.unescapeLeadingUnderscores(name));
50064
+ }
50065
+ else {
50066
+ error(errorLocation, ts.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here, ts.unescapeLeadingUnderscores(name));
50067
+ }
50057
50068
  return true;
50058
50069
  }
50059
50070
  var symbol = resolveSymbol(resolveName(errorLocation, name, 788968 /* Type */ & ~111551 /* Value */, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined, /*isUse*/ false));
@@ -50073,6 +50084,16 @@ var ts;
50073
50084
  }
50074
50085
  return false;
50075
50086
  }
50087
+ function isExtendedByInterface(node) {
50088
+ var grandparent = node.parent.parent;
50089
+ var parentOfGrandparent = grandparent.parent;
50090
+ if (grandparent && parentOfGrandparent) {
50091
+ var isExtending = ts.isHeritageClause(grandparent) && grandparent.token === 94 /* ExtendsKeyword */;
50092
+ var isInterface = ts.isInterfaceDeclaration(parentOfGrandparent);
50093
+ return isExtending && isInterface;
50094
+ }
50095
+ return false;
50096
+ }
50076
50097
  function maybeMappedType(node, symbol) {
50077
50098
  var container = ts.findAncestor(node.parent, function (n) {
50078
50099
  return ts.isComputedPropertyName(n) || ts.isPropertySignature(n) ? false : ts.isTypeLiteralNode(n) || "quit";
@@ -52913,7 +52934,7 @@ var ts;
52913
52934
  anyType : getNonMissingTypeOfSymbol(propertySymbol);
52914
52935
  var saveEnclosingDeclaration = context.enclosingDeclaration;
52915
52936
  context.enclosingDeclaration = undefined;
52916
- if (context.tracker.trackSymbol && ts.getCheckFlags(propertySymbol) & 4096 /* Late */ && isLateBoundName(propertySymbol.escapedName)) {
52937
+ if (context.tracker.trackSymbol && isLateBoundName(propertySymbol.escapedName)) {
52917
52938
  if (propertySymbol.declarations) {
52918
52939
  var decl = ts.first(propertySymbol.declarations);
52919
52940
  if (hasLateBindableName(decl)) {
@@ -54597,7 +54618,7 @@ var ts;
54597
54618
  ? getBaseConstructorTypeOfClass(staticType)
54598
54619
  : anyType;
54599
54620
  var heritageClauses = __spreadArray(__spreadArray([], !ts.length(baseTypes) ? [] : [ts.factory.createHeritageClause(94 /* ExtendsKeyword */, ts.map(baseTypes, function (b) { return serializeBaseType(b, staticBaseType, localName); }))], true), !ts.length(implementsExpressions) ? [] : [ts.factory.createHeritageClause(117 /* ImplementsKeyword */, implementsExpressions)], true);
54600
- var symbolProps = getNonInterhitedProperties(classType, baseTypes, getPropertiesOfType(classType));
54621
+ var symbolProps = getNonInheritedProperties(classType, baseTypes, getPropertiesOfType(classType));
54601
54622
  var publicSymbolProps = ts.filter(symbolProps, function (s) {
54602
54623
  // `valueDeclaration` could be undefined if inherited from
54603
54624
  // a union/intersection base type, but inherited properties
@@ -55735,7 +55756,7 @@ var ts;
55735
55756
  if (ts.getEffectiveTypeAnnotationNode(ts.walkUpBindingElementsAndPatterns(declaration))) {
55736
55757
  // In strict null checking mode, if a default value of a non-undefined type is specified, remove
55737
55758
  // undefined from the final type.
55738
- return strictNullChecks && !(getFalsyFlags(checkDeclarationInitializer(declaration, 0 /* Normal */)) & 32768 /* Undefined */) ? getNonUndefinedType(type) : type;
55759
+ return strictNullChecks && !(getTypeFacts(checkDeclarationInitializer(declaration, 0 /* Normal */)) & 16777216 /* IsUndefined */) ? getNonUndefinedType(type) : type;
55739
55760
  }
55740
55761
  return widenTypeInferredFromInitializer(declaration, getUnionType([getNonUndefinedType(type), checkDeclarationInitializer(declaration, 0 /* Normal */)], 2 /* Subtype */));
55741
55762
  }
@@ -64230,7 +64251,7 @@ var ts;
64230
64251
  var sourceSig = checkMode & 3 /* Callback */ ? undefined : getSingleCallSignature(getNonNullableType(sourceType));
64231
64252
  var targetSig = checkMode & 3 /* Callback */ ? undefined : getSingleCallSignature(getNonNullableType(targetType));
64232
64253
  var callbacks = sourceSig && targetSig && !getTypePredicateOfSignature(sourceSig) && !getTypePredicateOfSignature(targetSig) &&
64233
- (getFalsyFlags(sourceType) & 98304 /* Nullable */) === (getFalsyFlags(targetType) & 98304 /* Nullable */);
64254
+ (getTypeFacts(sourceType) & 50331648 /* IsUndefinedOrNull */) === (getTypeFacts(targetType) & 50331648 /* IsUndefinedOrNull */);
64234
64255
  var related = callbacks ?
64235
64256
  compareSignaturesRelated(targetSig, sourceSig, (checkMode & 8 /* StrictArity */) | (strictVariance ? 2 /* StrictCallback */ : 1 /* BivariantCallback */), reportErrors, errorReporter, incompatibleErrorReporter, compareTypes, reportUnreliableMarkers) :
64236
64257
  !(checkMode & 3 /* Callback */) && !strictVariance && compareTypes(sourceType, targetType, /*reportErrors*/ false) || compareTypes(targetType, sourceType, reportErrors);
@@ -67448,30 +67469,8 @@ var ts;
67448
67469
  var value = _a.value;
67449
67470
  return value.base10Value === "0";
67450
67471
  }
67451
- function getFalsyFlagsOfTypes(types) {
67452
- var result = 0;
67453
- for (var _i = 0, types_14 = types; _i < types_14.length; _i++) {
67454
- var t = types_14[_i];
67455
- result |= getFalsyFlags(t);
67456
- }
67457
- return result;
67458
- }
67459
- // Returns the String, Number, Boolean, StringLiteral, NumberLiteral, BooleanLiteral, Void, Undefined, or Null
67460
- // flags for the string, number, boolean, "", 0, false, void, undefined, or null types respectively. Returns
67461
- // no flags for all other types (including non-falsy literal types).
67462
- function getFalsyFlags(type) {
67463
- var t = type.flags & 2097152 /* Intersection */ ? getBaseConstraintOrType(type) : type;
67464
- return t.flags & 1048576 /* Union */ ? getFalsyFlagsOfTypes(t.types) :
67465
- t.flags & 128 /* StringLiteral */ ? t.value === "" ? 128 /* StringLiteral */ : 0 :
67466
- t.flags & 256 /* NumberLiteral */ ? t.value === 0 ? 256 /* NumberLiteral */ : 0 :
67467
- t.flags & 2048 /* BigIntLiteral */ ? isZeroBigInt(t) ? 2048 /* BigIntLiteral */ : 0 :
67468
- t.flags & 512 /* BooleanLiteral */ ? (t === falseType || t === regularFalseType) ? 512 /* BooleanLiteral */ : 0 :
67469
- t.flags & 117724 /* PossiblyFalsy */;
67470
- }
67471
67472
  function removeDefinitelyFalsyTypes(type) {
67472
- return getFalsyFlags(type) & 117632 /* DefinitelyFalsy */ ?
67473
- filterType(type, function (t) { return !(getFalsyFlags(t) & 117632 /* DefinitelyFalsy */); }) :
67474
- type;
67473
+ return filterType(type, function (t) { return !!(getTypeFacts(t) & 4194304 /* Truthy */); });
67475
67474
  }
67476
67475
  function extractDefinitelyFalsyTypes(type) {
67477
67476
  return mapType(type, getDefinitelyFalsyPartOfType);
@@ -67514,14 +67513,7 @@ var ts;
67514
67513
  getIntersectionType([type, emptyObjectType]);
67515
67514
  }
67516
67515
  function getNonNullableType(type) {
67517
- if (strictNullChecks) {
67518
- // First reduce away any constituents that are assignable to 'undefined' or 'null'. This not only eliminates
67519
- // 'undefined' and 'null', but also higher-order types such as a type parameter 'U extends undefined | null'
67520
- // that isn't eliminated by a NonNullable<T> instantiation.
67521
- var reducedType = getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
67522
- return maybeTypeOfKind(reducedType, 465829888 /* Instantiable */) ? getGlobalNonNullableTypeInstantiation(reducedType) : reducedType;
67523
- }
67524
- return type;
67516
+ return strictNullChecks ? getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */) : type;
67525
67517
  }
67526
67518
  function addOptionalTypeMarker(type) {
67527
67519
  return strictNullChecks ? getUnionType([type, optionalType]) : type;
@@ -68665,8 +68657,8 @@ var ts;
68665
68657
  }
68666
68658
  function getSingleTypeVariableFromIntersectionTypes(types) {
68667
68659
  var typeVariable;
68668
- for (var _i = 0, types_15 = types; _i < types_15.length; _i++) {
68669
- var type = types_15[_i];
68660
+ for (var _i = 0, types_14 = types; _i < types_14.length; _i++) {
68661
+ var type = types_14[_i];
68670
68662
  var t = type.flags & 2097152 /* Intersection */ && ts.find(type.types, function (t) { return !!getInferenceInfoForType(t); });
68671
68663
  if (!t || typeVariable && t !== typeVariable) {
68672
68664
  return undefined;
@@ -69419,8 +69411,8 @@ var ts;
69419
69411
  }
69420
69412
  }
69421
69413
  };
69422
- for (var _i = 0, types_16 = types; _i < types_16.length; _i++) {
69423
- var type = types_16[_i];
69414
+ for (var _i = 0, types_15 = types; _i < types_15.length; _i++) {
69415
+ var type = types_15[_i];
69424
69416
  var state_9 = _loop_24(type);
69425
69417
  if (typeof state_9 === "object")
69426
69418
  return state_9.value;
@@ -69535,14 +69527,16 @@ var ts;
69535
69527
  return !!(resolved.callSignatures.length || resolved.constructSignatures.length ||
69536
69528
  resolved.members.get("bind") && isTypeSubtypeOf(type, globalFunctionType));
69537
69529
  }
69538
- function getTypeFacts(type, ignoreObjects) {
69539
- if (ignoreObjects === void 0) { ignoreObjects = false; }
69530
+ function getTypeFacts(type) {
69531
+ if (type.flags & (2097152 /* Intersection */ | 465829888 /* Instantiable */)) {
69532
+ type = getBaseConstraintOfType(type) || unknownType;
69533
+ }
69540
69534
  var flags = type.flags;
69541
- if (flags & 4 /* String */) {
69535
+ if (flags & (4 /* String */ | 268435456 /* StringMapping */)) {
69542
69536
  return strictNullChecks ? 16317953 /* StringStrictFacts */ : 16776705 /* StringFacts */;
69543
69537
  }
69544
- if (flags & 128 /* StringLiteral */) {
69545
- var isEmpty = type.value === "";
69538
+ if (flags & (128 /* StringLiteral */ | 134217728 /* TemplateLiteral */)) {
69539
+ var isEmpty = flags & 128 /* StringLiteral */ && type.value === "";
69546
69540
  return strictNullChecks ?
69547
69541
  isEmpty ? 12123649 /* EmptyStringStrictFacts */ : 7929345 /* NonEmptyStringStrictFacts */ :
69548
69542
  isEmpty ? 12582401 /* EmptyStringFacts */ : 16776705 /* NonEmptyStringFacts */;
@@ -69574,20 +69568,20 @@ var ts;
69574
69568
  (type === falseType || type === regularFalseType) ? 12580616 /* FalseFacts */ : 16774920 /* TrueFacts */;
69575
69569
  }
69576
69570
  if (flags & 524288 /* Object */) {
69577
- if (ignoreObjects) {
69578
- return 16768959 /* AndFactsMask */; // This is the identity element for computing type facts of intersection.
69579
- }
69580
69571
  return ts.getObjectFlags(type) & 16 /* Anonymous */ && isEmptyObjectType(type) ?
69581
- strictNullChecks ? 16318463 /* EmptyObjectStrictFacts */ : 16777215 /* EmptyObjectFacts */ :
69572
+ strictNullChecks ? 83427327 /* EmptyObjectStrictFacts */ : 83886079 /* EmptyObjectFacts */ :
69582
69573
  isFunctionObjectType(type) ?
69583
69574
  strictNullChecks ? 7880640 /* FunctionStrictFacts */ : 16728000 /* FunctionFacts */ :
69584
69575
  strictNullChecks ? 7888800 /* ObjectStrictFacts */ : 16736160 /* ObjectFacts */;
69585
69576
  }
69586
- if (flags & (16384 /* Void */ | 32768 /* Undefined */)) {
69587
- return 9830144 /* UndefinedFacts */;
69577
+ if (flags & 16384 /* Void */) {
69578
+ return 9830144 /* VoidFacts */;
69579
+ }
69580
+ if (flags & 32768 /* Undefined */) {
69581
+ return 26607360 /* UndefinedFacts */;
69588
69582
  }
69589
69583
  if (flags & 65536 /* Null */) {
69590
- return 9363232 /* NullFacts */;
69584
+ return 42917664 /* NullFacts */;
69591
69585
  }
69592
69586
  if (flags & 12288 /* ESSymbolLike */) {
69593
69587
  return strictNullChecks ? 7925520 /* SymbolStrictFacts */ : 16772880 /* SymbolFacts */;
@@ -69598,38 +69592,39 @@ var ts;
69598
69592
  if (flags & 131072 /* Never */) {
69599
69593
  return 0 /* None */;
69600
69594
  }
69601
- if (flags & 465829888 /* Instantiable */) {
69602
- return !isPatternLiteralType(type) ? getTypeFacts(getBaseConstraintOfType(type) || unknownType, ignoreObjects) :
69603
- strictNullChecks ? 7929345 /* NonEmptyStringStrictFacts */ : 16776705 /* NonEmptyStringFacts */;
69604
- }
69605
69595
  if (flags & 1048576 /* Union */) {
69606
- return ts.reduceLeft(type.types, function (facts, t) { return facts | getTypeFacts(t, ignoreObjects); }, 0 /* None */);
69596
+ return ts.reduceLeft(type.types, function (facts, t) { return facts | getTypeFacts(t); }, 0 /* None */);
69607
69597
  }
69608
69598
  if (flags & 2097152 /* Intersection */) {
69609
- // When an intersection contains a primitive type we ignore object type constituents as they are
69610
- // presumably type tags. For example, in string & { __kind__: "name" } we ignore the object type.
69611
- ignoreObjects || (ignoreObjects = maybeTypeOfKind(type, 131068 /* Primitive */));
69612
- return getIntersectionTypeFacts(type, ignoreObjects);
69599
+ return getIntersectionTypeFacts(type);
69613
69600
  }
69614
- return 16777215 /* All */;
69601
+ return 83886079 /* UnknownFacts */;
69615
69602
  }
69616
- function getIntersectionTypeFacts(type, ignoreObjects) {
69603
+ function getIntersectionTypeFacts(type) {
69604
+ // When an intersection contains a primitive type we ignore object type constituents as they are
69605
+ // presumably type tags. For example, in string & { __kind__: "name" } we ignore the object type.
69606
+ var ignoreObjects = maybeTypeOfKind(type, 131068 /* Primitive */);
69617
69607
  // When computing the type facts of an intersection type, certain type facts are computed as `and`
69618
69608
  // and others are computed as `or`.
69619
69609
  var oredFacts = 0 /* None */;
69620
- var andedFacts = 16777215 /* All */;
69610
+ var andedFacts = 134217727 /* All */;
69621
69611
  for (var _i = 0, _a = type.types; _i < _a.length; _i++) {
69622
69612
  var t = _a[_i];
69623
- var f = getTypeFacts(t, ignoreObjects);
69624
- oredFacts |= f;
69625
- andedFacts &= f;
69613
+ if (!(ignoreObjects && t.flags & 524288 /* Object */)) {
69614
+ var f = getTypeFacts(t);
69615
+ oredFacts |= f;
69616
+ andedFacts &= f;
69617
+ }
69626
69618
  }
69627
- return oredFacts & 8256 /* OrFactsMask */ | andedFacts & 16768959 /* AndFactsMask */;
69619
+ return oredFacts & 8256 /* OrFactsMask */ | andedFacts & 134209471 /* AndFactsMask */;
69628
69620
  }
69629
69621
  function getTypeWithFacts(type, include) {
69630
69622
  return filterType(type, function (t) { return (getTypeFacts(t) & include) !== 0; });
69631
69623
  }
69632
- function getIntersectionWithFacts(type, facts) {
69624
+ // This function is similar to getTypeWithFacts, except that in strictNullChecks mode it replaces type
69625
+ // unknown with the union {} | null | undefined (and reduces that accordingly), and it intersects remaining
69626
+ // instantiable types with {}, {} | null, or {} | undefined in order to remove null and/or undefined.
69627
+ function getAdjustedTypeWithFacts(type, facts) {
69633
69628
  var reduced = recombineUnknownType(getTypeWithFacts(strictNullChecks && type.flags & 2 /* Unknown */ ? unknownUnionType : type, facts));
69634
69629
  if (strictNullChecks) {
69635
69630
  switch (facts) {
@@ -69895,8 +69890,8 @@ var ts;
69895
69890
  var types = origin && origin.flags & 1048576 /* Union */ ? origin.types : type.types;
69896
69891
  var mappedTypes;
69897
69892
  var changed = false;
69898
- for (var _i = 0, types_17 = types; _i < types_17.length; _i++) {
69899
- var t = types_17[_i];
69893
+ for (var _i = 0, types_16 = types; _i < types_16.length; _i++) {
69894
+ var t = types_16[_i];
69900
69895
  var mapped = t.flags & 1048576 /* Union */ ? mapType(t, mapper, noReductions) : mapper(t);
69901
69896
  changed || (changed = t !== mapped);
69902
69897
  if (mapped) {
@@ -69982,8 +69977,8 @@ var ts;
69982
69977
  }
69983
69978
  function isEvolvingArrayTypeList(types) {
69984
69979
  var hasEvolvingArrayType = false;
69985
- for (var _i = 0, types_18 = types; _i < types_18.length; _i++) {
69986
- var t = types_18[_i];
69980
+ for (var _i = 0, types_17 = types; _i < types_17.length; _i++) {
69981
+ var t = types_17[_i];
69987
69982
  if (!(t.flags & 131072 /* Never */)) {
69988
69983
  if (!(ts.getObjectFlags(t) & 256 /* EvolvingArray */)) {
69989
69984
  return false;
@@ -70806,10 +70801,10 @@ var ts;
70806
70801
  }
70807
70802
  function narrowTypeByTruthiness(type, expr, assumeTrue) {
70808
70803
  if (isMatchingReference(reference, expr)) {
70809
- return getIntersectionWithFacts(type, assumeTrue ? 4194304 /* Truthy */ : 8388608 /* Falsy */);
70804
+ return getAdjustedTypeWithFacts(type, assumeTrue ? 4194304 /* Truthy */ : 8388608 /* Falsy */);
70810
70805
  }
70811
70806
  if (strictNullChecks && assumeTrue && optionalChainContainsReference(expr, reference)) {
70812
- type = getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
70807
+ type = getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
70813
70808
  }
70814
70809
  var access = getDiscriminantPropertyAccess(expr, type);
70815
70810
  if (access) {
@@ -70949,7 +70944,7 @@ var ts;
70949
70944
  // Note that we include any and unknown in the exclusion test because their domain includes null and undefined.
70950
70945
  var removeNullable = equalsOperator !== assumeTrue && everyType(valueType, function (t) { return !!(t.flags & nullableFlags); }) ||
70951
70946
  equalsOperator === assumeTrue && everyType(valueType, function (t) { return !(t.flags & (3 /* AnyOrUnknown */ | nullableFlags)); });
70952
- return removeNullable ? getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */) : type;
70947
+ return removeNullable ? getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */) : type;
70953
70948
  }
70954
70949
  function narrowTypeByEquality(type, operator, value, assumeTrue) {
70955
70950
  if (type.flags & 1 /* Any */) {
@@ -70978,7 +70973,7 @@ var ts;
70978
70973
  valueType.flags & 65536 /* Null */ ?
70979
70974
  assumeTrue ? 131072 /* EQNull */ : 1048576 /* NENull */ :
70980
70975
  assumeTrue ? 65536 /* EQUndefined */ : 524288 /* NEUndefined */;
70981
- return getIntersectionWithFacts(type, facts);
70976
+ return getAdjustedTypeWithFacts(type, facts);
70982
70977
  }
70983
70978
  if (assumeTrue) {
70984
70979
  var filterFn = operator === 34 /* EqualsEqualsToken */ ?
@@ -70999,7 +70994,7 @@ var ts;
70999
70994
  var target = getReferenceCandidate(typeOfExpr.expression);
71000
70995
  if (!isMatchingReference(reference, target)) {
71001
70996
  if (strictNullChecks && optionalChainContainsReference(target, reference) && assumeTrue === (literal.text !== "undefined")) {
71002
- return getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
70997
+ return getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
71003
70998
  }
71004
70999
  return type;
71005
71000
  }
@@ -71203,7 +71198,7 @@ var ts;
71203
71198
  var left = getReferenceCandidate(expr.left);
71204
71199
  if (!isMatchingReference(reference, left)) {
71205
71200
  if (assumeTrue && strictNullChecks && optionalChainContainsReference(left, reference)) {
71206
- return getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
71201
+ return getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
71207
71202
  }
71208
71203
  return type;
71209
71204
  }
@@ -71291,7 +71286,7 @@ var ts;
71291
71286
  }
71292
71287
  if (strictNullChecks && assumeTrue && optionalChainContainsReference(predicateArgument, reference) &&
71293
71288
  !(getTypeFacts(predicate.type) & 65536 /* EQUndefined */)) {
71294
- type = getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
71289
+ type = getAdjustedTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
71295
71290
  }
71296
71291
  var access = getDiscriminantPropertyAccess(predicateArgument, type);
71297
71292
  if (access) {
@@ -71348,7 +71343,7 @@ var ts;
71348
71343
  }
71349
71344
  function narrowTypeByOptionality(type, expr, assumePresent) {
71350
71345
  if (isMatchingReference(reference, expr)) {
71351
- return getTypeWithFacts(type, assumePresent ? 2097152 /* NEUndefinedOrNull */ : 262144 /* EQUndefinedOrNull */);
71346
+ return getAdjustedTypeWithFacts(type, assumePresent ? 2097152 /* NEUndefinedOrNull */ : 262144 /* EQUndefinedOrNull */);
71352
71347
  }
71353
71348
  var access = getDiscriminantPropertyAccess(expr, type);
71354
71349
  if (access) {
@@ -71434,8 +71429,8 @@ var ts;
71434
71429
  var annotationIncludesUndefined = strictNullChecks &&
71435
71430
  declaration.kind === 164 /* Parameter */ &&
71436
71431
  declaration.initializer &&
71437
- getFalsyFlags(declaredType) & 32768 /* Undefined */ &&
71438
- !(getFalsyFlags(checkExpression(declaration.initializer)) & 32768 /* Undefined */);
71432
+ getTypeFacts(declaredType) & 16777216 /* IsUndefined */ &&
71433
+ !(getTypeFacts(checkExpression(declaration.initializer)) & 16777216 /* IsUndefined */);
71439
71434
  popTypeResolution();
71440
71435
  return annotationIncludesUndefined ? getTypeWithFacts(declaredType, 524288 /* NEUndefined */) : declaredType;
71441
71436
  }
@@ -71763,7 +71758,7 @@ var ts;
71763
71758
  return convertAutoToAny(flowType);
71764
71759
  }
71765
71760
  }
71766
- else if (!assumeInitialized && !(getFalsyFlags(type) & 32768 /* Undefined */) && getFalsyFlags(flowType) & 32768 /* Undefined */) {
71761
+ else if (!assumeInitialized && !(getTypeFacts(type) & 16777216 /* IsUndefined */) && getTypeFacts(flowType) & 16777216 /* IsUndefined */) {
71767
71762
  error(node, ts.Diagnostics.Variable_0_is_used_before_being_assigned, symbolToString(symbol));
71768
71763
  // Return the declared type to reduce follow-on errors
71769
71764
  return type;
@@ -73292,8 +73287,8 @@ var ts;
73292
73287
  }
73293
73288
  var signatureList;
73294
73289
  var types = type.types;
73295
- for (var _i = 0, types_19 = types; _i < types_19.length; _i++) {
73296
- var current = types_19[_i];
73290
+ for (var _i = 0, types_18 = types; _i < types_18.length; _i++) {
73291
+ var current = types_18[_i];
73297
73292
  var signature = getContextualCallSignature(current, node);
73298
73293
  if (signature) {
73299
73294
  if (!signatureList) {
@@ -74455,19 +74450,19 @@ var ts;
74455
74450
  return checkNonNullType(checkExpression(node), node);
74456
74451
  }
74457
74452
  function isNullableType(type) {
74458
- return !!((strictNullChecks ? getFalsyFlags(type) : type.flags) & 98304 /* Nullable */);
74453
+ return !!(getTypeFacts(type) & 50331648 /* IsUndefinedOrNull */);
74459
74454
  }
74460
74455
  function getNonNullableTypeIfNeeded(type) {
74461
74456
  return isNullableType(type) ? getNonNullableType(type) : type;
74462
74457
  }
74463
- function reportObjectPossiblyNullOrUndefinedError(node, flags) {
74464
- error(node, flags & 32768 /* Undefined */ ? flags & 65536 /* Null */ ?
74458
+ function reportObjectPossiblyNullOrUndefinedError(node, facts) {
74459
+ error(node, facts & 16777216 /* IsUndefined */ ? facts & 33554432 /* IsNull */ ?
74465
74460
  ts.Diagnostics.Object_is_possibly_null_or_undefined :
74466
74461
  ts.Diagnostics.Object_is_possibly_undefined :
74467
74462
  ts.Diagnostics.Object_is_possibly_null);
74468
74463
  }
74469
- function reportCannotInvokePossiblyNullOrUndefinedError(node, flags) {
74470
- error(node, flags & 32768 /* Undefined */ ? flags & 65536 /* Null */ ?
74464
+ function reportCannotInvokePossiblyNullOrUndefinedError(node, facts) {
74465
+ error(node, facts & 16777216 /* IsUndefined */ ? facts & 33554432 /* IsNull */ ?
74471
74466
  ts.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null_or_undefined :
74472
74467
  ts.Diagnostics.Cannot_invoke_an_object_which_is_possibly_undefined :
74473
74468
  ts.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null);
@@ -74477,9 +74472,9 @@ var ts;
74477
74472
  error(node, ts.Diagnostics.Object_is_of_type_unknown);
74478
74473
  return errorType;
74479
74474
  }
74480
- var kind = (strictNullChecks ? getFalsyFlags(type) : type.flags) & 98304 /* Nullable */;
74481
- if (kind) {
74482
- reportError(node, kind);
74475
+ var facts = getTypeFacts(type);
74476
+ if (facts & 50331648 /* IsUndefinedOrNull */) {
74477
+ reportError(node, facts);
74483
74478
  var t = getNonNullableType(type);
74484
74479
  return t.flags & (98304 /* Nullable */ | 131072 /* Never */) ? errorType : t;
74485
74480
  }
@@ -74774,7 +74769,7 @@ var ts;
74774
74769
  assumeUninitialized = true;
74775
74770
  }
74776
74771
  var flowType = getFlowTypeOfReference(node, propType, assumeUninitialized ? getOptionalType(propType) : propType);
74777
- if (assumeUninitialized && !(getFalsyFlags(propType) & 32768 /* Undefined */) && getFalsyFlags(flowType) & 32768 /* Undefined */) {
74772
+ if (assumeUninitialized && !(getTypeFacts(propType) & 16777216 /* IsUndefined */) && getTypeFacts(flowType) & 16777216 /* IsUndefined */) {
74778
74773
  error(errorNode, ts.Diagnostics.Property_0_is_used_before_being_assigned, symbolToString(prop)); // TODO: GH#18217
74779
74774
  // Return the declared type to reduce follow-on errors
74780
74775
  return propType;
@@ -76690,8 +76685,8 @@ var ts;
76690
76685
  if (apparentType.flags & 1048576 /* Union */) {
76691
76686
  var types = apparentType.types;
76692
76687
  var hasSignatures = false;
76693
- for (var _i = 0, types_20 = types; _i < types_20.length; _i++) {
76694
- var constituent = types_20[_i];
76688
+ for (var _i = 0, types_19 = types; _i < types_19.length; _i++) {
76689
+ var constituent = types_19[_i];
76695
76690
  var signatures = getSignaturesOfType(constituent, kind);
76696
76691
  if (signatures.length !== 0) {
76697
76692
  hasSignatures = true;
@@ -78382,7 +78377,7 @@ var ts;
78382
78377
  var type = getTypeOfSymbol(symbol);
78383
78378
  if (strictNullChecks &&
78384
78379
  !(type.flags & (3 /* AnyOrUnknown */ | 131072 /* Never */)) &&
78385
- !(exactOptionalPropertyTypes ? symbol.flags & 16777216 /* Optional */ : getFalsyFlags(type) & 32768 /* Undefined */)) {
78380
+ !(exactOptionalPropertyTypes ? symbol.flags & 16777216 /* Optional */ : getTypeFacts(type) & 16777216 /* IsUndefined */)) {
78386
78381
  error(expr, ts.Diagnostics.The_operand_of_a_delete_operator_must_be_optional);
78387
78382
  }
78388
78383
  }
@@ -78550,8 +78545,8 @@ var ts;
78550
78545
  }
78551
78546
  if (type.flags & 3145728 /* UnionOrIntersection */) {
78552
78547
  var types = type.types;
78553
- for (var _i = 0, types_21 = types; _i < types_21.length; _i++) {
78554
- var t = types_21[_i];
78548
+ for (var _i = 0, types_20 = types; _i < types_20.length; _i++) {
78549
+ var t = types_20[_i];
78555
78550
  if (maybeTypeOfKind(t, kind)) {
78556
78551
  return true;
78557
78552
  }
@@ -78778,7 +78773,7 @@ var ts;
78778
78773
  // In strict null checking mode, if a default value of a non-undefined type is specified, remove
78779
78774
  // undefined from the final type.
78780
78775
  if (strictNullChecks &&
78781
- !(getFalsyFlags(checkExpression(prop.objectAssignmentInitializer)) & 32768 /* Undefined */)) {
78776
+ !(getTypeFacts(checkExpression(prop.objectAssignmentInitializer)) & 16777216 /* IsUndefined */)) {
78782
78777
  sourceType = getTypeWithFacts(sourceType, 524288 /* NEUndefined */);
78783
78778
  }
78784
78779
  checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, checkMode);
@@ -79178,7 +79173,7 @@ var ts;
79178
79173
  case 56 /* BarBarToken */:
79179
79174
  case 75 /* BarBarEqualsToken */: {
79180
79175
  var resultType_3 = getTypeFacts(leftType) & 8388608 /* Falsy */ ?
79181
- getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], 2 /* Subtype */) :
79176
+ getUnionType([getNonNullableType(removeDefinitelyFalsyTypes(leftType)), rightType], 2 /* Subtype */) :
79182
79177
  leftType;
79183
79178
  if (operator === 75 /* BarBarEqualsToken */) {
79184
79179
  checkAssignmentOperator(rightType);
@@ -81719,8 +81714,8 @@ var ts;
81719
81714
  }
81720
81715
  function getEntityNameForDecoratorMetadataFromTypeList(types) {
81721
81716
  var commonEntityName;
81722
- for (var _i = 0, types_22 = types; _i < types_22.length; _i++) {
81723
- var typeNode = types_22[_i];
81717
+ for (var _i = 0, types_21 = types; _i < types_21.length; _i++) {
81718
+ var typeNode = types_21[_i];
81724
81719
  while (typeNode.kind === 191 /* ParenthesizedType */ || typeNode.kind === 197 /* NamedTupleMember */) {
81725
81720
  typeNode = typeNode.type; // Skip parens if need be
81726
81721
  }
@@ -82586,7 +82581,7 @@ var ts;
82586
82581
  // For a binding pattern, validate the initializer and exit
82587
82582
  if (ts.isBindingPattern(node.name)) {
82588
82583
  var needCheckInitializer = node.initializer && node.parent.parent.kind !== 243 /* ForInStatement */;
82589
- var needCheckWidenedType = node.name.elements.length === 0;
82584
+ var needCheckWidenedType = !ts.some(node.name.elements, ts.not(ts.isOmittedExpression));
82590
82585
  if (needCheckInitializer || needCheckWidenedType) {
82591
82586
  // Don't validate for-in initializer as it is already an error
82592
82587
  var widenedType = getWidenedTypeForVariableLikeDeclaration(node);
@@ -82739,7 +82734,7 @@ var ts;
82739
82734
  return;
82740
82735
  var type = checkTruthinessExpression(location);
82741
82736
  var isPropertyExpressionCast = ts.isPropertyAccessExpression(location) && isTypeAssertion(location.expression);
82742
- if (getFalsyFlags(type) || isPropertyExpressionCast)
82737
+ if (!(getTypeFacts(type) & 4194304 /* Truthy */) || isPropertyExpressionCast)
82743
82738
  return;
82744
82739
  // While it technically should be invalid for any known-truthy value
82745
82740
  // to be tested, we de-scope to functions and Promises unreferenced in
@@ -84425,18 +84420,17 @@ var ts;
84425
84420
  // but not by other kinds of members.
84426
84421
  // Base class instance member variables and accessors can be overridden by
84427
84422
  // derived class instance member variables and accessors, but not by other kinds of members.
84428
- var _a, _b;
84423
+ var _a, _b, _c, _d;
84429
84424
  // NOTE: assignability is checked in checkClassDeclaration
84430
84425
  var baseProperties = getPropertiesOfType(baseType);
84431
- basePropertyCheck: for (var _i = 0, baseProperties_1 = baseProperties; _i < baseProperties_1.length; _i++) {
84432
- var baseProperty = baseProperties_1[_i];
84426
+ var _loop_33 = function (baseProperty) {
84433
84427
  var base = getTargetSymbol(baseProperty);
84434
84428
  if (base.flags & 4194304 /* Prototype */) {
84435
- continue;
84429
+ return "continue";
84436
84430
  }
84437
84431
  var baseSymbol = getPropertyOfObjectType(type, base.escapedName);
84438
84432
  if (!baseSymbol) {
84439
- continue;
84433
+ return "continue";
84440
84434
  }
84441
84435
  var derived = getTargetSymbol(baseSymbol);
84442
84436
  var baseDeclarationFlags = ts.getDeclarationModifierFlagsFromSymbol(base);
@@ -84454,14 +84448,14 @@ var ts;
84454
84448
  // Searches other base types for a declaration that would satisfy the inherited abstract member.
84455
84449
  // (The class may have more than one base type via declaration merging with an interface with the
84456
84450
  // same name.)
84457
- for (var _c = 0, _d = getBaseTypes(type); _c < _d.length; _c++) {
84458
- var otherBaseType = _d[_c];
84451
+ for (var _e = 0, _f = getBaseTypes(type); _e < _f.length; _e++) {
84452
+ var otherBaseType = _f[_e];
84459
84453
  if (otherBaseType === baseType)
84460
84454
  continue;
84461
84455
  var baseSymbol_1 = getPropertyOfObjectType(otherBaseType, base.escapedName);
84462
84456
  var derivedElsewhere = baseSymbol_1 && getTargetSymbol(baseSymbol_1);
84463
84457
  if (derivedElsewhere && derivedElsewhere !== base) {
84464
- continue basePropertyCheck;
84458
+ return "continue-basePropertyCheck";
84465
84459
  }
84466
84460
  }
84467
84461
  if (derivedClassDecl.kind === 226 /* ClassExpression */) {
@@ -84476,20 +84470,19 @@ var ts;
84476
84470
  // derived overrides base.
84477
84471
  var derivedDeclarationFlags = ts.getDeclarationModifierFlagsFromSymbol(derived);
84478
84472
  if (baseDeclarationFlags & 8 /* Private */ || derivedDeclarationFlags & 8 /* Private */) {
84479
- // either base or derived property is private - not override, skip it
84480
- continue;
84473
+ return "continue";
84481
84474
  }
84482
84475
  var errorMessage = void 0;
84483
84476
  var basePropertyFlags = base.flags & 98308 /* PropertyOrAccessor */;
84484
84477
  var derivedPropertyFlags = derived.flags & 98308 /* PropertyOrAccessor */;
84485
84478
  if (basePropertyFlags && derivedPropertyFlags) {
84486
84479
  // property/accessor is overridden with property/accessor
84487
- if (baseDeclarationFlags & 128 /* Abstract */ && !(base.valueDeclaration && ts.isPropertyDeclaration(base.valueDeclaration) && base.valueDeclaration.initializer)
84488
- || base.valueDeclaration && base.valueDeclaration.parent.kind === 258 /* InterfaceDeclaration */
84480
+ if ((ts.getCheckFlags(base) & 6 /* Synthetic */
84481
+ ? (_a = base.declarations) === null || _a === void 0 ? void 0 : _a.some(function (d) { return isPropertyAbstractOrInterface(d, baseDeclarationFlags); })
84482
+ : (_b = base.declarations) === null || _b === void 0 ? void 0 : _b.every(function (d) { return isPropertyAbstractOrInterface(d, baseDeclarationFlags); }))
84483
+ || ts.getCheckFlags(base) & 262144 /* Mapped */
84489
84484
  || derived.valueDeclaration && ts.isBinaryExpression(derived.valueDeclaration)) {
84490
- // when the base property is abstract or from an interface, base/derived flags don't need to match
84491
- // same when the derived property is from an assignment
84492
- continue;
84485
+ return "continue";
84493
84486
  }
84494
84487
  var overriddenInstanceProperty = basePropertyFlags !== 4 /* Property */ && derivedPropertyFlags === 4 /* Property */;
84495
84488
  var overriddenInstanceAccessor = basePropertyFlags === 4 /* Property */ && derivedPropertyFlags !== 4 /* Property */;
@@ -84500,12 +84493,12 @@ var ts;
84500
84493
  error(ts.getNameOfDeclaration(derived.valueDeclaration) || derived.valueDeclaration, errorMessage_1, symbolToString(base), typeToString(baseType), typeToString(type));
84501
84494
  }
84502
84495
  else if (useDefineForClassFields) {
84503
- var uninitialized = (_a = derived.declarations) === null || _a === void 0 ? void 0 : _a.find(function (d) { return d.kind === 167 /* PropertyDeclaration */ && !d.initializer; });
84496
+ var uninitialized = (_c = derived.declarations) === null || _c === void 0 ? void 0 : _c.find(function (d) { return d.kind === 167 /* PropertyDeclaration */ && !d.initializer; });
84504
84497
  if (uninitialized
84505
84498
  && !(derived.flags & 33554432 /* Transient */)
84506
84499
  && !(baseDeclarationFlags & 128 /* Abstract */)
84507
84500
  && !(derivedDeclarationFlags & 128 /* Abstract */)
84508
- && !((_b = derived.declarations) === null || _b === void 0 ? void 0 : _b.some(function (d) { return !!(d.flags & 16777216 /* Ambient */); }))) {
84501
+ && !((_d = derived.declarations) === null || _d === void 0 ? void 0 : _d.some(function (d) { return !!(d.flags & 16777216 /* Ambient */); }))) {
84509
84502
  var constructor = findConstructorDeclaration(ts.getClassLikeDeclarationOfSymbol(type.symbol));
84510
84503
  var propName = uninitialized.name;
84511
84504
  if (uninitialized.exclamationToken
@@ -84518,13 +84511,11 @@ var ts;
84518
84511
  }
84519
84512
  }
84520
84513
  }
84521
- // correct case
84522
- continue;
84514
+ return "continue";
84523
84515
  }
84524
84516
  else if (isPrototypeProperty(base)) {
84525
84517
  if (isPrototypeProperty(derived) || derived.flags & 4 /* Property */) {
84526
- // method is overridden with method or property -- correct case
84527
- continue;
84518
+ return "continue";
84528
84519
  }
84529
84520
  else {
84530
84521
  ts.Debug.assert(!!(derived.flags & 98304 /* Accessor */));
@@ -84539,9 +84530,20 @@ var ts;
84539
84530
  }
84540
84531
  error(ts.getNameOfDeclaration(derived.valueDeclaration) || derived.valueDeclaration, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type));
84541
84532
  }
84533
+ };
84534
+ basePropertyCheck: for (var _i = 0, baseProperties_1 = baseProperties; _i < baseProperties_1.length; _i++) {
84535
+ var baseProperty = baseProperties_1[_i];
84536
+ var state_10 = _loop_33(baseProperty);
84537
+ switch (state_10) {
84538
+ case "continue-basePropertyCheck": continue basePropertyCheck;
84539
+ }
84542
84540
  }
84543
84541
  }
84544
- function getNonInterhitedProperties(type, baseTypes, properties) {
84542
+ function isPropertyAbstractOrInterface(declaration, baseDeclarationFlags) {
84543
+ return baseDeclarationFlags & 128 /* Abstract */ && (!ts.isPropertyDeclaration(declaration) || !declaration.initializer)
84544
+ || ts.isInterfaceDeclaration(declaration.parent);
84545
+ }
84546
+ function getNonInheritedProperties(type, baseTypes, properties) {
84545
84547
  if (!ts.length(baseTypes)) {
84546
84548
  return properties;
84547
84549
  }
@@ -84610,7 +84612,7 @@ var ts;
84610
84612
  var propName = member.name;
84611
84613
  if (ts.isIdentifier(propName) || ts.isPrivateIdentifier(propName) || ts.isComputedPropertyName(propName)) {
84612
84614
  var type = getTypeOfSymbol(getSymbolOfNode(member));
84613
- if (!(type.flags & 3 /* AnyOrUnknown */ || getFalsyFlags(type) & 32768 /* Undefined */)) {
84615
+ if (!(type.flags & 3 /* AnyOrUnknown */ || getTypeFacts(type) & 16777216 /* IsUndefined */)) {
84614
84616
  if (!constructor || !isPropertyInitializedInConstructor(propName, type, constructor)) {
84615
84617
  error(member.name, ts.Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor, ts.declarationNameToString(propName));
84616
84618
  }
@@ -84635,7 +84637,7 @@ var ts;
84635
84637
  ts.setParent(reference, staticBlock);
84636
84638
  reference.flowNode = staticBlock.returnFlowNode;
84637
84639
  var flowType = getFlowTypeOfReference(reference, propType, getOptionalType(propType));
84638
- if (!(getFalsyFlags(flowType) & 32768 /* Undefined */)) {
84640
+ if (!(getTypeFacts(flowType) & 16777216 /* IsUndefined */)) {
84639
84641
  return true;
84640
84642
  }
84641
84643
  }
@@ -84650,7 +84652,7 @@ var ts;
84650
84652
  ts.setParent(reference, constructor);
84651
84653
  reference.flowNode = constructor.returnFlowNode;
84652
84654
  var flowType = getFlowTypeOfReference(reference, propType, getOptionalType(propType));
84653
- return !(getFalsyFlags(flowType) & 32768 /* Undefined */);
84655
+ return !(getTypeFacts(flowType) & 16777216 /* IsUndefined */);
84654
84656
  }
84655
84657
  function checkInterfaceDeclaration(node) {
84656
84658
  // Grammar checking
@@ -92940,8 +92942,8 @@ var ts;
92940
92942
  // Note when updating logic here also update getEntityNameForDecoratorMetadata
92941
92943
  // so that aliases can be marked as referenced
92942
92944
  var serializedUnion;
92943
- for (var _i = 0, types_23 = types; _i < types_23.length; _i++) {
92944
- var typeNode = types_23[_i];
92945
+ for (var _i = 0, types_22 = types; _i < types_22.length; _i++) {
92946
+ var typeNode = types_22[_i];
92945
92947
  while (typeNode.kind === 191 /* ParenthesizedType */) {
92946
92948
  typeNode = typeNode.type; // Skip parens if need be
92947
92949
  }
@@ -113556,8 +113558,8 @@ var ts;
113556
113558
  bundleFileInfo.sections.push({ pos: pos, end: writer.getTextPos(), kind: "reference" /* Reference */, data: directive.fileName });
113557
113559
  writeLine();
113558
113560
  }
113559
- for (var _d = 0, types_24 = types; _d < types_24.length; _d++) {
113560
- var directive = types_24[_d];
113561
+ for (var _d = 0, types_23 = types; _d < types_23.length; _d++) {
113562
+ var directive = types_23[_d];
113561
113563
  var pos = writer.getTextPos();
113562
113564
  var resolutionMode = directive.resolutionMode && directive.resolutionMode !== (currentSourceFile === null || currentSourceFile === void 0 ? void 0 : currentSourceFile.impliedNodeFormat)
113563
113565
  ? "resolution-mode=\"" + (directive.resolutionMode === ts.ModuleKind.ESNext ? "import" : "require") + "\""
@@ -122325,7 +122327,7 @@ var ts;
122325
122327
  });
122326
122328
  // Sort by paths closest to importing file Name directory
122327
122329
  var sortedPaths = [];
122328
- var _loop_33 = function (directory) {
122330
+ var _loop_34 = function (directory) {
122329
122331
  var directoryStart = ts.ensureTrailingDirectorySeparator(directory);
122330
122332
  var pathsInDirectory;
122331
122333
  allFileNames.forEach(function (_a, fileName) {
@@ -122349,9 +122351,9 @@ var ts;
122349
122351
  };
122350
122352
  var out_directory_1;
122351
122353
  for (var directory = ts.getDirectoryPath(importingFileName); allFileNames.size !== 0;) {
122352
- var state_10 = _loop_33(directory);
122354
+ var state_11 = _loop_34(directory);
122353
122355
  directory = out_directory_1;
122354
- if (state_10 === "break")
122356
+ if (state_11 === "break")
122355
122357
  break;
122356
122358
  }
122357
122359
  if (allFileNames.size) {
@@ -144037,7 +144039,7 @@ var ts;
144037
144039
  if (!ts.textSpanIntersectsWith(span, node.pos, node.getFullWidth())) {
144038
144040
  return;
144039
144041
  }
144040
- if (ts.isTypeNode(node)) {
144042
+ if (ts.isTypeNode(node) && !ts.isExpressionWithTypeArguments(node)) {
144041
144043
  return;
144042
144044
  }
144043
144045
  if (preferences.includeInlayVariableTypeHints && ts.isVariableDeclaration(node)) {
@@ -147148,7 +147150,6 @@ var ts;
147148
147150
  case 280 /* JsxOpeningElement */:
147149
147151
  case 281 /* JsxClosingElement */:
147150
147152
  case 279 /* JsxSelfClosingElement */:
147151
- case 228 /* ExpressionWithTypeArguments */:
147152
147153
  return false;
147153
147154
  }
147154
147155
  break;
@@ -147318,7 +147319,7 @@ var ts;
147318
147319
  var listEndToken = getCloseTokenForOpenToken(listStartToken);
147319
147320
  if (listEndToken !== 0 /* Unknown */ && formattingScanner.isOnToken() && formattingScanner.getStartPos() < originalRange.end) {
147320
147321
  var tokenInfo = formattingScanner.readTokenInfo(parent);
147321
- if (tokenInfo.token.kind === 27 /* CommaToken */ && ts.isCallLikeExpression(parent)) {
147322
+ if (tokenInfo.token.kind === 27 /* CommaToken */) {
147322
147323
  // consume the comma
147323
147324
  consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation, parent);
147324
147325
  tokenInfo = formattingScanner.isOnToken() ? formattingScanner.readTokenInfo(parent) : undefined;
@@ -147722,6 +147723,12 @@ var ts;
147722
147723
  case 169 /* MethodDeclaration */:
147723
147724
  case 168 /* MethodSignature */:
147724
147725
  case 214 /* ArrowFunction */:
147726
+ case 174 /* CallSignature */:
147727
+ case 175 /* ConstructSignature */:
147728
+ case 179 /* FunctionType */:
147729
+ case 180 /* ConstructorType */:
147730
+ case 172 /* GetAccessor */:
147731
+ case 173 /* SetAccessor */:
147725
147732
  if (node.typeParameters === list) {
147726
147733
  return 29 /* LessThanToken */;
147727
147734
  }
@@ -147738,7 +147745,19 @@ var ts;
147738
147745
  return 20 /* OpenParenToken */;
147739
147746
  }
147740
147747
  break;
147748
+ case 257 /* ClassDeclaration */:
147749
+ case 226 /* ClassExpression */:
147750
+ case 258 /* InterfaceDeclaration */:
147751
+ case 259 /* TypeAliasDeclaration */:
147752
+ if (node.typeParameters === list) {
147753
+ return 29 /* LessThanToken */;
147754
+ }
147755
+ break;
147741
147756
  case 178 /* TypeReference */:
147757
+ case 210 /* TaggedTemplateExpression */:
147758
+ case 181 /* TypeQuery */:
147759
+ case 228 /* ExpressionWithTypeArguments */:
147760
+ case 200 /* ImportType */:
147742
147761
  if (node.typeArguments === list) {
147743
147762
  return 29 /* LessThanToken */;
147744
147763
  }