Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d46bfeb

Browse files
committed
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‎

Lines changed: 6 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /