Automatic perf stats in baselines (#57730)

This commit is contained in:
Ryan Cavanaugh authored and GitHub committed 2024-03-15 13:31:07 -07:00
1 parent aeddd65ab8
commit 601117644e
149 files changed
+933 -1

No files matched your search

+46 -1
View File
@@ -776,12 +776,57 @@ export namespace Compiler {
function generateBaseLine(isSymbolBaseline: boolean, skipBaseline?: boolean): string | null {
let result = "";
const perfLines: string[] = [];
const prePerformanceValues = getPerformanceBaselineValues();
const gen = iterateBaseLine(isSymbolBaseline, skipBaseline);
for (const value of gen) {
const [, content] = value;
result += content;
}
return result ? (`//// [${header}] ////\r\n\r\n` + result) : null; // eslint-disable-line no-null/no-null
const postPerformanceValues = getPerformanceBaselineValues();
if (!isSymbolBaseline) {
const perfStats: [name: string, reportThreshold: number, rounding: number, beforeValue: number, afterValue: number][] = [];
perfStats.push(["Strict subtype cache", 1000, 100, prePerformanceValues.strictSubtype, postPerformanceValues.strictSubtype]);
perfStats.push(["Subtype cache", 1000, 100, prePerformanceValues.subtype, postPerformanceValues.subtype]);
perfStats.push(["Identity cache", 1000, 100, prePerformanceValues.identity, postPerformanceValues.identity]);
perfStats.push(["Assignability cache", 1000, 100, prePerformanceValues.assignability, postPerformanceValues.assignability]);
perfStats.push(["Type Count", 1000, 100, prePerformanceValues.typeCount, postPerformanceValues.typeCount]);
perfStats.push(["Instantiation count", 1500, 500, prePerformanceValues.instantiation, postPerformanceValues.instantiation]);
perfStats.push(["Symbol count", 45000, 500, prePerformanceValues.symbol, postPerformanceValues.symbol]);
if (perfStats.some(([, threshold, , , postValue]) => postValue >= threshold)) {
perfLines.push(`=== Performance Stats ===`);
for (const [name, _, rounding, preValue, postValue] of perfStats) {
const preDisplay = valueToString(preValue, rounding);
if (preDisplay !== "0") {
perfLines.push(`${name}: ${preDisplay} / ${valueToString(postValue, rounding)} (nearest ${rounding})`);
}
}
perfLines.push("");
perfLines.push("");
}
}
return result ? (`//// [${header}] ////\r\n\r\n${perfLines.join("\n")}${result}`) : null; // eslint-disable-line no-null/no-null
}
function valueToString(value: number, rounding: number) {
return (Math.round(value / rounding) * rounding).toLocaleString("en-US");
}
function getPerformanceBaselineValues() {
const checker = program.getTypeChecker();
const caches = checker.getRelationCacheSizes();
return {
strictSubtype: caches.strictSubtype,
subtype: caches.subtype,
identity: caches.identity,
assignability: caches.assignable,
typeCount: checker.getTypeCount(),
instantiation: checker.getInstantiationCount(),
symbol: checker.getSymbolCount(),
};
}
function* iterateBaseLine(isSymbolBaseline: boolean, skipBaseline?: boolean): IterableIterator<[string, string]> {
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/APILibCheck.ts] ////
=== Performance Stats ===
Identity cache: 100 / 100 (nearest 100)
Assignability cache: 9,300 / 9,300 (nearest 100)
Type Count: 22,500 / 22,500 (nearest 100)
Instantiation count: 7,000 / 7,000 (nearest 500)
Symbol count: 58,500 / 58,500 (nearest 500)
=== index.ts ===
import ts = require("typescript");
>ts : typeof ts
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/awaitedType.ts] ////
=== Performance Stats ===
Assignability cache: 200 / 200 (nearest 100)
Type Count: 900 / 900 (nearest 100)
Instantiation count: 26,000 / 26,000 (nearest 500)
Symbol count: 31,500 / 31,500 (nearest 500)
=== awaitedType.ts ===
type T1 = Awaited<number>;
>T1 : number
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/awaitedTypeStrictNull.ts] ////
=== Performance Stats ===
Identity cache: 100 / 100 (nearest 100)
Assignability cache: 200 / 200 (nearest 100)
Type Count: 700 / 700 (nearest 100)
Instantiation count: 25,500 / 25,500 (nearest 500)
Symbol count: 30,500 / 30,500 (nearest 500)
=== awaitedTypeStrictNull.ts ===
type T1 = Awaited<number>;
>T1 : number
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/callsOnComplexSignatures.tsx] ////
=== Performance Stats ===
Subtype cache: 100 / 100 (nearest 100)
Assignability cache: 2,400 / 2,400 (nearest 100)
Type Count: 8,200 / 8,200 (nearest 100)
Instantiation count: 92,500 / 92,500 (nearest 500)
Symbol count: 68,000 / 68,000 (nearest 500)
=== callsOnComplexSignatures.tsx ===
/// <reference path="react16.d.ts" />
import React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/checkJsxChildrenCanBeTupleType.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,800 / 7,800 (nearest 100)
Instantiation count: 90,000 / 90,000 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== checkJsxChildrenCanBeTupleType.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/checkJsxChildrenProperty16.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,000 / 66,000 (nearest 500)
=== checkJsxChildrenProperty16.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/checkJsxUnionSFXContextualTypeInferredCorrectly.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== checkJsxUnionSFXContextualTypeInferredCorrectly.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/circularBaseConstraint.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 600 / 600 (nearest 100)
Instantiation count: 2,000 / 2,000 (nearest 500)
Symbol count: 25,500 / 25,500 (nearest 500)
=== circularBaseConstraint.ts ===
// Repro from #54610
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/circularlySimplifyingConditionalTypesNoCrash.ts] ////
=== Performance Stats ===
Assignability cache: 300 / 300 (nearest 100)
Type Count: 600 / 600 (nearest 100)
Instantiation count: 2,000 / 2,000 (nearest 500)
Symbol count: 25,500 / 25,500 (nearest 500)
=== circularlySimplifyingConditionalTypesNoCrash.ts ===
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
>Omit : Omit<T, K>
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/complexRecursiveCollections.ts] ////
=== Performance Stats ===
Identity cache: 600 / 600 (nearest 100)
Assignability cache: 7,600 / 7,600 (nearest 100)
Type Count: 53,300 / 53,300 (nearest 100)
Instantiation count: 178,000 / 178,000 (nearest 500)
Symbol count: 134,500 / 134,500 (nearest 500)
=== complex.ts ===
interface Ara<T> { t: T }
>t : T
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.ts] ////
=== Performance Stats ===
Strict subtype cache: 2,000 / 2,000 (nearest 100)
Assignability cache: 16,000 / 16,000 (nearest 100)
Type Count: 14,200 / 14,200 (nearest 100)
Instantiation count: 84,000 / 84,000 (nearest 500)
Symbol count: 33,500 / 33,500 (nearest 500)
=== conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.ts ===
type BigUnion =
>BigUnion : { name: '0'; children: BigUnion[]; } | { name: '1'; children: BigUnion[]; } | { name: '2'; children: BigUnion[]; } | { name: '3'; children: BigUnion[]; } | { name: '4'; children: BigUnion[]; } | { name: '5'; children: BigUnion[]; } | { name: '6'; children: BigUnion[]; } | { name: '7'; children: BigUnion[]; } | { name: '8'; children: BigUnion[]; } | { name: '9'; children: BigUnion[]; } | { name: '10'; children: BigUnion[]; } | { name: '11'; children: BigUnion[]; } | { name: '12'; children: BigUnion[]; } | { name: '13'; children: BigUnion[]; } | { name: '14'; children: BigUnion[]; } | { name: '15'; children: BigUnion[]; } | { name: '16'; children: BigUnion[]; } | { name: '17'; children: BigUnion[]; } | { name: '18'; children: BigUnion[]; } | { name: '19'; children: BigUnion[]; } | { name: '20'; children: BigUnion[]; } | { name: '21'; children: BigUnion[]; } | { name: '22'; children: BigUnion[]; } | { name: '23'; children: BigUnion[]; } | { name: '24'; children: BigUnion[]; } | { name: '25'; children: BigUnion[]; } | { name: '26'; children: BigUnion[]; } | { name: '27'; children: BigUnion[]; } | { name: '28'; children: BigUnion[]; } | { name: '29'; children: BigUnion[]; } | { name: '30'; children: BigUnion[]; } | { name: '31'; children: BigUnion[]; } | { name: '32'; children: BigUnion[]; } | { name: '33'; children: BigUnion[]; } | { name: '34'; children: BigUnion[]; } | { name: '35'; children: BigUnion[]; } | { name: '36'; children: BigUnion[]; } | { name: '37'; children: BigUnion[]; } | { name: '38'; children: BigUnion[]; } | { name: '39'; children: BigUnion[]; } | { name: '40'; children: BigUnion[]; } | { name: '41'; children: BigUnion[]; } | { name: '42'; children: BigUnion[]; } | { name: '43'; children: BigUnion[]; } | { name: '44'; children: BigUnion[]; } | { name: '45'; children: BigUnion[]; } | { name: '46'; children: BigUnion[]; } | { name: '47'; children: BigUnion[]; } | { name: '48'; children: BigUnion[]; } | { name: '49'; children: BigUnion[]; } | { name: '50'; children: BigUnion[]; } | { name: '51'; children: BigUnion[]; } | { name: '52'; children: BigUnion[]; } | { name: '53'; children: BigUnion[]; } | { name: '54'; children: BigUnion[]; } | { name: '55'; children: BigUnion[]; } | { name: '56'; children: BigUnion[]; } | { name: '57'; children: BigUnion[]; } | { name: '58'; children: BigUnion[]; } | { name: '59'; children: BigUnion[]; } | { name: '60'; children: BigUnion[]; } | { name: '61'; children: BigUnion[]; } | { name: '62'; children: BigUnion[]; } | { name: '63'; children: BigUnion[]; } | { name: '64'; children: BigUnion[]; } | { name: '65'; children: BigUnion[]; } | { name: '66'; children: BigUnion[]; } | { name: '67'; children: BigUnion[]; } | { name: '68'; children: BigUnion[]; } | { name: '69'; children: BigUnion[]; } | { name: '70'; children: BigUnion[]; } | { name: '71'; children: BigUnion[]; } | { name: '72'; children: BigUnion[]; } | { name: '73'; children: BigUnion[]; } | { name: '74'; children: BigUnion[]; } | { name: '75'; children: BigUnion[]; } | { name: '76'; children: BigUnion[]; } | { name: '77'; children: BigUnion[]; } | { name: '78'; children: BigUnion[]; } | { name: '79'; children: BigUnion[]; } | { name: '80'; children: BigUnion[]; } | { name: '81'; children: BigUnion[]; } | { name: '82'; children: BigUnion[]; } | { name: '83'; children: BigUnion[]; } | { name: '84'; children: BigUnion[]; } | { name: '85'; children: BigUnion[]; } | { name: '86'; children: BigUnion[]; } | { name: '87'; children: BigUnion[]; } | { name: '88'; children: BigUnion[]; } | { name: '89'; children: BigUnion[]; } | { name: '90'; children: BigUnion[]; } | { name: '91'; children: BigUnion[]; } | { name: '92'; children: BigUnion[]; } | { name: '93'; children: BigUnion[]; } | { name: '94'; children: BigUnion[]; } | { name: '95'; children: BigUnion[]; } | { name: '96'; children: BigUnion[]; } | { name: '97'; children: BigUnion[]; } | { name: '98'; children: BigUnion[]; } | { name: '99'; children: BigUnion[]; } | { name: '100'; children: BigUnion[]; } | { name: '101'; children: BigUnion[]; } | { name: '102'; children: BigUnion[]; } | { name: '103'; children: BigUnion[]; } | { name: '104'; children: BigUnion[]; } | { name: '105'; children: BigUnion[]; } | { name: '106'; children: BigUnion[]; } | { name: '107'; children: BigUnion[]; } | { name: '108'; children: BigUnion[]; } | { name: '109'; children: BigUnion[]; } | { name: '110'; children: BigUnion[]; } | { name: '111'; children: BigUnion[]; } | { name: '112'; children: BigUnion[]; } | { name: '113'; children: BigUnion[]; } | { name: '114'; children: BigUnion[]; } | { name: '115'; children: BigUnion[]; } | { name: '116'; children: BigUnion[]; } | { name: '117'; children: BigUnion[]; } | { name: '118'; children: BigUnion[]; } | { name: '119'; children: BigUnion[]; } | { name: '120'; children: BigUnion[]; } | { name: '121'; children: BigUnion[]; } | { name: '122'; children: BigUnion[]; } | { name: '123'; children: BigUnion[]; } | { name: '124'Line truncated
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/conditionalTypeDoesntSpinForever.ts] ////
=== Performance Stats ===
Assignability cache: 600 / 600 (nearest 100)
Type Count: 1,400 / 1,600 (nearest 100)
Instantiation count: 3,500 / 4,000 (nearest 500)
Symbol count: 28,000 / 28,000 (nearest 500)
=== conditionalTypeDoesntSpinForever.ts ===
// A *self-contained* demonstration of the problem follows...
// Test this by running `tsc --target es6` on the command-line, rather than through another build tool such as Gulp, Webpack, etc.
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/conditionalTypeVarianceBigArrayConstraintsPerformance.ts] ////
=== Performance Stats ===
Assignability cache: 1,300 / 1,300 (nearest 100)
Type Count: 5,900 / 5,900 (nearest 100)
Instantiation count: 76,500 / 76,500 (nearest 500)
Symbol count: 67,500 / 67,500 (nearest 500)
=== conditionalTypeVarianceBigArrayConstraintsPerformance.ts ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/conditional/conditionalTypes1.ts] ////
=== Performance Stats ===
Assignability cache: 300 / 300 (nearest 100)
Type Count: 900 / 900 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 26,000 / 26,500 (nearest 500)
=== conditionalTypes1.ts ===
type T00 = Exclude<"a" | "b" | "c" | "d", "a" | "c" | "f">; // "b" | "d"
>T00 : "b" | "d"
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/contextuallyTypedJsxChildren.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,800 / 7,800 (nearest 100)
Instantiation count: 90,000 / 90,000 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== contextuallyTypedJsxChildren.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/controlFlow/controlFlowOptionalChain3.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== controlFlowOptionalChain3.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/correlatedUnions.ts] ////
=== Performance Stats ===
Assignability cache: 500 / 500 (nearest 100)
Type Count: 1,000 / 1,000 (nearest 100)
Instantiation count: 1,000 / 1,000 (nearest 500)
Symbol count: 26,500 / 26,500 (nearest 500)
=== correlatedUnions.ts ===
// Various repros from #30581
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/declarationEmitRecursiveConditionalAliasPreserved.ts] ////
=== Performance Stats ===
Assignability cache: 1,900 / 1,900 (nearest 100)
Type Count: 14,200 / 14,200 (nearest 100)
Instantiation count: 57,000 / 57,000 (nearest 500)
Symbol count: 49,000 / 49,000 (nearest 500)
=== input.d.ts ===
type _BuildPowersOf2LengthArrays<
>_BuildPowersOf2LengthArrays : _BuildPowersOf2LengthArrays<Length, AccumulatedArray>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 500 / 1,200 (nearest 100)
Instantiation count: 500 / 500 (nearest 500)
Symbol count: 27,000 / 28,000 (nearest 500)
=== declarationsAndAssignments.ts ===
function f0() {
>f0 : () => void
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/deepComparisons.ts] ////
=== Performance Stats ===
Assignability cache: 300 / 300 (nearest 100)
Type Count: 2,000 / 2,100 (nearest 100)
Instantiation count: 3,500 / 3,500 (nearest 500)
Symbol count: 26,500 / 27,000 (nearest 500)
=== deepComparisons.ts ===
function f1<T, K1 extends keyof T, K2 extends keyof T[K1]>() {
>f1 : <T, K1 extends keyof T, K2 extends keyof T[K1]>() => void
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/deeplyNestedMappedTypes.ts] ////
=== Performance Stats ===
Assignability cache: 500 / 600 (nearest 100)
Type Count: 1,500 / 1,500 (nearest 100)
Instantiation count: 15,500 / 15,500 (nearest 500)
Symbol count: 26,000 / 26,000 (nearest 500)
=== deeplyNestedMappedTypes.ts ===
// Simplified repro from #55535
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/controlFlow/dependentDestructuredVariables.ts] ////
=== Performance Stats ===
Assignability cache: 300 / 300 (nearest 100)
Type Count: 2,200 / 2,300 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 34,000 / 34,000 (nearest 500)
=== dependentDestructuredVariables.ts ===
type Action =
>Action : { kind: 'A'; payload: number; } | { kind: 'B'; payload: string; }
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/members/duplicateNumericIndexers.ts] ////
=== Performance Stats ===
Assignability cache: 3,600 / 3,600 (nearest 100)
Type Count: 12,600 / 12,600 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 29,000 / 29,000 (nearest 500)
=== duplicateNumericIndexers.ts ===
// it is an error to have duplicate index signatures of the same kind in a type
@@ -1,5 +1,9 @@
//// [tests/cases/compiler/enumLiteralsSubtypeReduction.ts] ////
=== Performance Stats ===
Type Count: 3,200 / 3,200 (nearest 100)
Symbol count: 26,500 / 26,500 (nearest 500)
=== enumLiteralsSubtypeReduction.ts ===
enum E {
>E : E
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/errorInfoForRelatedIndexTypesNoConstraintElaboration.ts] ////
=== Performance Stats ===
Assignability cache: 2,300 / 2,300 (nearest 100)
Type Count: 10,100 / 10,100 (nearest 100)
Instantiation count: 229,000 / 229,000 (nearest 500)
Symbol count: 105,500 / 105,500 (nearest 500)
=== errorInfoForRelatedIndexTypesNoConstraintElaboration.ts ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/excessiveStackDepthFlatArray.ts] ////
=== Performance Stats ===
Assignability cache: 200 / 200 (nearest 100)
Type Count: 900 / 900 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 28,000 / 28,000 (nearest 500)
=== index.tsx ===
interface MiddlewareArray<T> extends Array<T> {}
declare function configureStore(options: { middleware: MiddlewareArray<any> }): void;
@@ -1,5 +1,10 @@
//// [tests/cases/compiler/excessivelyLargeTupleSpread.ts] ////
=== Performance Stats ===
Type Count: 33,100 / 33,100 (nearest 100)
Instantiation count: 49,500 / 49,500 (nearest 500)
Symbol count: 108,000 / 108,000 (nearest 500)
=== excessivelyLargeTupleSpread.ts ===
// #41771
@@ -1,5 +1,9 @@
//// [tests/cases/conformance/fixSignatureCaching.ts] ////
=== Performance Stats ===
Type Count: 1,300 / 1,300 (nearest 100)
Symbol count: 26,500 / 27,000 (nearest 500)
=== fixSignatureCaching.ts ===
// Repro from #10697
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/flatArrayNoExcessiveStackDepth.ts] ////
=== Performance Stats ===
Assignability cache: 200 / 200 (nearest 100)
Type Count: 1,100 / 1,100 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 31,000 / 31,000 (nearest 500)
=== flatArrayNoExcessiveStackDepth.ts ===
// Repro from #43493
@@ -1,5 +1,10 @@
//// [tests/cases/conformance/expressions/contextualTyping/generatedContextualTyping.ts] ////
=== Performance Stats ===
Assignability cache: 400 / 400 (nearest 100)
Type Count: 1,300 / 1,500 (nearest 100)
Symbol count: 27,500 / 27,500 (nearest 500)
=== generatedContextualTyping.ts ===
class Base { private p; }
>Base : Base
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/genericFunctionInference1.ts] ////
=== Performance Stats ===
Subtype cache: 100 / 100 (nearest 100)
Assignability cache: 200 / 200 (nearest 100)
Type Count: 1,200 / 1,300 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 32,000 / 32,000 (nearest 500)
=== genericFunctionInference1.ts ===
declare function pipe<A extends any[], B>(ab: (...args: A) => B): (...args: A) => B;
>pipe : { <A extends any[], B>(ab: (...args: A) => B): (...args: A) => B; <A_1 extends any[], B_1, C>(ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; <A_2 extends any[], B_2, C_1, D>(ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; }
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/genericInferenceDefaultTypeParameterJsxReact.tsx] ////
=== Performance Stats ===
Assignability cache: 4,000 / 4,000 (nearest 100)
Type Count: 10,300 / 10,300 (nearest 100)
Instantiation count: 221,500 / 221,500 (nearest 500)
Symbol count: 88,000 / 88,000 (nearest 500)
=== genericInferenceDefaultTypeParameterJsxReact.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,10 @@
//// [tests/cases/compiler/genericsManyTypeParameters.ts] ////
=== Performance Stats ===
Strict subtype cache: 11,700 / 11,700 (nearest 100)
Type Count: 200 / 200 (nearest 100)
Symbol count: 25,500 / 25,500 (nearest 500)
=== genericsManyTypeParameters.ts ===
function Foo<
>Foo : <a1, a21, a31, a41, a51, a61, a119, a22, a32, a42, a52, a62, a219, a23, a33, a43, a53, a63, a319, a24, a34, a44, a54, a64, a419, a25, a35, a45, a55, a65, a519, a26, a36, a46, a56, a66, a619, a27, a37, a47, a57, a67, a71, a28, a38, a48, a58, a68, a81, a29, a39, a49, a59, a69, a91, a210, a310, a410, a510, a610, a111, a211, a311, a411, a511, a611, a112, a212, a312, a412, a512, a612, a113, a213, a313, a413, a513, a613, a114, a214, a314, a414, a514, a614, a115, a215, a315, a415, a515, a615, a116, a216, a316, a416, a516, a616, a117, a217, a317, a417, a517, a617, a118, a218, a318, a418, a518, a618>(x1: a1, y1: a21, z1: a31, a1: a41, b1: a51, c1: a61, x2: a119, y2: a22, z2: a32, a2: a42, b2: a52, c2: a62, x3: a219, y3: a23, z3: a33, a3: a43, b3: a53, c3: a63, x4: a319, y4: a24, z4: a34, a4: a44, b4: a54, c4: a64, x5: a419, y5: a25, z5: a35, a5: a45, b5: a55, c5: a65, x6: a519, y6: a26, z6: a36, a6: a46, b6: a56, c6: a66, x7: a619, y7: a27, z7: a37, a7: a47, b7: a57, c7: a67, x8: a71, y8: a28, z8: a38, a8: a48, b8: a58, c8: a68, x9: a81, y9: a29, z9: a39, a9: a49, b9: a59, c9: a69, x10: a91, y12: a210, z10: a310, a10: a410, b10: a510, c10: a610, x11: a111, y13: a211, z11: a311, a11: a411, b11: a511, c11: a611, x12: a112, y14: a212, z12: a312, a12: a412, b12: a512, c12: a612, x13: a113, y15: a213, z13: a313, a13: a413, b13: a513, c13: a613, x14: a114, y16: a214, z14: a314, a14: a414, b14: a514, c14: a614, x15: a115, y17: a215, z15: a315, a15: a415, b15: a515, c15: a615, x16: a116, y18: a216, z16: a316, a16: a416, b16: a516, c16: a616, x17: a117, y19: a217, z17: a317, a17: a417, b17: a517, c17: a617, x18: a118, y10: a218, z18: a318, a18: a418, b18: a518, c18: a618) => (a1 | a21 | a31 | a41 | a51 | a61 | a119 | a22 | a32 | a42 | a52 | a62 | a219 | a23 | a33 | a43 | a53 | a63 | a319 | a24 | a34 | a44 | a54 | a64 | a419 | a25 | a35 | a45 | a55 | a65 | a519 | a26 | a36 | a46 | a56 | a66 | a619 | a27 | a37 | a47 | a57 | a67 | a71 | a28 | a38 | a48 | a58 | a68 | a81 | a29 | a39 | a49 | a59 | a69 | a91 | a210 | a310 | a410 | a510 | a610 | a111 | a211 | a311 | a411 | a511 | a611 | a112 | a212 | a312 | a412 | a512 | a612 | a113 | a213 | a313 | a413 | a513 | a613 | a114 | a214 | a314 | a414 | a514 | a614 | a115 | a215 | a315 | a415 | a515 | a615 | a116 | a216 | a316 | a416 | a516 | a616 | a117 | a217 | a317 | a417 | a517 | a617 | a118 | a218 | a318 | a418 | a518 | a618)[]
@@ -1,5 +1,10 @@
//// [tests/cases/compiler/hugeDeclarationOutputGetsTruncatedWithError.ts] ////
=== Performance Stats ===
Type Count: 101,100 / 101,100 (nearest 100)
Instantiation count: 400,000 / 400,000 (nearest 500)
Symbol count: 127,000 / 127,000 (nearest 500)
=== hugeDeclarationOutputGetsTruncatedWithError.ts ===
type props = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
>props : "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/ignoredJsxAttributes.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,000 / 66,000 (nearest 500)
=== ignoredJsxAttributes.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,10 @@
//// [tests/cases/compiler/inKeywordTypeguard.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 1,200 / 1,300 (nearest 100)
Symbol count: 27,500 / 27,500 (nearest 500)
=== inKeywordTypeguard.ts ===
class A { a: string; }
>A : A
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/infiniteConstraints.ts] ////
=== Performance Stats ===
Assignability cache: 200 / 200 (nearest 100)
Type Count: 1,000 / 1,000 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 25,500 / 26,000 (nearest 500)
=== infiniteConstraints.ts ===
// Both of the following types trigger the recursion limiter in getImmediateBaseConstraint
@@ -1,5 +1,13 @@
//// [tests/cases/compiler/intersectionsOfLargeUnions.ts] ////
=== Performance Stats ===
Strict subtype cache: 1,000 / 1,000 (nearest 100)
Subtype cache: 1,300 / 1,300 (nearest 100)
Assignability cache: 1,200 / 1,200 (nearest 100)
Type Count: 3,400 / 3,400 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 27,000 / 27,000 (nearest 500)
=== intersectionsOfLargeUnions.ts ===
// Repro from #23977
@@ -1,5 +1,13 @@
//// [tests/cases/compiler/intersectionsOfLargeUnions2.ts] ////
=== Performance Stats ===
Strict subtype cache: 1,000 / 1,000 (nearest 100)
Subtype cache: 1,300 / 1,300 (nearest 100)
Assignability cache: 1,200 / 1,200 (nearest 100)
Type Count: 3,400 / 3,400 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 27,000 / 27,000 (nearest 500)
=== intersectionsOfLargeUnions2.ts ===
// Repro from #24233
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/typeRelationships/typeInference/intraExpressionInferencesJsx.tsx] ////
=== Performance Stats ===
Assignability cache: 2,300 / 2,300 (nearest 100)
Type Count: 7,800 / 7,800 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== intraExpressionInferencesJsx.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/mapped/isomorphicMappedTypeInference.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 600 / 700 (nearest 100)
Instantiation count: 2,000 / 2,000 (nearest 500)
Symbol count: 26,000 / 26,000 (nearest 500)
=== isomorphicMappedTypeInference.ts ===
type Box<T> = {
>Box : Box<T>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsdoc/declarations/jsDeclarationsNonIdentifierInferredNames.ts] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 6,800 / 6,800 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 68,000 / 68,000 (nearest 500)
=== jsDeclarationsNonIdentifierInferredNames.jsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsdoc/declarations/jsDeclarationsReactComponents.ts] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,700 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsDeclarationsReactComponents1.jsx ===
/// <reference path="react16.d.ts" />
import React from "react";
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/jsxCallElaborationCheckNoCrash1.tsx] ////
=== Performance Stats ===
Subtype cache: 100 / 100 (nearest 100)
Assignability cache: 3,600 / 3,600 (nearest 100)
Type Count: 7,800 / 7,800 (nearest 100)
Instantiation count: 75,500 / 75,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxCallElaborationCheckNoCrash1.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxChildWrongType.tsx] ////
=== Performance Stats ===
Assignability cache: 400 / 400 (nearest 100)
Type Count: 1,200 / 1,200 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 33,000 / 33,000 (nearest 500)
=== index.tsx ===
/// <reference path="react18/react18.d.ts" />
/// <reference path="react18/global.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxChildrenIndividualErrorElaborations.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,700 / 7,700 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== index.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxChildrenWrongType.tsx] ////
=== Performance Stats ===
Assignability cache: 400 / 400 (nearest 100)
Type Count: 1,400 / 1,400 (nearest 100)
Instantiation count: 1,500 / 1,500 (nearest 500)
Symbol count: 31,500 / 31,500 (nearest 500)
=== other.tsx ===
/// <reference path="react18/react18.d.ts" />
/// <reference path="react18/global.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxComplexSignatureHasApplicabilityError.tsx] ////
=== Performance Stats ===
Assignability cache: 500 / 800 (nearest 100)
Type Count: 1,100 / 1,200 (nearest 100)
Instantiation count: 2,000 / 2,500 (nearest 500)
Symbol count: 29,000 / 29,000 (nearest 500)
=== jsxComplexSignatureHasApplicabilityError.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxDeclarationsWithEsModuleInteropNoCrash.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxDeclarationsWithEsModuleInteropNoCrash.jsx ===
/// <reference path="react16.d.ts" />
import PropTypes from 'prop-types';
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxElementType.tsx] ////
=== Performance Stats ===
Assignability cache: 2,400 / 2,400 (nearest 100)
Type Count: 8,000 / 8,000 (nearest 100)
Instantiation count: 90,500 / 91,000 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== jsxElementType.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxElementTypeLiteral.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxElementTypeLiteral.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxElementTypeLiteralWithGeneric.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,800 / 7,800 (nearest 100)
Instantiation count: 91,500 / 91,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxElementTypeLiteralWithGeneric.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxEmptyExpressionNotCountedAsChild.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxEmptyExpressionNotCountedAsChild.tsx ===
/// <reference path="react16.d.ts" />
import * as React from 'react'
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxEmptyExpressionNotCountedAsChild.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxEmptyExpressionNotCountedAsChild.tsx ===
/// <reference path="react16.d.ts" />
import * as React from 'react'
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxEmptyExpressionNotCountedAsChild.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxEmptyExpressionNotCountedAsChild.tsx ===
/// <reference path="react16.d.ts" />
import * as React from 'react'
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxExcessPropsAndAssignability.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,700 / 7,700 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,000 / 66,000 (nearest 500)
=== jsxExcessPropsAndAssignability.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxFragmentFactoryNoUnusedLocals.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 6,700 / 6,700 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 67,000 / 67,500 (nearest 500)
=== jsxFragmentFactoryNoUnusedLocals.tsx ===
/// <reference path="react16.d.ts" />
import { Fragment, createElement } from "react"
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxGenericComponentWithSpreadingResultOfGenericFunction.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,000 / 66,000 (nearest 500)
=== jsxGenericComponentWithSpreadingResultOfGenericFunction.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxImportForSideEffectsNonExtantNoError.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 6,700 / 6,700 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxImportForSideEffectsNonExtantNoError.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxInferenceProducesLiteralAsExpected.tsx] ////
=== Performance Stats ===
Assignability cache: 600 / 600 (nearest 100)
Type Count: 2,600 / 2,600 (nearest 100)
Instantiation count: 2,000 / 2,000 (nearest 500)
Symbol count: 26,500 / 26,500 (nearest 500)
=== jsxInferenceProducesLiteralAsExpected.tsx ===
import React = require("react");
>React : typeof React
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxIntrinsicElementsCompatability.tsx] ////
=== Performance Stats ===
Assignability cache: 2,300 / 2,300 (nearest 100)
Type Count: 7,700 / 7,700 (nearest 100)
Instantiation count: 94,000 / 94,000 (nearest 500)
Symbol count: 68,000 / 68,000 (nearest 500)
=== jsxIntrinsicElementsCompatability.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxIntrinsicElementsTypeArgumentErrors.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 6,700 / 6,700 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxIntrinsicElementsTypeArgumentErrors.tsx ===
/// <reference path="react16.d.ts" />
import * as React from "react";
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxIntrinsicUnions.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 6,700 / 6,700 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxIntrinsicUnions.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 6,800 / 6,800 (nearest 100)
Instantiation count: 73,000 / 73,000 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformChildren.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformChildren.tsx ===
/// <reference path="react16.d.ts" />
const a = <div>text</div>;
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformChildren.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformChildren.tsx ===
/// <reference path="react16.d.ts" />
const a = <div>text</div>;
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformCustomImport.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== jsxJsxsCjsTransformCustomImport.tsx ===
/// <reference path="react16.d.ts" />
const a = <>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformCustomImport.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== jsxJsxsCjsTransformCustomImport.tsx ===
/// <reference path="react16.d.ts" />
const a = <>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformCustomImportPragma.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== react.tsx ===
/// <reference path="react16.d.ts" />
/* @jsxImportSource react */
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformCustomImportPragma.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== react.tsx ===
/// <reference path="react16.d.ts" />
/* @jsxImportSource react */
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyProp.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformKeyProp.tsx ===
/// <reference path="react16.d.ts" />
const props = { answer: 42 }
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyProp.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformKeyProp.tsx ===
/// <reference path="react16.d.ts" />
const props = { answer: 42 }
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyPropCustomImport.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformKeyPropCustomImport.tsx ===
/// <reference path="react16.d.ts" />
const props = { answer: 42 }
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyPropCustomImport.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformKeyPropCustomImport.tsx ===
/// <reference path="react16.d.ts" />
const props = { answer: 42 }
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyPropCustomImportPragma.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== react.tsx ===
/// <reference path="react16.d.ts" />
/* @jsxImportSource react */
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformKeyPropCustomImportPragma.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== react.tsx ===
/// <reference path="react16.d.ts" />
/* @jsxImportSource react */
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformNestedSelfClosingChild.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,700 / 7,700 (nearest 100)
Instantiation count: 90,000 / 90,000 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== jsxJsxsCjsTransformNestedSelfClosingChild.tsx ===
/// <reference path="react16.d.ts" />
import type * as React from 'react';
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformNestedSelfClosingChild.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,700 / 7,700 (nearest 100)
Instantiation count: 90,000 / 90,000 (nearest 500)
Symbol count: 67,000 / 67,000 (nearest 500)
=== jsxJsxsCjsTransformNestedSelfClosingChild.tsx ===
/// <reference path="react16.d.ts" />
import type * as React from 'react';
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNames.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformSubstitutesNames.tsx ===
/// <reference path="react16.d.ts" />
const a = <div></div>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNames.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformSubstitutesNames.tsx ===
/// <reference path="react16.d.ts" />
const a = <div></div>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNamesFragment.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformSubstitutesNamesFragment.tsx ===
/// <reference path="react16.d.ts" />
const a = <>
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/jsx/jsxs/jsxJsxsCjsTransformSubstitutesNamesFragment.tsx] ////
=== Performance Stats ===
Assignability cache: 2,100 / 2,100 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxJsxsCjsTransformSubstitutesNamesFragment.tsx ===
/// <reference path="react16.d.ts" />
const a = <>
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxNamespacedNameNotComparedToNonMatchingIndexSignature.tsx] ////
=== Performance Stats ===
Assignability cache: 2,700 / 2,700 (nearest 100)
Type Count: 6,900 / 6,900 (nearest 100)
Instantiation count: 74,000 / 74,000 (nearest 500)
Symbol count: 70,000 / 70,000 (nearest 500)
=== jsxNamespacedNameNotComparedToNonMatchingIndexSignature.tsx ===
/// <reference path="react16.d.ts" />
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/jsxPartialSpread.tsx] ////
=== Performance Stats ===
Assignability cache: 2,200 / 2,200 (nearest 100)
Type Count: 7,600 / 7,600 (nearest 100)
Instantiation count: 89,500 / 89,500 (nearest 500)
Symbol count: 66,500 / 66,500 (nearest 500)
=== jsxPartialSpread.tsx ===
/// <reference path="react16.d.ts" />
const Select = (p: {value?: unknown}) => <p></p>;
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/keyof/keyofAndIndexedAccess.ts] ////
=== Performance Stats ===
Assignability cache: 300 / 300 (nearest 100)
Type Count: 1,200 / 1,400 (nearest 100)
Instantiation count: 1,000 / 1,000 (nearest 500)
Symbol count: 27,000 / 27,000 (nearest 500)
=== keyofAndIndexedAccess.ts ===
class Shape {
>Shape : Shape
@@ -1,5 +1,10 @@
//// [tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 1,500 / 1,500 (nearest 100)
Symbol count: 30,000 / 30,000 (nearest 500)
=== keyofAndIndexedAccess2.ts ===
function f1(obj: { a: number, b: 0 | 1, c: string }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') {
>f1 : (obj: { a: number; b: 0 | 1; c: string;}, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') => void
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/largeTupleTypes.ts] ////
=== Performance Stats ===
Assignability cache: 1,600 / 1,600 (nearest 100)
Type Count: 18,600 / 18,600 (nearest 100)
Instantiation count: 46,000 / 46,000 (nearest 500)
Symbol count: 46,000 / 46,000 (nearest 500)
=== largeTupleTypes.ts ===
// Repro from #54491
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/libCompileChecks.ts] ////
=== Performance Stats ===
Assignability cache: 3,700 / 3,700 (nearest 100)
Type Count: 14,200 / 14,200 (nearest 100)
Instantiation count: 3,500 / 3,500 (nearest 500)
Symbol count: 33,500 / 33,500 (nearest 500)
=== libCompileChecks.ts ===
// This test is effectively the 'lib check' for all our .d.ts files because we use skipLibCheck
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/mapped/mappedTypeAsClauses.ts] ////
=== Performance Stats ===
Assignability cache: 500 / 600 (nearest 100)
Type Count: 800 / 1,100 (nearest 100)
Instantiation count: 1,000 / 2,000 (nearest 500)
Symbol count: 26,000 / 26,000 (nearest 500)
=== mappedTypeAsClauses.ts ===
// Mapped type 'as N' clauses
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/mappedTypeRecursiveInference.ts] ////
=== Performance Stats ===
Strict subtype cache: 300 / 300 (nearest 100)
Assignability cache: 5,000 / 5,000 (nearest 100)
Type Count: 15,000 / 15,000 (nearest 100)
Instantiation count: 486,000 / 503,500 (nearest 500)
Symbol count: 174,500 / 177,000 (nearest 500)
=== mappedTypeRecursiveInference.ts ===
interface A { a: A }
>a : A
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/directives/multiline.tsx] ////
=== Performance Stats ===
Assignability cache: 700 / 700 (nearest 100)
Type Count: 2,600 / 2,600 (nearest 100)
Instantiation count: 2,000 / 2,000 (nearest 500)
Symbol count: 27,000 / 27,000 (nearest 500)
=== a.ts ===
export const texts: string[] = [];
>texts : string[]
@@ -1,5 +1,9 @@
//// [tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts] ////
=== Performance Stats ===
Type Count: 1,200 / 1,200 (nearest 100)
Symbol count: 25,500 / 25,500 (nearest 500)
=== nonnullAssertionPropegatesContextualType.ts ===
let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element
>rect2 : SVGRectElement
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/members/objectTypeHidingMembersOfExtendedObject.ts] ////
=== Performance Stats ===
Assignability cache: 3,600 / 3,600 (nearest 100)
Type Count: 12,600 / 12,600 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 29,000 / 29,000 (nearest 500)
=== objectTypeHidingMembersOfExtendedObject.ts ===
class A {
>A : A
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/types/members/objectTypeWithStringIndexerHidingObjectIndexer.ts] ////
=== Performance Stats ===
Assignability cache: 3,600 / 3,600 (nearest 100)
Type Count: 12,600 / 12,600 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 29,000 / 29,000 (nearest 500)
=== objectTypeWithStringIndexerHidingObjectIndexer.ts ===
// object types can define string indexers that are more specific than the default 'any' that would be returned
// no errors expected below
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts] ////
=== Performance Stats ===
Assignability cache: 200 / 200 (nearest 100)
Type Count: 1,300 / 1,300 (nearest 100)
Instantiation count: 500 / 500 (nearest 500)
Symbol count: 28,000 / 28,000 (nearest 500)
=== parserRealSource11.ts ===
// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0.
// See LICENSE.txt in the project root for complete license information.
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/parser/ecmascript5/StrictMode/parserStrictMode8.ts] ////
=== Performance Stats ===
Assignability cache: 3,600 / 3,600 (nearest 100)
Type Count: 12,600 / 12,600 (nearest 100)
Instantiation count: 2,500 / 2,500 (nearest 500)
Symbol count: 29,000 / 29,000 (nearest 500)
=== parserStrictMode8.ts ===
"use strict";
>"use strict" : "use strict"
@@ -1,5 +1,11 @@
//// [tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 1,000 / 1,100 (nearest 100)
Instantiation count: 500 / 500 (nearest 500)
Symbol count: 5,000 / 5,000 (nearest 500)
=== parserharness.ts ===
//
// Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1,5 +1,11 @@
//// [tests/cases/compiler/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.ts] ////
=== Performance Stats ===
Assignability cache: 100 / 100 (nearest 100)
Type Count: 5,800 / 5,800 (nearest 100)
Instantiation count: 17,000 / 17,000 (nearest 500)
Symbol count: 28,500 / 28,500 (nearest 500)
=== performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.ts ===
export declare type ThenArg<T> = T extends any ? any : T extends PromiseLike<infer U> ? U : T;
>ThenArg : ThenArg<T>
@@ -1,5 +1,12 @@
//// [tests/cases/compiler/promisePermutations.ts] ////
=== Performance Stats ===
Subtype cache: 400 / 400 (nearest 100)
Assignability cache: 200 / 200 (nearest 100)
Type Count: 1,700 / 1,800 (nearest 100)
Instantiation count: 6,500 / 6,500 (nearest 500)
Symbol count: 28,000 / 28,000 (nearest 500)
=== promisePermutations.ts ===
interface Promise<T> {
then<U>(success?: (value: T) => Promise<U>, error?: (error: any) => Promise<U>, progress?: (progress: any) => void): Promise<U>;
Loaded 100 of 149 files, more files were not shown because too many files have changed in this diff. Show more