mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Merge branch 'master' into recursiveTypeReferences
# Conflicts: # src/compiler/checker.ts
This commit is contained in:
@@ -524,6 +524,9 @@ namespace ts {
|
||||
},
|
||||
getApparentType,
|
||||
getUnionType,
|
||||
isTypeAssignableTo: (source, target) => {
|
||||
return isTypeAssignableTo(source, target);
|
||||
},
|
||||
createAnonymousType,
|
||||
createSignature,
|
||||
createSymbol,
|
||||
@@ -33378,8 +33381,8 @@ namespace ts {
|
||||
|
||||
// Modifiers are never allowed on properties except for 'async' on a method declaration
|
||||
if (prop.modifiers) {
|
||||
const modifiers = prop.modifiers;
|
||||
for (const mod of modifiers) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
||||
for (const mod of prop.modifiers!) { // TODO: GH#19955
|
||||
if (mod.kind !== SyntaxKind.AsyncKeyword || prop.kind !== SyntaxKind.MethodDeclaration) {
|
||||
grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod));
|
||||
}
|
||||
|
||||
@@ -3315,6 +3315,7 @@ namespace ts {
|
||||
/* @internal */ getElementTypeOfArrayType(arrayType: Type): Type | undefined;
|
||||
/* @internal */ createPromiseType(type: Type): Type;
|
||||
|
||||
/* @internal */ isTypeAssignableTo(source: Type, target: Type): boolean;
|
||||
/* @internal */ createAnonymousType(symbol: Symbol, members: SymbolTable, callSignatures: Signature[], constructSignatures: Signature[], stringIndexInfo: IndexInfo | undefined, numberIndexInfo: IndexInfo | undefined): Type;
|
||||
/* @internal */ createSignature(
|
||||
declaration: SignatureDeclaration,
|
||||
|
||||
@@ -393,6 +393,19 @@ namespace ts.codefix {
|
||||
|
||||
function inferTypeFromReferences(program: Program, references: readonly Identifier[], cancellationToken: CancellationToken) {
|
||||
const checker = program.getTypeChecker();
|
||||
const builtinConstructors: { [s: string]: (t: Type) => Type } = {
|
||||
string: () => checker.getStringType(),
|
||||
number: () => checker.getNumberType(),
|
||||
Array: t => checker.createArrayType(t),
|
||||
Promise: t => checker.createPromiseType(t),
|
||||
};
|
||||
const builtins = [
|
||||
checker.getStringType(),
|
||||
checker.getNumberType(),
|
||||
checker.createArrayType(checker.getAnyType()),
|
||||
checker.createPromiseType(checker.getAnyType()),
|
||||
];
|
||||
|
||||
return {
|
||||
single,
|
||||
parameters,
|
||||
@@ -401,26 +414,74 @@ namespace ts.codefix {
|
||||
|
||||
interface CallUsage {
|
||||
argumentTypes: Type[];
|
||||
returnType: Usage;
|
||||
return_: Usage;
|
||||
}
|
||||
|
||||
interface Usage {
|
||||
isNumber?: boolean;
|
||||
isString?: boolean;
|
||||
isNumber: boolean | undefined;
|
||||
isString: boolean | undefined;
|
||||
/** Used ambiguously, eg x + ___ or object[___]; results in string | number if no other evidence exists */
|
||||
isNumberOrString?: boolean;
|
||||
isNumberOrString: boolean | undefined;
|
||||
|
||||
candidateTypes?: Type[];
|
||||
properties?: UnderscoreEscapedMap<Usage>;
|
||||
calls?: CallUsage[];
|
||||
constructs?: CallUsage[];
|
||||
numberIndex?: Usage;
|
||||
stringIndex?: Usage;
|
||||
candidateThisTypes?: Type[];
|
||||
candidateTypes: Type[] | undefined;
|
||||
properties: UnderscoreEscapedMap<Usage> | undefined;
|
||||
calls: CallUsage[] | undefined;
|
||||
constructs: CallUsage[] | undefined;
|
||||
numberIndex: Usage | undefined;
|
||||
stringIndex: Usage | undefined;
|
||||
candidateThisTypes: Type[] | undefined;
|
||||
inferredTypes: Type[] | undefined;
|
||||
}
|
||||
|
||||
function createEmptyUsage(): Usage {
|
||||
return {
|
||||
isNumber: undefined,
|
||||
isString: undefined,
|
||||
isNumberOrString: undefined,
|
||||
candidateTypes: undefined,
|
||||
properties: undefined,
|
||||
calls: undefined,
|
||||
constructs: undefined,
|
||||
numberIndex: undefined,
|
||||
stringIndex: undefined,
|
||||
candidateThisTypes: undefined,
|
||||
inferredTypes: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
function combineUsages(usages: Usage[]): Usage {
|
||||
const combinedProperties = createUnderscoreEscapedMap<Usage[]>();
|
||||
for (const u of usages) {
|
||||
if (u.properties) {
|
||||
u.properties.forEach((p, name) => {
|
||||
if (!combinedProperties.has(name)) {
|
||||
combinedProperties.set(name, []);
|
||||
}
|
||||
combinedProperties.get(name)!.push(p);
|
||||
});
|
||||
}
|
||||
}
|
||||
const properties = createUnderscoreEscapedMap<Usage>();
|
||||
combinedProperties.forEach((ps, name) => {
|
||||
properties.set(name, combineUsages(ps));
|
||||
});
|
||||
return {
|
||||
isNumber: usages.some(u => u.isNumber),
|
||||
isString: usages.some(u => u.isString),
|
||||
isNumberOrString: usages.some(u => u.isNumberOrString),
|
||||
candidateTypes: flatMap(usages, u => u.candidateTypes) as Type[],
|
||||
properties,
|
||||
calls: flatMap(usages, u => u.calls) as CallUsage[],
|
||||
constructs: flatMap(usages, u => u.constructs) as CallUsage[],
|
||||
numberIndex: forEach(usages, u => u.numberIndex),
|
||||
stringIndex: forEach(usages, u => u.stringIndex),
|
||||
candidateThisTypes: flatMap(usages, u => u.candidateThisTypes) as Type[],
|
||||
inferredTypes: undefined, // clear type cache
|
||||
};
|
||||
}
|
||||
|
||||
function single(): Type {
|
||||
return unifyFromUsage(inferTypesFromReferencesSingle(references));
|
||||
return combineTypes(inferTypesFromReferencesSingle(references));
|
||||
}
|
||||
|
||||
function parameters(declaration: FunctionLike): ParameterInference[] | undefined {
|
||||
@@ -428,7 +489,7 @@ namespace ts.codefix {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const usage: Usage = {};
|
||||
const usage = createEmptyUsage();
|
||||
for (const reference of references) {
|
||||
cancellationToken.throwIfCancellationRequested();
|
||||
calculateUsageOfNode(reference, usage);
|
||||
@@ -456,7 +517,7 @@ namespace ts.codefix {
|
||||
const inferred = inferTypesFromReferencesSingle(getReferences(parameter.name, program, cancellationToken));
|
||||
types.push(...(isRest ? mapDefined(inferred, checker.getElementTypeOfArrayType) : inferred));
|
||||
}
|
||||
const type = unifyFromUsage(types);
|
||||
const type = combineTypes(types);
|
||||
return {
|
||||
type: isRest ? checker.createArrayType(type) : type,
|
||||
isOptional: isOptional && !isRest,
|
||||
@@ -466,22 +527,22 @@ namespace ts.codefix {
|
||||
}
|
||||
|
||||
function thisParameter() {
|
||||
const usage: Usage = {};
|
||||
const usage = createEmptyUsage();
|
||||
for (const reference of references) {
|
||||
cancellationToken.throwIfCancellationRequested();
|
||||
calculateUsageOfNode(reference, usage);
|
||||
}
|
||||
|
||||
return unifyFromUsage(usage.candidateThisTypes || emptyArray);
|
||||
return combineTypes(usage.candidateThisTypes || emptyArray);
|
||||
}
|
||||
|
||||
function inferTypesFromReferencesSingle(references: readonly Identifier[]): Type[] {
|
||||
const usage: Usage = {};
|
||||
const usage: Usage = createEmptyUsage();
|
||||
for (const reference of references) {
|
||||
cancellationToken.throwIfCancellationRequested();
|
||||
calculateUsageOfNode(reference, usage);
|
||||
}
|
||||
return inferFromUsage(usage);
|
||||
return inferTypes(usage);
|
||||
}
|
||||
|
||||
function calculateUsageOfNode(node: Expression, usage: Usage): void {
|
||||
@@ -490,6 +551,9 @@ namespace ts.codefix {
|
||||
}
|
||||
|
||||
switch (node.parent.kind) {
|
||||
case SyntaxKind.ExpressionStatement:
|
||||
addCandidateType(usage, checker.getVoidType());
|
||||
break;
|
||||
case SyntaxKind.PostfixUnaryExpression:
|
||||
usage.isNumber = true;
|
||||
break;
|
||||
@@ -632,6 +696,9 @@ namespace ts.codefix {
|
||||
else if (otherOperandType.flags & TypeFlags.StringLike) {
|
||||
usage.isString = true;
|
||||
}
|
||||
else if (otherOperandType.flags & TypeFlags.Any) {
|
||||
// do nothing, maybe we'll learn something elsewhere
|
||||
}
|
||||
else {
|
||||
usage.isNumberOrString = true;
|
||||
}
|
||||
@@ -677,7 +744,7 @@ namespace ts.codefix {
|
||||
function inferTypeFromCallExpression(parent: CallExpression | NewExpression, usage: Usage): void {
|
||||
const call: CallUsage = {
|
||||
argumentTypes: [],
|
||||
returnType: {}
|
||||
return_: createEmptyUsage()
|
||||
};
|
||||
|
||||
if (parent.arguments) {
|
||||
@@ -686,7 +753,7 @@ namespace ts.codefix {
|
||||
}
|
||||
}
|
||||
|
||||
calculateUsageOfNode(parent, call.returnType);
|
||||
calculateUsageOfNode(parent, call.return_);
|
||||
if (parent.kind === SyntaxKind.CallExpression) {
|
||||
(usage.calls || (usage.calls = [])).push(call);
|
||||
}
|
||||
@@ -700,7 +767,7 @@ namespace ts.codefix {
|
||||
if (!usage.properties) {
|
||||
usage.properties = createUnderscoreEscapedMap<Usage>();
|
||||
}
|
||||
const propertyUsage = usage.properties.get(name) || { };
|
||||
const propertyUsage = usage.properties.get(name) || createEmptyUsage();
|
||||
calculateUsageOfNode(parent, propertyUsage);
|
||||
usage.properties.set(name, propertyUsage);
|
||||
}
|
||||
@@ -712,7 +779,7 @@ namespace ts.codefix {
|
||||
}
|
||||
else {
|
||||
const indexType = checker.getTypeAtLocation(parent.argumentExpression);
|
||||
const indexUsage = {};
|
||||
const indexUsage = createEmptyUsage();
|
||||
calculateUsageOfNode(parent, indexUsage);
|
||||
if (indexType.flags & TypeFlags.NumberLike) {
|
||||
usage.numberIndex = indexUsage;
|
||||
@@ -752,8 +819,12 @@ namespace ts.codefix {
|
||||
return inferences.filter(i => toRemove.every(f => !f(i)));
|
||||
}
|
||||
|
||||
function unifyFromUsage(inferences: readonly Type[], fallback = checker.getAnyType()): Type {
|
||||
if (!inferences.length) return fallback;
|
||||
function combineFromUsage(usage: Usage) {
|
||||
return combineTypes(inferTypes(usage));
|
||||
}
|
||||
|
||||
function combineTypes(inferences: readonly Type[]): Type {
|
||||
if (!inferences.length) return checker.getAnyType();
|
||||
|
||||
// 1. string or number individually override string | number
|
||||
// 2. non-any, non-void overrides any or void
|
||||
@@ -776,12 +847,12 @@ namespace ts.codefix {
|
||||
const anons = good.filter(i => checker.getObjectFlags(i) & ObjectFlags.Anonymous) as AnonymousType[];
|
||||
if (anons.length) {
|
||||
good = good.filter(i => !(checker.getObjectFlags(i) & ObjectFlags.Anonymous));
|
||||
good.push(unifyAnonymousTypes(anons));
|
||||
good.push(combineAnonymousTypes(anons));
|
||||
}
|
||||
return checker.getWidenedType(checker.getUnionType(good));
|
||||
return checker.getWidenedType(checker.getUnionType(good.map(checker.getBaseTypeOfLiteralType), UnionReduction.Subtype));
|
||||
}
|
||||
|
||||
function unifyAnonymousTypes(anons: AnonymousType[]) {
|
||||
function combineAnonymousTypes(anons: AnonymousType[]) {
|
||||
if (anons.length === 1) {
|
||||
return anons[0];
|
||||
}
|
||||
@@ -822,7 +893,7 @@ namespace ts.codefix {
|
||||
numberIndices.length ? checker.createIndexInfo(checker.getUnionType(numberIndices), numberIndexReadonly) : undefined);
|
||||
}
|
||||
|
||||
function inferFromUsage(usage: Usage) {
|
||||
function inferTypes(usage: Usage): Type[] {
|
||||
const types = [];
|
||||
|
||||
if (usage.isNumber) {
|
||||
@@ -834,92 +905,155 @@ namespace ts.codefix {
|
||||
if (usage.isNumberOrString) {
|
||||
types.push(checker.getUnionType([checker.getStringType(), checker.getNumberType()]));
|
||||
}
|
||||
if (usage.numberIndex) {
|
||||
types.push(checker.createArrayType(combineFromUsage(usage.numberIndex)));
|
||||
}
|
||||
if (usage.properties && usage.properties.size
|
||||
|| usage.calls && usage.calls.length
|
||||
|| usage.constructs && usage.constructs.length
|
||||
|| usage.stringIndex) {
|
||||
types.push(inferStructuralType(usage));
|
||||
}
|
||||
|
||||
types.push(...(usage.candidateTypes || []).map(t => checker.getBaseTypeOfLiteralType(t)));
|
||||
types.push(...inferNamedTypesFromProperties(usage));
|
||||
|
||||
if (usage.properties && hasCalls(usage.properties.get("then" as __String))) {
|
||||
const paramType = getParameterTypeFromCalls(0, usage.properties.get("then" as __String)!.calls!, /*isRestParameter*/ false)!; // TODO: GH#18217
|
||||
const types = paramType.getCallSignatures().map(sig => sig.getReturnType());
|
||||
types.push(checker.createPromiseType(types.length ? checker.getUnionType(types, UnionReduction.Subtype) : checker.getAnyType()));
|
||||
}
|
||||
else if (usage.properties && hasCalls(usage.properties.get("push" as __String))) {
|
||||
types.push(checker.createArrayType(getParameterTypeFromCalls(0, usage.properties.get("push" as __String)!.calls!, /*isRestParameter*/ false)!));
|
||||
}
|
||||
|
||||
if (usage.numberIndex) {
|
||||
types.push(checker.createArrayType(recur(usage.numberIndex)));
|
||||
}
|
||||
else if (usage.properties || usage.calls || usage.constructs || usage.stringIndex) {
|
||||
const members = createUnderscoreEscapedMap<Symbol>();
|
||||
const callSignatures: Signature[] = [];
|
||||
const constructSignatures: Signature[] = [];
|
||||
let stringIndexInfo: IndexInfo | undefined;
|
||||
|
||||
if (usage.properties) {
|
||||
usage.properties.forEach((u, name) => {
|
||||
const symbol = checker.createSymbol(SymbolFlags.Property, name);
|
||||
symbol.type = recur(u);
|
||||
members.set(name, symbol);
|
||||
});
|
||||
}
|
||||
|
||||
if (usage.calls) {
|
||||
for (const call of usage.calls) {
|
||||
callSignatures.push(getSignatureFromCall(call));
|
||||
}
|
||||
}
|
||||
|
||||
if (usage.constructs) {
|
||||
for (const construct of usage.constructs) {
|
||||
constructSignatures.push(getSignatureFromCall(construct));
|
||||
}
|
||||
}
|
||||
|
||||
if (usage.stringIndex) {
|
||||
stringIndexInfo = checker.createIndexInfo(recur(usage.stringIndex), /*isReadonly*/ false);
|
||||
}
|
||||
|
||||
types.push(checker.createAnonymousType(/*symbol*/ undefined!, members, callSignatures, constructSignatures, stringIndexInfo, /*numberIndexInfo*/ undefined)); // TODO: GH#18217
|
||||
}
|
||||
return types;
|
||||
|
||||
function recur(innerUsage: Usage): Type {
|
||||
return unifyFromUsage(inferFromUsage(innerUsage));
|
||||
}
|
||||
}
|
||||
|
||||
function getParameterTypeFromCalls(parameterIndex: number, calls: CallUsage[], isRestParameter: boolean) {
|
||||
let types: Type[] = [];
|
||||
if (calls) {
|
||||
for (const call of calls) {
|
||||
if (call.argumentTypes.length > parameterIndex) {
|
||||
if (isRestParameter) {
|
||||
types = concatenate(types, map(call.argumentTypes.slice(parameterIndex), a => checker.getBaseTypeOfLiteralType(a)));
|
||||
}
|
||||
else {
|
||||
types.push(checker.getBaseTypeOfLiteralType(call.argumentTypes[parameterIndex]));
|
||||
function inferStructuralType(usage: Usage) {
|
||||
const members = createUnderscoreEscapedMap<Symbol>();
|
||||
if (usage.properties) {
|
||||
usage.properties.forEach((u, name) => {
|
||||
const symbol = checker.createSymbol(SymbolFlags.Property, name);
|
||||
symbol.type = combineFromUsage(u);
|
||||
members.set(name, symbol);
|
||||
});
|
||||
}
|
||||
const callSignatures: Signature[] = usage.calls ? [getSignatureFromCalls(usage.calls)] : [];
|
||||
const constructSignatures: Signature[] = usage.constructs ? [getSignatureFromCalls(usage.constructs)] : [];
|
||||
const stringIndexInfo = usage.stringIndex && checker.createIndexInfo(combineFromUsage(usage.stringIndex), /*isReadonly*/ false);
|
||||
return checker.createAnonymousType(/*symbol*/ undefined!, members, callSignatures, constructSignatures, stringIndexInfo, /*numberIndexInfo*/ undefined); // TODO: GH#18217
|
||||
}
|
||||
|
||||
function inferNamedTypesFromProperties(usage: Usage): Type[] {
|
||||
if (!usage.properties || !usage.properties.size) return [];
|
||||
const types = builtins.filter(t => allPropertiesAreAssignableToUsage(t, usage));
|
||||
if (0 < types.length && types.length < 3) {
|
||||
return types.map(t => inferInstantiationFromUsage(t, usage));
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function allPropertiesAreAssignableToUsage(type: Type, usage: Usage) {
|
||||
if (!usage.properties) return false;
|
||||
return !forEachEntry(usage.properties, (propUsage, name) => {
|
||||
const source = checker.getTypeOfPropertyOfType(type, name as string);
|
||||
if (!source) {
|
||||
return true;
|
||||
}
|
||||
if (propUsage.calls) {
|
||||
const sigs = checker.getSignaturesOfType(source, SignatureKind.Call);
|
||||
return !sigs.length || !checker.isTypeAssignableTo(source, getFunctionFromCalls(propUsage.calls));
|
||||
}
|
||||
else {
|
||||
return !checker.isTypeAssignableTo(source, combineFromUsage(propUsage));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* inference is limited to
|
||||
* 1. generic types with a single parameter
|
||||
* 2. inference to/from calls with a single signature
|
||||
*/
|
||||
function inferInstantiationFromUsage(type: Type, usage: Usage) {
|
||||
if (!(getObjectFlags(type) & ObjectFlags.Reference) || !usage.properties) {
|
||||
return type;
|
||||
}
|
||||
const generic = (type as TypeReference).target;
|
||||
const singleTypeParameter = singleOrUndefined(generic.typeParameters);
|
||||
if (!singleTypeParameter) return type;
|
||||
|
||||
const types: Type[] = [];
|
||||
usage.properties.forEach((propUsage, name) => {
|
||||
const genericPropertyType = checker.getTypeOfPropertyOfType(generic, name as string);
|
||||
Debug.assert(!!genericPropertyType, "generic should have all the properties of its reference.");
|
||||
types.push(...inferTypeParameters(genericPropertyType!, combineFromUsage(propUsage), singleTypeParameter));
|
||||
});
|
||||
return builtinConstructors[type.symbol.escapedName as string](combineTypes(types));
|
||||
}
|
||||
|
||||
function inferTypeParameters(genericType: Type, usageType: Type, typeParameter: Type): readonly Type[] {
|
||||
if (genericType === typeParameter) {
|
||||
return [usageType];
|
||||
}
|
||||
else if (genericType.flags & TypeFlags.UnionOrIntersection) {
|
||||
return flatMap((genericType as UnionOrIntersectionType).types, t => inferTypeParameters(t, usageType, typeParameter));
|
||||
}
|
||||
else if (getObjectFlags(genericType) & ObjectFlags.Reference && getObjectFlags(usageType) & ObjectFlags.Reference) {
|
||||
// this is wrong because we need a reference to the targetType to, so we can check that it's also a reference
|
||||
const genericArgs = (genericType as TypeReference).typeArguments;
|
||||
const usageArgs = (usageType as TypeReference).typeArguments;
|
||||
const types = [];
|
||||
if (genericArgs && usageArgs) {
|
||||
for (let i = 0; i < genericArgs.length; i++) {
|
||||
if (usageArgs[i]) {
|
||||
types.push(...inferTypeParameters(genericArgs[i], usageArgs[i], typeParameter));
|
||||
}
|
||||
}
|
||||
}
|
||||
return types;
|
||||
}
|
||||
|
||||
if (types.length) {
|
||||
const type = checker.getWidenedType(checker.getUnionType(types, UnionReduction.Subtype));
|
||||
return isRestParameter ? checker.createArrayType(type) : type;
|
||||
const genericSigs = checker.getSignaturesOfType(genericType, SignatureKind.Call);
|
||||
const usageSigs = checker.getSignaturesOfType(usageType, SignatureKind.Call);
|
||||
if (genericSigs.length === 1 && usageSigs.length === 1) {
|
||||
return inferFromSignatures(genericSigs[0], usageSigs[0], typeParameter);
|
||||
}
|
||||
return undefined;
|
||||
return [];
|
||||
}
|
||||
|
||||
function getSignatureFromCall(call: CallUsage): Signature {
|
||||
function inferFromSignatures(genericSig: Signature, usageSig: Signature, typeParameter: Type) {
|
||||
const types = [];
|
||||
for (let i = 0; i < genericSig.parameters.length; i++) {
|
||||
const genericParam = genericSig.parameters[i];
|
||||
const usageParam = usageSig.parameters[i];
|
||||
const isRest = genericSig.declaration && isRestParameter(genericSig.declaration.parameters[i]);
|
||||
if (!usageParam) {
|
||||
break;
|
||||
}
|
||||
let genericParamType = checker.getTypeOfSymbolAtLocation(genericParam, genericParam.valueDeclaration);
|
||||
const elementType = isRest && checker.getElementTypeOfArrayType(genericParamType);
|
||||
if (elementType) {
|
||||
genericParamType = elementType;
|
||||
}
|
||||
const targetType = (usageParam as SymbolLinks).type || checker.getTypeOfSymbolAtLocation(usageParam, usageParam.valueDeclaration);
|
||||
types.push(...inferTypeParameters(genericParamType, targetType, typeParameter));
|
||||
}
|
||||
const genericReturn = checker.getReturnTypeOfSignature(genericSig);
|
||||
const usageReturn = checker.getReturnTypeOfSignature(usageSig);
|
||||
types.push(...inferTypeParameters(genericReturn, usageReturn, typeParameter));
|
||||
return types;
|
||||
}
|
||||
|
||||
function getFunctionFromCalls(calls: CallUsage[]) {
|
||||
return checker.createAnonymousType(undefined!, createSymbolTable(), [getSignatureFromCalls(calls)], emptyArray, /*stringIndexInfo*/ undefined, /*numberIndexInfo*/ undefined);
|
||||
}
|
||||
|
||||
function getSignatureFromCalls(calls: CallUsage[]): Signature {
|
||||
const parameters: Symbol[] = [];
|
||||
for (let i = 0; i < call.argumentTypes.length; i++) {
|
||||
const length = Math.max(...calls.map(c => c.argumentTypes.length));
|
||||
for (let i = 0; i < length; i++) {
|
||||
const symbol = checker.createSymbol(SymbolFlags.FunctionScopedVariable, escapeLeadingUnderscores(`arg${i}`));
|
||||
symbol.type = checker.getWidenedType(checker.getBaseTypeOfLiteralType(call.argumentTypes[i]));
|
||||
symbol.type = combineTypes(calls.map(call => call.argumentTypes[i] || checker.getUndefinedType()));
|
||||
if (calls.some(call => call.argumentTypes[i] === undefined)) {
|
||||
symbol.flags |= SymbolFlags.Optional;
|
||||
}
|
||||
parameters.push(symbol);
|
||||
}
|
||||
const returnType = unifyFromUsage(inferFromUsage(call.returnType), checker.getVoidType());
|
||||
const returnType = combineFromUsage(combineUsages(calls.map(call => call.return_)));
|
||||
// TODO: GH#18217
|
||||
return checker.createSignature(/*declaration*/ undefined!, /*typeParameters*/ undefined, /*thisParameter*/ undefined, parameters, returnType, /*typePredicate*/ undefined, call.argumentTypes.length, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
|
||||
return checker.createSignature(/*declaration*/ undefined!, /*typeParameters*/ undefined, /*thisParameter*/ undefined, parameters, returnType, /*typePredicate*/ undefined, length, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
|
||||
}
|
||||
|
||||
function addCandidateType(usage: Usage, type: Type | undefined) {
|
||||
@@ -933,9 +1067,5 @@ namespace ts.codefix {
|
||||
(usage.candidateThisTypes || (usage.candidateThisTypes = [])).push(type);
|
||||
}
|
||||
}
|
||||
|
||||
function hasCalls(usage: Usage | undefined): boolean {
|
||||
return !!usage && !!usage.calls;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
Exit Code: 1
|
||||
Standard output:
|
||||
@uifabric/codepen-loader: yarn run vX.X.X
|
||||
@uifabric/codepen-loader: $ just-scripts build --production --lint
|
||||
@uifabric/codepen-loader: [XX:XX:XX XM] ■ Removing [lib, temp, dist, coverage, lib-commonjs]
|
||||
@uifabric/codepen-loader: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/codepen-loader/tsconfig.json
|
||||
@uifabric/codepen-loader: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --module commonjs --outDir "./lib" --project "/office-ui-fabric-react/packages/codepen-loader/tsconfig.json"
|
||||
@uifabric/codepen-loader: [XX:XX:XX XM] ■ Running Jest
|
||||
@uifabric/codepen-loader: [XX:XX:XX XM] ■ /usr/local/bin/node "/office-ui-fabric-react/node_modules/jest/bin/jest.js" --config "/office-ui-fabric-react/packages/codepen-loader/jest.config.js" --passWithNoTests --colors --forceExit
|
||||
@uifabric/codepen-loader: PASS src/__tests__/codepenTransform.test.ts
|
||||
@uifabric/codepen-loader: Done in ?s.
|
||||
@uifabric/build: yarn run vX.X.X
|
||||
@uifabric/build: $ node ./just-scripts.js no-op --production --lint
|
||||
@uifabric/build: Done in ?s.
|
||||
@@ -36,9 +27,11 @@ Standard output:
|
||||
@uifabric/migration: Done in ?s.
|
||||
@uifabric/monaco-editor: yarn run vX.X.X
|
||||
@uifabric/monaco-editor: $ just-scripts build --production --lint
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Removing [esm, lib]
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Removing [esm, lib, lib-commonjs]
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/monaco-editor/tsconfig.json
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --inlineSources --sourceRoot "../src" --outDir lib --module esnext --project "/office-ui-fabric-react/packages/monaco-editor/tsconfig.json"
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/monaco-editor/tsconfig.json
|
||||
@uifabric/monaco-editor: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --inlineSources --sourceRoot "../src" --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/monaco-editor/tsconfig.json"
|
||||
@uifabric/monaco-editor: Done in ?s.
|
||||
@uifabric/set-version: yarn run vX.X.X
|
||||
@uifabric/set-version: $ just-scripts build --production --lint
|
||||
@@ -91,6 +84,7 @@ Standard output:
|
||||
@uifabric/merge-styles: PASS src/extractStyleParts.test.ts
|
||||
@uifabric/merge-styles: PASS src/server.test.ts
|
||||
@uifabric/merge-styles: PASS src/concatStyleSetsWithProps.test.ts
|
||||
@uifabric/merge-styles: PASS src/fontFace.test.ts
|
||||
@uifabric/merge-styles: [XX:XX:XX XM] ■ Extracting Public API surface from '/office-ui-fabric-react/packages/merge-styles/lib/index.d.ts'
|
||||
@uifabric/merge-styles: Done in ?s.
|
||||
@uifabric/jest-serializer-merge-styles: yarn run vX.X.X
|
||||
@@ -206,7 +200,6 @@ Standard output:
|
||||
@uifabric/styling: PASS src/styles/theme.test.ts
|
||||
@uifabric/styling: PASS src/styles/scheme.test.ts
|
||||
@uifabric/styling: PASS src/styles/getGlobalClassNames.test.ts
|
||||
@uifabric/styling: PASS src/utilities/icons.test.ts
|
||||
@uifabric/styling: [XX:XX:XX XM] ■ Extracting Public API surface from '/office-ui-fabric-react/packages/styling/lib/index.d.ts'
|
||||
@uifabric/styling: Done in ?s.
|
||||
@uifabric/file-type-icons: yarn run vX.X.X
|
||||
@@ -249,11 +242,7 @@ Standard output:
|
||||
Standard error:
|
||||
info cli using local version of lerna
|
||||
lerna notice cli vX.X.X
|
||||
lerna info Executing command in 43 packages: "yarn run build --production --lint"
|
||||
@uifabric/codepen-loader: ts-jest[versions] (WARN) Version X.X.X-insiders.xxxxxxxx of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=2.7.0 <4.0.0). Please do not report issues in ts-jest if you are using unsupported versions.
|
||||
@uifabric/codepen-loader: Force exiting Jest
|
||||
@uifabric/codepen-loader:
|
||||
@uifabric/codepen-loader: Have you considered using `--detectOpenHandles` to detect async operations that kept running after all tests finished?
|
||||
lerna info Executing command in 42 packages: "yarn run build --production --lint"
|
||||
@uifabric/example-data: [XX:XX:XX XM] ▲ One of these [node-sass, postcss, autoprefixer] is not installed, so this task has no effect
|
||||
@uifabric/set-version: [XX:XX:XX XM] ▲ One of these [node-sass, postcss, autoprefixer] is not installed, so this task has no effect
|
||||
@uifabric/merge-styles: [XX:XX:XX XM] ▲ One of these [node-sass, postcss, autoprefixer] is not installed, so this task has no effect
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
Exit Code: 1
|
||||
Standard output:
|
||||
node_modules/assert/test.js(25,5): error TS2367: This condition will always return 'false' since the types 'string | undefined' and 'boolean' have no overlap.
|
||||
node_modules/assert/test.js(39,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(55,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(74,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(84,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(94,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(103,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(120,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(128,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(39,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(55,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(74,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(84,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(94,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(103,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(120,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(128,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(140,10): error TS2339: Property 'a' does not exist on type 'number[]'.
|
||||
node_modules/assert/test.js(141,10): error TS2339: Property 'b' does not exist on type 'number[]'.
|
||||
node_modules/assert/test.js(142,10): error TS2339: Property 'b' does not exist on type 'number[]'.
|
||||
node_modules/assert/test.js(143,10): error TS2339: Property 'a' does not exist on type 'number[]'.
|
||||
node_modules/assert/test.js(149,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(149,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(157,51): error TS2349: This expression is not callable.
|
||||
Type 'never' has no call signatures.
|
||||
node_modules/assert/test.js(161,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(161,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(168,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(182,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(229,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(235,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(250,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(254,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(182,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(229,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(235,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(250,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(254,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(256,55): error TS2345: Argument of type 'TypeError' is not assignable to parameter of type 'string'.
|
||||
node_modules/assert/test.js(262,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(279,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(285,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(320,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(346,5): error TS2593: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
node_modules/assert/test.js(262,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(279,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(285,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(320,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
node_modules/assert/test.js(346,5): error TS2552: Cannot find name 'test'. Did you mean 'tests'?
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3990,10 +3990,9 @@ node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1277,60):
|
||||
node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1278,42): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<{ key: string; text: string; regex: RegExp; negative: boolean; }>[]): { key: string; text: string; regex: RegExp; negative: boolean; }[]', gave the following error.
|
||||
Argument of type '{ key: any; text: string; negative: boolean; }[]' is not assignable to parameter of type 'ConcatArray<{ key: string; text: string; regex: RegExp; negative: boolean; }>'.
|
||||
Types of property 'slice' are incompatible.
|
||||
Type '(start?: number, end?: number) => { key: any; text: string; negative: boolean; }[]' is not assignable to type '(start?: number, end?: number) => { key: string; text: string; regex: RegExp; negative: boolean; }[]'.
|
||||
Type '{ key: any; text: string; negative: boolean; }[]' is not assignable to type '{ key: string; text: string; regex: RegExp; negative: boolean; }[]'.
|
||||
Property 'regex' is missing in type '{ key: any; text: string; negative: boolean; }' but required in type '{ key: string; text: string; regex: RegExp; negative: boolean; }'.
|
||||
The types returned by 'slice(...)' are incompatible between these types.
|
||||
Type '{ key: any; text: string; negative: boolean; }[]' is not assignable to type '{ key: string; text: string; regex: RegExp; negative: boolean; }[]'.
|
||||
Property 'regex' is missing in type '{ key: any; text: string; negative: boolean; }' but required in type '{ key: string; text: string; regex: RegExp; negative: boolean; }'.
|
||||
Overload 2 of 2, '(...items: ({ key: string; text: string; regex: RegExp; negative: boolean; } | ConcatArray<{ key: string; text: string; regex: RegExp; negative: boolean; }>)[]): { key: string; text: string; regex: RegExp; negative: boolean; }[]', gave the following error.
|
||||
Argument of type '{ key: any; text: string; negative: boolean; }[]' is not assignable to parameter of type '{ key: string; text: string; regex: RegExp; negative: boolean; } | ConcatArray<{ key: string; text: string; regex: RegExp; negative: boolean; }>'.
|
||||
Type '{ key: any; text: string; negative: boolean; }[]' is not assignable to type 'ConcatArray<{ key: string; text: string; regex: RegExp; negative: boolean; }>'.
|
||||
@@ -5038,22 +5037,18 @@ node_modules/chrome-devtools-frontend/front_end/elements/ComputedStyleWidget.js(
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/ComputedStyleWidget.js(91,24): error TS2769: No overload matches this call.
|
||||
The last overload gave the following error.
|
||||
Argument of type '(Promise<CSSMatchedStyles> | Promise<ComputedStyle>)[]' is not assignable to parameter of type 'Iterable<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>>'.
|
||||
Types of property '[Symbol.iterator]' are incompatible.
|
||||
Type '() => IterableIterator<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type '() => Iterator<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any, undefined>'.
|
||||
Type 'IterableIterator<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type 'Iterator<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any, undefined>'.
|
||||
Types of property 'next' are incompatible.
|
||||
Type '(...args: [] | [undefined]) => IteratorResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>, any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any>'.
|
||||
Type 'IteratorResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>, any>' is not assignable to type 'IteratorResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type 'IteratorResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type 'IteratorYieldResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>>'.
|
||||
Type 'Promise<CSSMatchedStyles> | Promise<ComputedStyle>' is not assignable to type 'CSSMatchedStyles | PromiseLike<CSSMatchedStyles>'.
|
||||
Type 'Promise<ComputedStyle>' is not assignable to type 'CSSMatchedStyles | PromiseLike<CSSMatchedStyles>'.
|
||||
Type 'Promise<ComputedStyle>' is not assignable to type 'PromiseLike<CSSMatchedStyles>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = ComputedStyle, TResult2 = never>(onfulfilled?: (value: ComputedStyle) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>' is not assignable to type '<TResult1 = CSSMatchedStyles, TResult2 = never>(onfulfilled?: (value: CSSMatchedStyles) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<...>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'ComputedStyle' is missing the following properties from type 'CSSMatchedStyles': _cssModel, _node, _nodeStyles, _nodeForStyle, and 22 more.
|
||||
The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.
|
||||
Type 'IteratorResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>, any>' is not assignable to type 'IteratorResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type 'IteratorResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<CSSMatchedStyles> | Promise<ComputedStyle>>' is not assignable to type 'IteratorYieldResult<CSSMatchedStyles | PromiseLike<CSSMatchedStyles>>'.
|
||||
Type 'Promise<CSSMatchedStyles> | Promise<ComputedStyle>' is not assignable to type 'CSSMatchedStyles | PromiseLike<CSSMatchedStyles>'.
|
||||
Type 'Promise<ComputedStyle>' is not assignable to type 'CSSMatchedStyles | PromiseLike<CSSMatchedStyles>'.
|
||||
Type 'Promise<ComputedStyle>' is not assignable to type 'PromiseLike<CSSMatchedStyles>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = ComputedStyle, TResult2 = never>(onfulfilled?: (value: ComputedStyle) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>' is not assignable to type '<TResult1 = CSSMatchedStyles, TResult2 = never>(onfulfilled?: (value: CSSMatchedStyles) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<...>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'ComputedStyle' is missing the following properties from type 'CSSMatchedStyles': _cssModel, _node, _nodeStyles, _nodeForStyle, and 22 more.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/ComputedStyleWidget.js(147,52): error TS2339: Property 'keysArray' does not exist on type 'Map<string, string>'.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/ComputedStyleWidget.js(179,50): error TS2339: Property 'createChild' does not exist on type 'Element'.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/ComputedStyleWidget.js(200,74): error TS2339: Property 'consume' does not exist on type 'Event'.
|
||||
@@ -5339,22 +5334,18 @@ node_modules/chrome-devtools-frontend/front_end/elements/MetricsSidebarPane.js(5
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/MetricsSidebarPane.js(82,24): error TS2769: No overload matches this call.
|
||||
The last overload gave the following error.
|
||||
Argument of type '(Promise<Map<string, string>> | Promise<InlineStyleResult>)[]' is not assignable to parameter of type 'Iterable<Map<string, string> | PromiseLike<Map<string, string>>>'.
|
||||
Types of property '[Symbol.iterator]' are incompatible.
|
||||
Type '() => IterableIterator<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type '() => Iterator<Map<string, string> | PromiseLike<Map<string, string>>, any, undefined>'.
|
||||
Type 'IterableIterator<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type 'Iterator<Map<string, string> | PromiseLike<Map<string, string>>, any, undefined>'.
|
||||
Types of property 'next' are incompatible.
|
||||
Type '(...args: [] | [undefined]) => IteratorResult<Promise<Map<string, string>> | Promise<InlineStyleResult>, any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult<Map<string, string> | PromiseLike<Map<string, string>>, any>'.
|
||||
Type 'IteratorResult<Promise<Map<string, string>> | Promise<InlineStyleResult>, any>' is not assignable to type 'IteratorResult<Map<string, string> | PromiseLike<Map<string, string>>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type 'IteratorResult<Map<string, string> | PromiseLike<Map<string, string>>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type 'IteratorYieldResult<Map<string, string> | PromiseLike<Map<string, string>>>'.
|
||||
Type 'Promise<Map<string, string>> | Promise<InlineStyleResult>' is not assignable to type 'Map<string, string> | PromiseLike<Map<string, string>>'.
|
||||
Type 'Promise<InlineStyleResult>' is not assignable to type 'Map<string, string> | PromiseLike<Map<string, string>>'.
|
||||
Type 'Promise<InlineStyleResult>' is not assignable to type 'PromiseLike<Map<string, string>>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = InlineStyleResult, TResult2 = never>(onfulfilled?: (value: InlineStyleResult) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<...>' is not assignable to type '<TResult1 = Map<string, string>, TResult2 = never>(onfulfilled?: (value: Map<string, string>) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<...>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'InlineStyleResult' is missing the following properties from type 'Map<string, string>': clear, delete, forEach, get, and 8 more.
|
||||
The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.
|
||||
Type 'IteratorResult<Promise<Map<string, string>> | Promise<InlineStyleResult>, any>' is not assignable to type 'IteratorResult<Map<string, string> | PromiseLike<Map<string, string>>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type 'IteratorResult<Map<string, string> | PromiseLike<Map<string, string>>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<Map<string, string>> | Promise<InlineStyleResult>>' is not assignable to type 'IteratorYieldResult<Map<string, string> | PromiseLike<Map<string, string>>>'.
|
||||
Type 'Promise<Map<string, string>> | Promise<InlineStyleResult>' is not assignable to type 'Map<string, string> | PromiseLike<Map<string, string>>'.
|
||||
Type 'Promise<InlineStyleResult>' is not assignable to type 'Map<string, string> | PromiseLike<Map<string, string>>'.
|
||||
Type 'Promise<InlineStyleResult>' is not assignable to type 'PromiseLike<Map<string, string>>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = InlineStyleResult, TResult2 = never>(onfulfilled?: (value: InlineStyleResult) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<...>' is not assignable to type '<TResult1 = Map<string, string>, TResult2 = never>(onfulfilled?: (value: Map<string, string>) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<...>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'InlineStyleResult' is missing the following properties from type 'Map<string, string>': clear, delete, forEach, get, and 8 more.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/MetricsSidebarPane.js(120,11): error TS2339: Property 'consume' does not exist on type 'Event'.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/MetricsSidebarPane.js(164,22): error TS2339: Property 'toFixedIfFloating' does not exist on type 'NumberConstructor'.
|
||||
node_modules/chrome-devtools-frontend/front_end/elements/MetricsSidebarPane.js(179,18): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
|
||||
@@ -12648,22 +12639,18 @@ node_modules/chrome-devtools-frontend/front_end/ui/View.js(454,38): error TS2339
|
||||
node_modules/chrome-devtools-frontend/front_end/ui/View.js(461,44): error TS2769: No overload matches this call.
|
||||
The last overload gave the following error.
|
||||
Argument of type '(Promise<void> | Promise<ToolbarItem[]>)[]' is not assignable to parameter of type 'Iterable<void | PromiseLike<void>>'.
|
||||
Types of property '[Symbol.iterator]' are incompatible.
|
||||
Type '() => IterableIterator<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type '() => Iterator<void | PromiseLike<void>, any, undefined>'.
|
||||
Type 'IterableIterator<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type 'Iterator<void | PromiseLike<void>, any, undefined>'.
|
||||
Types of property 'next' are incompatible.
|
||||
Type '(...args: [] | [undefined]) => IteratorResult<Promise<void> | Promise<ToolbarItem[]>, any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult<void | PromiseLike<void>, any>'.
|
||||
Type 'IteratorResult<Promise<void> | Promise<ToolbarItem[]>, any>' is not assignable to type 'IteratorResult<void | PromiseLike<void>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type 'IteratorResult<void | PromiseLike<void>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type 'IteratorYieldResult<void | PromiseLike<void>>'.
|
||||
Type 'Promise<void> | Promise<ToolbarItem[]>' is not assignable to type 'void | PromiseLike<void>'.
|
||||
Type 'Promise<ToolbarItem[]>' is not assignable to type 'void | PromiseLike<void>'.
|
||||
Type 'Promise<ToolbarItem[]>' is not assignable to type 'PromiseLike<void>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = ToolbarItem[], TResult2 = never>(onfulfilled?: (value: ToolbarItem[]) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>' is not assignable to type '<TResult1 = void, TResult2 = never>(onfulfilled?: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<TResult1 | TResult2>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'ToolbarItem[]' is not assignable to type 'void'.
|
||||
The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.
|
||||
Type 'IteratorResult<Promise<void> | Promise<ToolbarItem[]>, any>' is not assignable to type 'IteratorResult<void | PromiseLike<void>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type 'IteratorResult<void | PromiseLike<void>, any>'.
|
||||
Type 'IteratorYieldResult<Promise<void> | Promise<ToolbarItem[]>>' is not assignable to type 'IteratorYieldResult<void | PromiseLike<void>>'.
|
||||
Type 'Promise<void> | Promise<ToolbarItem[]>' is not assignable to type 'void | PromiseLike<void>'.
|
||||
Type 'Promise<ToolbarItem[]>' is not assignable to type 'void | PromiseLike<void>'.
|
||||
Type 'Promise<ToolbarItem[]>' is not assignable to type 'PromiseLike<void>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '<TResult1 = ToolbarItem[], TResult2 = never>(onfulfilled?: (value: ToolbarItem[]) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => Promise<TResult1 | TResult2>' is not assignable to type '<TResult1 = void, TResult2 = never>(onfulfilled?: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>) => PromiseLike<TResult1 | TResult2>'.
|
||||
Types of parameters 'onfulfilled' and 'onfulfilled' are incompatible.
|
||||
Types of parameters 'value' and 'value' are incompatible.
|
||||
Type 'ToolbarItem[]' is not assignable to type 'void'.
|
||||
node_modules/chrome-devtools-frontend/front_end/ui/View.js(495,24): error TS2339: Property 'createTextChild' does not exist on type 'Element'.
|
||||
node_modules/chrome-devtools-frontend/front_end/ui/View.js(496,24): error TS2339: Property 'tabIndex' does not exist on type 'Element'.
|
||||
node_modules/chrome-devtools-frontend/front_end/ui/View.js(501,25): error TS2339: Property 'createChild' does not exist on type 'Element'.
|
||||
|
||||
@@ -142,10 +142,9 @@ src/language-html/printer-html.js(314,13): error TS2769: No overload matches thi
|
||||
src/language-html/printer-html.js(471,11): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
|
||||
Argument of type '{ type: string; parts: any; }[]' is not assignable to parameter of type 'ConcatArray<never>'.
|
||||
Types of property 'slice' are incompatible.
|
||||
Type '(start?: number | undefined, end?: number | undefined) => { type: string; parts: any; }[]' is not assignable to type '(start?: number | undefined, end?: number | undefined) => never[]'.
|
||||
Type '{ type: string; parts: any; }[]' is not assignable to type 'never[]'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'never'.
|
||||
The types returned by 'slice(...)' are incompatible between these types.
|
||||
Type '{ type: string; parts: any; }[]' is not assignable to type 'never[]'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'never'.
|
||||
Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
|
||||
Argument of type '{ type: string; parts: any; }[]' is not assignable to parameter of type 'ConcatArray<never>'.
|
||||
src/language-html/printer-html.js(492,11): error TS2769: No overload matches this call.
|
||||
@@ -200,11 +199,10 @@ src/language-js/index.js(81,60): error TS2345: Argument of type '{ override: { s
|
||||
src/language-js/needs-parens.js(871,14): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<(childPath: any) => any>[]): ((childPath: any) => any)[]', gave the following error.
|
||||
Argument of type '(string | number)[]' is not assignable to parameter of type 'ConcatArray<(childPath: any) => any>'.
|
||||
Types of property 'slice' are incompatible.
|
||||
Type '(start?: number | undefined, end?: number | undefined) => (string | number)[]' is not assignable to type '(start?: number | undefined, end?: number | undefined) => ((childPath: any) => any)[]'.
|
||||
Type '(string | number)[]' is not assignable to type '((childPath: any) => any)[]'.
|
||||
Type 'string | number' is not assignable to type '(childPath: any) => any'.
|
||||
Type 'string' is not assignable to type '(childPath: any) => any'.
|
||||
The types returned by 'slice(...)' are incompatible between these types.
|
||||
Type '(string | number)[]' is not assignable to type '((childPath: any) => any)[]'.
|
||||
Type 'string | number' is not assignable to type '(childPath: any) => any'.
|
||||
Type 'string' is not assignable to type '(childPath: any) => any'.
|
||||
Overload 2 of 2, '(...items: (((childPath: any) => any) | ConcatArray<(childPath: any) => any>)[]): ((childPath: any) => any)[]', gave the following error.
|
||||
Argument of type '(string | number)[]' is not assignable to parameter of type '((childPath: any) => any) | ConcatArray<(childPath: any) => any>'.
|
||||
Type '(string | number)[]' is not assignable to type 'ConcatArray<(childPath: any) => any>'.
|
||||
@@ -219,56 +217,55 @@ src/language-js/printer-estree.js(400,9): error TS2769: No overload matches this
|
||||
Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
|
||||
Argument of type '{ type: string; parts: any; } | { type: string; contents: any; n: any; }' is not assignable to parameter of type 'ConcatArray<never>'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'ConcatArray<never>'.
|
||||
src/language-js/printer-estree.js(1480,28): error TS2769: No overload matches this call.
|
||||
src/language-js/printer-estree.js(1481,28): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; }>[]): (string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; })[]', gave the following error.
|
||||
Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'ConcatArray<string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; }>'.
|
||||
Type '{ type: string; parts: any; }' is missing the following properties from type 'ConcatArray<string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; }>': length, join, slice
|
||||
Overload 2 of 2, '(...items: (string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; } | ConcatArray<string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; }>)[]): (string | { ...; })[]', gave the following error.
|
||||
Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; } | ConcatArray<string | { type: string; id: any; contents: any; break: boolean; expandedStates: any; }>'.
|
||||
Type '{ type: string; parts: any; }' is missing the following properties from type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }': id, contents, break, expandedStates
|
||||
src/language-js/printer-estree.js(1913,20): error TS2345: Argument of type '" "' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1915,20): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1917,18): error TS2345: Argument of type '"while ("' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1926,9): error TS2345: Argument of type '")"' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(3472,11): error TS2769: No overload matches this call.
|
||||
src/language-js/printer-estree.js(1914,20): error TS2345: Argument of type '" "' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1916,20): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1918,18): error TS2345: Argument of type '"while ("' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(1927,9): error TS2345: Argument of type '")"' is not assignable to parameter of type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }'.
|
||||
src/language-js/printer-estree.js(3473,11): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
|
||||
Argument of type 'never[] | { type: string; parts: any; }' is not assignable to parameter of type 'ConcatArray<never>'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'ConcatArray<never>'.
|
||||
Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
|
||||
Argument of type 'never[] | { type: string; parts: any; }' is not assignable to parameter of type 'ConcatArray<never>'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'ConcatArray<never>'.
|
||||
src/language-js/printer-estree.js(3901,22): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'.
|
||||
src/language-js/printer-estree.js(3968,14): error TS2339: Property 'comments' does not exist on type 'Expression'.
|
||||
src/language-js/printer-estree.js(3902,22): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'.
|
||||
src/language-js/printer-estree.js(3969,14): error TS2339: Property 'comments' does not exist on type 'Expression'.
|
||||
Property 'comments' does not exist on type 'Identifier'.
|
||||
src/language-js/printer-estree.js(3980,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"OptionalMemberExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(3981,13): error TS2339: Property 'property' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
src/language-js/printer-estree.js(3981,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"OptionalMemberExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(3982,13): error TS2339: Property 'property' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
Property 'property' does not exist on type 'SimpleLiteral'.
|
||||
src/language-js/printer-estree.js(3981,52): error TS2339: Property 'property' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
src/language-js/printer-estree.js(3982,52): error TS2339: Property 'property' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
Property 'property' does not exist on type 'SimpleLiteral'.
|
||||
src/language-js/printer-estree.js(3986,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"OptionalMemberExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(3988,29): error TS2339: Property 'object' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
src/language-js/printer-estree.js(3987,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"OptionalMemberExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(3989,29): error TS2339: Property 'object' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
Property 'object' does not exist on type 'SimpleLiteral'.
|
||||
src/language-js/printer-estree.js(3989,22): error TS2339: Property 'comments' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
src/language-js/printer-estree.js(3990,22): error TS2339: Property 'comments' does not exist on type 'SimpleLiteral | RegExpLiteral | FunctionExpression | ArrowFunctionExpression | ArrayExpression | ObjectExpression | YieldExpression | UnaryExpression | UpdateExpression | ... 12 more ... | AwaitExpression'.
|
||||
Property 'comments' does not exist on type 'SimpleLiteral'.
|
||||
src/language-js/printer-estree.js(3995,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"Identifier"' have no overlap.
|
||||
src/language-js/printer-estree.js(3996,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"ThisExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(4200,23): error TS2532: Object is possibly 'undefined'.
|
||||
src/language-js/printer-estree.js(4201,24): error TS2532: Object is possibly 'undefined'.
|
||||
src/language-js/printer-estree.js(4557,5): error TS2345: Argument of type '"" | { type: string; parts: any; } | { type: string; contents: any; }' is not assignable to parameter of type 'string'.
|
||||
src/language-js/printer-estree.js(3996,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"Identifier"' have no overlap.
|
||||
src/language-js/printer-estree.js(3997,9): error TS2367: This condition will always return 'false' since the types '"FunctionExpression" | "ClassExpression" | "ObjectExpression" | "TaggedTemplateExpression" | "CallExpression" | "ConditionalExpression" | "UpdateExpression" | "SequenceExpression" | ... 11 more ... | "MetaProperty"' and '"ThisExpression"' have no overlap.
|
||||
src/language-js/printer-estree.js(4201,23): error TS2532: Object is possibly 'undefined'.
|
||||
src/language-js/printer-estree.js(4202,24): error TS2532: Object is possibly 'undefined'.
|
||||
src/language-js/printer-estree.js(4558,5): error TS2345: Argument of type '"" | { type: string; parts: any; } | { type: string; contents: any; }' is not assignable to parameter of type 'string'.
|
||||
Type '{ type: string; parts: any; }' is not assignable to type 'string'.
|
||||
src/language-js/printer-estree.js(4561,16): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'string'.
|
||||
src/language-js/printer-estree.js(4609,11): error TS2322: Type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }' is not assignable to type 'string'.
|
||||
src/language-js/printer-estree.js(4624,11): error TS2322: Type '{ type: string; parts: any; }' is not assignable to type 'string'.
|
||||
src/language-js/printer-estree.js(4636,9): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'string'.
|
||||
src/language-js/printer-estree.js(4923,9): error TS2554: Expected 0-2 arguments, but got 3.
|
||||
src/language-js/printer-estree.js(6130,7): error TS2769: No overload matches this call.
|
||||
src/language-js/printer-estree.js(4562,16): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'string'.
|
||||
src/language-js/printer-estree.js(4610,11): error TS2322: Type '{ type: string; id: any; contents: any; break: boolean; expandedStates: any; }' is not assignable to type 'string'.
|
||||
src/language-js/printer-estree.js(4625,11): error TS2322: Type '{ type: string; parts: any; }' is not assignable to type 'string'.
|
||||
src/language-js/printer-estree.js(4637,9): error TS2345: Argument of type '{ type: string; parts: any; }' is not assignable to parameter of type 'string'.
|
||||
src/language-js/printer-estree.js(4924,9): error TS2554: Expected 0-2 arguments, but got 3.
|
||||
src/language-js/printer-estree.js(6131,7): error TS2769: No overload matches this call.
|
||||
Overload 1 of 2, '(...items: ConcatArray<(childPath: any) => any>[]): ((childPath: any) => any)[]', gave the following error.
|
||||
Argument of type '(string | number)[]' is not assignable to parameter of type 'ConcatArray<(childPath: any) => any>'.
|
||||
Types of property 'slice' are incompatible.
|
||||
Type '(start?: number | undefined, end?: number | undefined) => (string | number)[]' is not assignable to type '(start?: number | undefined, end?: number | undefined) => ((childPath: any) => any)[]'.
|
||||
Type '(string | number)[]' is not assignable to type '((childPath: any) => any)[]'.
|
||||
Type 'string | number' is not assignable to type '(childPath: any) => any'.
|
||||
Type 'string' is not assignable to type '(childPath: any) => any'.
|
||||
The types returned by 'slice(...)' are incompatible between these types.
|
||||
Type '(string | number)[]' is not assignable to type '((childPath: any) => any)[]'.
|
||||
Type 'string | number' is not assignable to type '(childPath: any) => any'.
|
||||
Type 'string' is not assignable to type '(childPath: any) => any'.
|
||||
Overload 2 of 2, '(...items: (((childPath: any) => any) | ConcatArray<(childPath: any) => any>)[]): ((childPath: any) => any)[]', gave the following error.
|
||||
Argument of type '(string | number)[]' is not assignable to parameter of type '((childPath: any) => any) | ConcatArray<(childPath: any) => any>'.
|
||||
Type '(string | number)[]' is not assignable to type 'ConcatArray<(childPath: any) => any>'.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function inferAny( [| app |] ) {
|
||||
//// const result = app.use('hi')
|
||||
//// return result
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("app: { use: (arg0: string) => any; }");
|
||||
@@ -0,0 +1,8 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function inferVoid( [| app |] ) {
|
||||
//// app.use('hi')
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("app: { use: (arg0: string) => void; }");
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
// @noImplicitAny: true
|
||||
////function wrap( [| arr |] ) {
|
||||
//// arr.sort(function (a: number, b: number) { return a < b ? -1 : 1 })
|
||||
//// arr.other(function (a: number, b: number) { return a < b ? -1 : 1 })
|
||||
//// }
|
||||
|
||||
// https://github.com/Microsoft/TypeScript/issues/29330
|
||||
verify.rangeAfterCodeFix("arr: { sort: (arg0: (a: number, b: number) => 1 | -1) => void; }");
|
||||
verify.rangeAfterCodeFix("arr: { other: (arg0: (a: number, b: number) => 1 | -1) => void; }");
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function wrap( [| s |] ) {
|
||||
//// return s.length + s.indexOf('hi')
|
||||
//// }
|
||||
|
||||
// https://github.com/Microsoft/TypeScript/issues/29330
|
||||
verify.rangeAfterCodeFix("s: string | string[]");
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function foo([|a, m |]) {
|
||||
//// return a + m
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("a: any, m: any", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function foo([|p, a, b, c, d, e |]) {
|
||||
//// var x: string = a.pop()
|
||||
//// b.reverse()
|
||||
//// var rr: boolean[] = c.reverse()
|
||||
//// d.some(t => t > 1); // can't infer from callbacks right now
|
||||
//// var y = e.concat(12); // can't infer from overloaded functions right now
|
||||
//// return p.push(12)
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("p: number[], a: string[], b: any[], c: boolean[], d: any[], e: any[]", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
////class C {
|
||||
////
|
||||
//// p = 2
|
||||
////}
|
||||
////var c = new C()
|
||||
////function f([|x, y |]) {
|
||||
|
||||
@@ -16,7 +16,7 @@ verify.codeFix({
|
||||
index: 0,
|
||||
newFileContent:
|
||||
`/**
|
||||
* @param {(arg0: any) => void} callback
|
||||
* @param {(arg0: any) => any} callback
|
||||
*/
|
||||
function coll(callback /*, name1, name2, ... */) {
|
||||
return callback(this);
|
||||
|
||||
@@ -30,4 +30,4 @@
|
||||
//// }
|
||||
|
||||
|
||||
verify.rangeAfterCodeFix("props: { isLoading: any; update: (arg0: any) => void; }",/*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, 0);
|
||||
verify.rangeAfterCodeFix("props: { isLoading: any; update: (arg0: any) => any; }",/*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, 0);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function foo([|a, m |]) {
|
||||
//// a = 'hi'
|
||||
//// m = 1
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("a: string, m: number", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function foo([|p |]) {
|
||||
//// return p.then((x: string[]) => x[0])
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("p: Promise<string[]>", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
//// return x.y.z
|
||||
////}
|
||||
|
||||
verify.rangeAfterCodeFix("a: { b: { c: any; }; }, m: { n: () => number; }, x: { y: { z: number[]; }; }", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
verify.rangeAfterCodeFix("a: { b: { c: void; }; }, m: { n: () => number; }, x: { y: { z: number[]; }; }", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
@@ -21,7 +21,7 @@ verify.codeFix({
|
||||
index: 0,
|
||||
newFileContent:
|
||||
`/**
|
||||
* @param {{ b: { c: any; }; }} a
|
||||
* @param {{ b: { c: void; }; }} a
|
||||
* @param {{ n: () => number; }} m
|
||||
* @param {{ y: { z: number[]; }; }} x
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/// <reference path='fourslash.ts' />
|
||||
|
||||
// @noImplicitAny: true
|
||||
//// function foo([|p, a, b |]) {
|
||||
//// var x
|
||||
//// p.charAt(x)
|
||||
//// a.charAt(0)
|
||||
//// b.concat('hi')
|
||||
//// }
|
||||
|
||||
verify.rangeAfterCodeFix("p: string, a: string, b: string | any[]", /*includeWhiteSpace*/ undefined, /*errorCode*/ undefined, /*index*/0);
|
||||
|
||||
Reference in New Issue
Block a user