Skip to content

Commit d46bfeb

Browse files
committedJan 8, 2023
fix: Mitigate endless loop in (invalid) override discovery
1 parent c9297db commit d46bfeb

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed
 

‎src/program.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,7 @@ export class Program extends DiagnosticEmitter {
15011501
let thisInstanceMembers = thisPrototype.instanceMembers;
15021502
if (thisInstanceMembers) {
15031503
let thisMembers = Map_values(thisInstanceMembers);
1504+
let seen: Set<ClassPrototype> | null = null;
15041505
do {
15051506
let baseInstanceMembers = basePrototype.instanceMembers;
15061507
if (baseInstanceMembers) {
@@ -1525,6 +1526,11 @@ export class Program extends DiagnosticEmitter {
15251526
}
15261527
let nextPrototype = basePrototype.basePrototype;
15271528
if (!nextPrototype) break;
1529+
// Break on circular inheritance. Is diagnosed later, when resolved.
1530+
if (!seen) seen = new Set();
1531+
seen.add(basePrototype);
1532+
if (seen.has(nextPrototype)) break;
1533+
// Otherwise traverse to next base prototype.
15281534
basePrototype = nextPrototype;
15291535
} while (true);
15301536
}

0 commit comments

Comments
 (0)
Please sign in to comment.