microsoft / microsoft/TypeScript
intellisense in static method suggests TypeParameter of outer class
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: 3.2.0-dev.20181101
Search Terms:
Code
class Outer<T> {
doStuff() {
class Inner<T> {
static doStuff(param: /**/) {}
}
}
}
Expected behavior:
Intellisense does not suggest T as it will result in an error.
OR
T of Inner doesn't shadow the outer T in static members, which is therefore accessible.
Actual behavior:
Suggests T from Outer.
Related Issues:
#28471
TypeChecker.getSymbolsInScope correctly excludes TypeParameters of the containing class for its static members. Because of that an outer scope can add a symbol with the same name.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the nested generic static-member case from the issue or its Playground link, then inspect TypeChecker.getSymbolsInScope and the IntelliSense symbol collection around static members. Done means IntelliSense no longer suggests the inaccessible outer T, while the intended handling of Inner's T is preserved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers, developer-experience
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100