mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-18 13:59:04 -05:00
Update LKG.
This commit is contained in:
32
lib/tsc.js
32
lib/tsc.js
@@ -33758,8 +33758,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
if (objectType.flags & 3145728) {
|
||||
@@ -35512,7 +35511,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -35618,10 +35617,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256) {
|
||||
if (source.flags & 33554432) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824) {
|
||||
source = getSimplifiedType(source, false);
|
||||
}
|
||||
if (target.flags & 58720256) {
|
||||
if (target.flags & 25165824) {
|
||||
target = getSimplifiedType(target, true);
|
||||
}
|
||||
if (target.flags & 1048576 && source.flags & 524288 &&
|
||||
@@ -35713,10 +35718,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 && target.flags & 524288) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 && target.flags & 131068) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -36501,9 +36510,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true;
|
||||
shouldSkipElaboration = true;
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -36511,6 +36521,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, false)) {
|
||||
if (props.length > 5) {
|
||||
@@ -36519,6 +36532,9 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -3500,7 +3500,7 @@ var ts;
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 58720256] = "Simplifiable";
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 25165824] = "Simplifiable";
|
||||
// 'Narrowable' types are types where narrowing actually narrows.
|
||||
// This *should* be every type other than null, undefined, void, and never
|
||||
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
|
||||
@@ -40634,8 +40634,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 /* IndexedAccess */ ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 /* Conditional */ ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 /* Substitution */ ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
// (T | U)[K] -> T[K] | U[K] (reading)
|
||||
@@ -42612,7 +42611,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0 /* None */;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, /*reportErrors*/ !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -42736,10 +42735,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256 /* Simplifiable */) {
|
||||
if (source.flags & 33554432 /* Substitution */) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432 /* Substitution */) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824 /* Simplifiable */) {
|
||||
source = getSimplifiedType(source, /*writing*/ false);
|
||||
}
|
||||
if (target.flags & 58720256 /* Simplifiable */) {
|
||||
if (target.flags & 25165824 /* Simplifiable */) {
|
||||
target = getSimplifiedType(target, /*writing*/ true);
|
||||
}
|
||||
// Try to see if we're relating something like `Foo` -> `Bar | null | undefined`.
|
||||
@@ -42868,10 +42873,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 524288 /* Object */) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 131068 /* Primitive */) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -43793,9 +43802,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, /*matchDiscriminantProperties*/ false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -43803,6 +43813,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, /*reportErrors*/ false)) {
|
||||
if (props.length > 5) { // arbitrary cutoff for too-long list form
|
||||
@@ -43811,7 +43824,11 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
// ELSE: No array like or unmatched property error - just issue top level error (errorInfo = undefined)
|
||||
}
|
||||
return 0 /* False */;
|
||||
}
|
||||
@@ -121633,30 +121650,37 @@ var ts;
|
||||
return undefined;
|
||||
}
|
||||
var typeChecker = program.getTypeChecker();
|
||||
var symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
|
||||
var nodeForQuickInfo = getNodeForQuickInfo(node);
|
||||
var symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
|
||||
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
||||
var type_2 = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
|
||||
var type_2 = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
|
||||
return type_2 && {
|
||||
kind: "" /* unknown */,
|
||||
kindModifiers: "" /* none */,
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(node)); }),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(nodeForQuickInfo)); }),
|
||||
documentation: type_2.symbol ? type_2.symbol.getDocumentationComment(typeChecker) : undefined,
|
||||
tags: type_2.symbol ? type_2.symbol.getJsDocTags() : undefined
|
||||
};
|
||||
}
|
||||
var _a = typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) {
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(node), node);
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(nodeForQuickInfo), nodeForQuickInfo);
|
||||
}), symbolKind = _a.symbolKind, displayParts = _a.displayParts, documentation = _a.documentation, tags = _a.tags;
|
||||
return {
|
||||
kind: symbolKind,
|
||||
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(symbol),
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: displayParts,
|
||||
documentation: documentation,
|
||||
tags: tags,
|
||||
};
|
||||
}
|
||||
function getNodeForQuickInfo(node) {
|
||||
if (ts.isNewExpression(node.parent) && node.pos === node.parent.pos) {
|
||||
return node.parent.expression;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
function shouldGetType(sourceFile, node, position) {
|
||||
switch (node.kind) {
|
||||
case 73 /* Identifier */:
|
||||
|
||||
@@ -3499,7 +3499,7 @@ var ts;
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 58720256] = "Simplifiable";
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 25165824] = "Simplifiable";
|
||||
// 'Narrowable' types are types where narrowing actually narrows.
|
||||
// This *should* be every type other than null, undefined, void, and never
|
||||
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
|
||||
@@ -40633,8 +40633,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 /* IndexedAccess */ ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 /* Conditional */ ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 /* Substitution */ ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
// (T | U)[K] -> T[K] | U[K] (reading)
|
||||
@@ -42611,7 +42610,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0 /* None */;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, /*reportErrors*/ !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -42735,10 +42734,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256 /* Simplifiable */) {
|
||||
if (source.flags & 33554432 /* Substitution */) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432 /* Substitution */) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824 /* Simplifiable */) {
|
||||
source = getSimplifiedType(source, /*writing*/ false);
|
||||
}
|
||||
if (target.flags & 58720256 /* Simplifiable */) {
|
||||
if (target.flags & 25165824 /* Simplifiable */) {
|
||||
target = getSimplifiedType(target, /*writing*/ true);
|
||||
}
|
||||
// Try to see if we're relating something like `Foo` -> `Bar | null | undefined`.
|
||||
@@ -42867,10 +42872,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 524288 /* Object */) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 131068 /* Primitive */) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -43792,9 +43801,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, /*matchDiscriminantProperties*/ false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -43802,6 +43812,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, /*reportErrors*/ false)) {
|
||||
if (props.length > 5) { // arbitrary cutoff for too-long list form
|
||||
@@ -43810,7 +43823,11 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
// ELSE: No array like or unmatched property error - just issue top level error (errorInfo = undefined)
|
||||
}
|
||||
return 0 /* False */;
|
||||
}
|
||||
@@ -121976,30 +121993,37 @@ var ts;
|
||||
return undefined;
|
||||
}
|
||||
var typeChecker = program.getTypeChecker();
|
||||
var symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
|
||||
var nodeForQuickInfo = getNodeForQuickInfo(node);
|
||||
var symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
|
||||
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
||||
var type_2 = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
|
||||
var type_2 = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
|
||||
return type_2 && {
|
||||
kind: "" /* unknown */,
|
||||
kindModifiers: "" /* none */,
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(node)); }),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(nodeForQuickInfo)); }),
|
||||
documentation: type_2.symbol ? type_2.symbol.getDocumentationComment(typeChecker) : undefined,
|
||||
tags: type_2.symbol ? type_2.symbol.getJsDocTags() : undefined
|
||||
};
|
||||
}
|
||||
var _a = typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) {
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(node), node);
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(nodeForQuickInfo), nodeForQuickInfo);
|
||||
}), symbolKind = _a.symbolKind, displayParts = _a.displayParts, documentation = _a.documentation, tags = _a.tags;
|
||||
return {
|
||||
kind: symbolKind,
|
||||
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(symbol),
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: displayParts,
|
||||
documentation: documentation,
|
||||
tags: tags,
|
||||
};
|
||||
}
|
||||
function getNodeForQuickInfo(node) {
|
||||
if (ts.isNewExpression(node.parent) && node.pos === node.parent.pos) {
|
||||
return node.parent.expression;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
function shouldGetType(sourceFile, node, position) {
|
||||
switch (node.kind) {
|
||||
case 73 /* Identifier */:
|
||||
|
||||
@@ -3488,7 +3488,7 @@ var ts;
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 58720256] = "Simplifiable";
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 25165824] = "Simplifiable";
|
||||
// 'Narrowable' types are types where narrowing actually narrows.
|
||||
// This *should* be every type other than null, undefined, void, and never
|
||||
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
|
||||
@@ -40622,8 +40622,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 /* IndexedAccess */ ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 /* Conditional */ ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 /* Substitution */ ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
// (T | U)[K] -> T[K] | U[K] (reading)
|
||||
@@ -42600,7 +42599,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0 /* None */;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, /*reportErrors*/ !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -42724,10 +42723,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256 /* Simplifiable */) {
|
||||
if (source.flags & 33554432 /* Substitution */) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432 /* Substitution */) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824 /* Simplifiable */) {
|
||||
source = getSimplifiedType(source, /*writing*/ false);
|
||||
}
|
||||
if (target.flags & 58720256 /* Simplifiable */) {
|
||||
if (target.flags & 25165824 /* Simplifiable */) {
|
||||
target = getSimplifiedType(target, /*writing*/ true);
|
||||
}
|
||||
// Try to see if we're relating something like `Foo` -> `Bar | null | undefined`.
|
||||
@@ -42856,10 +42861,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 524288 /* Object */) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 131068 /* Primitive */) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -43781,9 +43790,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, /*matchDiscriminantProperties*/ false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -43791,6 +43801,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, /*reportErrors*/ false)) {
|
||||
if (props.length > 5) { // arbitrary cutoff for too-long list form
|
||||
@@ -43799,7 +43812,11 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
// ELSE: No array like or unmatched property error - just issue top level error (errorInfo = undefined)
|
||||
}
|
||||
return 0 /* False */;
|
||||
}
|
||||
@@ -121965,30 +121982,37 @@ var ts;
|
||||
return undefined;
|
||||
}
|
||||
var typeChecker = program.getTypeChecker();
|
||||
var symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
|
||||
var nodeForQuickInfo = getNodeForQuickInfo(node);
|
||||
var symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
|
||||
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
||||
var type_2 = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
|
||||
var type_2 = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
|
||||
return type_2 && {
|
||||
kind: "" /* unknown */,
|
||||
kindModifiers: "" /* none */,
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(node)); }),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(nodeForQuickInfo)); }),
|
||||
documentation: type_2.symbol ? type_2.symbol.getDocumentationComment(typeChecker) : undefined,
|
||||
tags: type_2.symbol ? type_2.symbol.getJsDocTags() : undefined
|
||||
};
|
||||
}
|
||||
var _a = typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) {
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(node), node);
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(nodeForQuickInfo), nodeForQuickInfo);
|
||||
}), symbolKind = _a.symbolKind, displayParts = _a.displayParts, documentation = _a.documentation, tags = _a.tags;
|
||||
return {
|
||||
kind: symbolKind,
|
||||
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(symbol),
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: displayParts,
|
||||
documentation: documentation,
|
||||
tags: tags,
|
||||
};
|
||||
}
|
||||
function getNodeForQuickInfo(node) {
|
||||
if (ts.isNewExpression(node.parent) && node.pos === node.parent.pos) {
|
||||
return node.parent.expression;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
function shouldGetType(sourceFile, node, position) {
|
||||
switch (node.kind) {
|
||||
case 73 /* Identifier */:
|
||||
|
||||
@@ -3488,7 +3488,7 @@ var ts;
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 58720256] = "Simplifiable";
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 25165824] = "Simplifiable";
|
||||
// 'Narrowable' types are types where narrowing actually narrows.
|
||||
// This *should* be every type other than null, undefined, void, and never
|
||||
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
|
||||
@@ -40622,8 +40622,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 /* IndexedAccess */ ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 /* Conditional */ ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 /* Substitution */ ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
// (T | U)[K] -> T[K] | U[K] (reading)
|
||||
@@ -42600,7 +42599,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0 /* None */;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, /*reportErrors*/ !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -42724,10 +42723,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256 /* Simplifiable */) {
|
||||
if (source.flags & 33554432 /* Substitution */) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432 /* Substitution */) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824 /* Simplifiable */) {
|
||||
source = getSimplifiedType(source, /*writing*/ false);
|
||||
}
|
||||
if (target.flags & 58720256 /* Simplifiable */) {
|
||||
if (target.flags & 25165824 /* Simplifiable */) {
|
||||
target = getSimplifiedType(target, /*writing*/ true);
|
||||
}
|
||||
// Try to see if we're relating something like `Foo` -> `Bar | null | undefined`.
|
||||
@@ -42856,10 +42861,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 524288 /* Object */) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 131068 /* Primitive */) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -43781,9 +43790,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, /*matchDiscriminantProperties*/ false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -43791,6 +43801,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, /*reportErrors*/ false)) {
|
||||
if (props.length > 5) { // arbitrary cutoff for too-long list form
|
||||
@@ -43799,7 +43812,11 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
// ELSE: No array like or unmatched property error - just issue top level error (errorInfo = undefined)
|
||||
}
|
||||
return 0 /* False */;
|
||||
}
|
||||
@@ -121965,30 +121982,37 @@ var ts;
|
||||
return undefined;
|
||||
}
|
||||
var typeChecker = program.getTypeChecker();
|
||||
var symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
|
||||
var nodeForQuickInfo = getNodeForQuickInfo(node);
|
||||
var symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
|
||||
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
||||
var type_2 = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
|
||||
var type_2 = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
|
||||
return type_2 && {
|
||||
kind: "" /* unknown */,
|
||||
kindModifiers: "" /* none */,
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(node)); }),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) { return ts.typeToDisplayParts(typeChecker, type_2, ts.getContainerNode(nodeForQuickInfo)); }),
|
||||
documentation: type_2.symbol ? type_2.symbol.getDocumentationComment(typeChecker) : undefined,
|
||||
tags: type_2.symbol ? type_2.symbol.getJsDocTags() : undefined
|
||||
};
|
||||
}
|
||||
var _a = typeChecker.runWithCancellationToken(cancellationToken, function (typeChecker) {
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(node), node);
|
||||
return ts.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, ts.getContainerNode(nodeForQuickInfo), nodeForQuickInfo);
|
||||
}), symbolKind = _a.symbolKind, displayParts = _a.displayParts, documentation = _a.documentation, tags = _a.tags;
|
||||
return {
|
||||
kind: symbolKind,
|
||||
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(symbol),
|
||||
textSpan: ts.createTextSpanFromNode(node, sourceFile),
|
||||
textSpan: ts.createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||
displayParts: displayParts,
|
||||
documentation: documentation,
|
||||
tags: tags,
|
||||
};
|
||||
}
|
||||
function getNodeForQuickInfo(node) {
|
||||
if (ts.isNewExpression(node.parent) && node.pos === node.parent.pos) {
|
||||
return node.parent.expression;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
function shouldGetType(sourceFile, node, position) {
|
||||
switch (node.kind) {
|
||||
case 73 /* Identifier */:
|
||||
|
||||
@@ -3489,7 +3489,7 @@ var ts;
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
|
||||
/* @internal */
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 58720256] = "Simplifiable";
|
||||
TypeFlags[TypeFlags["Simplifiable"] = 25165824] = "Simplifiable";
|
||||
// 'Narrowable' types are types where narrowing actually narrows.
|
||||
// This *should* be every type other than null, undefined, void, and never
|
||||
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
|
||||
@@ -40623,8 +40623,7 @@ var ts;
|
||||
function getSimplifiedType(type, writing) {
|
||||
return type.flags & 8388608 /* IndexedAccess */ ? getSimplifiedIndexedAccessType(type, writing) :
|
||||
type.flags & 16777216 /* Conditional */ ? getSimplifiedConditionalType(type, writing) :
|
||||
type.flags & 33554432 /* Substitution */ ? writing ? type.typeVariable : type.substitute :
|
||||
type;
|
||||
type;
|
||||
}
|
||||
function distributeIndexOverObjectType(objectType, indexType, writing) {
|
||||
// (T | U)[K] -> T[K] | U[K] (reading)
|
||||
@@ -42601,7 +42600,7 @@ var ts;
|
||||
var depth = 0;
|
||||
var expandingFlags = 0 /* None */;
|
||||
var overflow = false;
|
||||
var suppressNextError = false;
|
||||
var overrideNextErrorInfo;
|
||||
ts.Debug.assert(relation !== identityRelation || !errorNode, "no error reporting in identity checking");
|
||||
var result = isRelatedTo(source, target, /*reportErrors*/ !!errorNode, headMessage);
|
||||
if (overflow) {
|
||||
@@ -42725,10 +42724,16 @@ var ts;
|
||||
if (isFreshLiteralType(target)) {
|
||||
target = target.regularType;
|
||||
}
|
||||
if (source.flags & 58720256 /* Simplifiable */) {
|
||||
if (source.flags & 33554432 /* Substitution */) {
|
||||
source = source.substitute;
|
||||
}
|
||||
if (target.flags & 33554432 /* Substitution */) {
|
||||
target = target.typeVariable;
|
||||
}
|
||||
if (source.flags & 25165824 /* Simplifiable */) {
|
||||
source = getSimplifiedType(source, /*writing*/ false);
|
||||
}
|
||||
if (target.flags & 58720256 /* Simplifiable */) {
|
||||
if (target.flags & 25165824 /* Simplifiable */) {
|
||||
target = getSimplifiedType(target, /*writing*/ true);
|
||||
}
|
||||
// Try to see if we're relating something like `Foo` -> `Bar | null | undefined`.
|
||||
@@ -42857,10 +42862,14 @@ var ts;
|
||||
}
|
||||
}
|
||||
if (!result && reportErrors) {
|
||||
var maybeSuppress = suppressNextError;
|
||||
suppressNextError = false;
|
||||
var maybeSuppress = overrideNextErrorInfo;
|
||||
overrideNextErrorInfo = undefined;
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 524288 /* Object */) {
|
||||
var currentError = errorInfo;
|
||||
tryElaborateArrayLikeErrors(source, target, reportErrors);
|
||||
if (errorInfo !== currentError) {
|
||||
maybeSuppress = errorInfo;
|
||||
}
|
||||
}
|
||||
if (source.flags & 524288 /* Object */ && target.flags & 131068 /* Primitive */) {
|
||||
tryElaborateErrorsForPrimitivesAndObjects(source, target);
|
||||
@@ -43782,9 +43791,10 @@ var ts;
|
||||
if (unmatchedProperty) {
|
||||
if (reportErrors) {
|
||||
var props = ts.arrayFrom(getUnmatchedProperties(source, target, requireOptionalProperties, /*matchDiscriminantProperties*/ false));
|
||||
var shouldSkipElaboration = false;
|
||||
if (!headMessage || (headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_interface_1.code &&
|
||||
headMessage.code !== ts.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)) {
|
||||
suppressNextError = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
shouldSkipElaboration = true; // Retain top-level error for interface implementing issues, otherwise omit it
|
||||
}
|
||||
if (props.length === 1) {
|
||||
var propName = symbolToString(unmatchedProperty);
|
||||
@@ -43792,6 +43802,9 @@ var ts;
|
||||
if (ts.length(unmatchedProperty.declarations)) {
|
||||
associateRelatedInfo(ts.createDiagnosticForNode(unmatchedProperty.declarations[0], ts.Diagnostics._0_is_declared_here, propName));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
else if (tryElaborateArrayLikeErrors(source, target, /*reportErrors*/ false)) {
|
||||
if (props.length > 5) { // arbitrary cutoff for too-long list form
|
||||
@@ -43800,7 +43813,11 @@ var ts;
|
||||
else {
|
||||
reportError(ts.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, typeToString(source), typeToString(target), ts.map(props, function (p) { return symbolToString(p); }).join(", "));
|
||||
}
|
||||
if (shouldSkipElaboration) {
|
||||
overrideNextErrorInfo = errorInfo;
|
||||
}
|
||||
}
|
||||
// ELSE: No array like or unmatched property error - just issue top level error (errorInfo = undefined)
|
||||
}
|
||||
return 0 /* False */;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user