microsoft / microsoft/TypeScript
Bug with resolveClassOrInterfaceMembers
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
https://github.com/Microsoft/TypeScript/blob/6db4faf4883636e70ef7a99401b9dbc5d1a58631/src/compiler/checker.ts#L2894
```
interface monster {
(a: "a"): void;
(b: "b"): void;
(c: "c"): void;
(d: "d"): void;
(e: "e"): void;
(x: string): void;
}
interface m1 extends monster {
a();
}
interface m2 extends monster {
b();
}
interface m3 extends monster { }
interface m4 extends monster { }
interface m5 extends m1, m2, m3, m4 { }
var waa: m5;
waa("a")
```
The compiler finds 24 call expressions because it appends 'monster' from each base type.
Contributor guide
Research direction
Start in src/compiler/checker.ts at the linked resolveClassOrInterfaceMembers location and reproduce the issue with the interface hierarchy and call expression shown here. Trace how members from the repeated base type are collected, then verify that the compiler no longer reports 24 call expressions for the example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100