Skip to content

Commit 9e20e03

Browse files
authored
Clear out checker-level stacks on pop (#62016)
1 parent 87740bc commit 9e20e03

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/compiler/checker.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32741,6 +32741,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3274132741

3274232742
function popContextualType() {
3274332743
contextualTypeCount--;
32744+
// Clear out the popped element's referenced objects.
32745+
contextualTypeNodes[contextualTypeCount] = undefined!;
32746+
contextualTypes[contextualTypeCount] = undefined;
32747+
contextualIsCache[contextualTypeCount] = undefined!;
3274432748
}
3274532749

3274632750
function findContextualNode(node: Node, includeCaches: boolean) {
@@ -32760,6 +32764,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3276032764

3276132765
function popInferenceContext() {
3276232766
inferenceContextCount--;
32767+
inferenceContextNodes[inferenceContextCount] = undefined!;
32768+
inferenceContexts[inferenceContextCount] = undefined;
3276332769
}
3276432770

3276532771
function getInferenceContext(node: Node) {
@@ -32772,12 +32778,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3277232778

3277332779
function pushActiveMapper(mapper: TypeMapper) {
3277432780
activeTypeMappers[activeTypeMappersCount] = mapper;
32775-
activeTypeMappersCaches[activeTypeMappersCount] = new Map();
32781+
activeTypeMappersCaches[activeTypeMappersCount] ??= new Map();
3277632782
activeTypeMappersCount++;
3277732783
}
3277832784

3277932785
function popActiveMapper() {
3278032786
activeTypeMappersCount--;
32787+
// Clear out the popped element's referenced objects.
32788+
activeTypeMappers[activeTypeMappersCount] = undefined!;
32789+
activeTypeMappersCaches[activeTypeMappersCount].clear();
3278132790
}
3278232791

3278332792
function findActiveMapper(mapper: TypeMapper) {

0 commit comments

Comments
 (0)