microsoft / microsoft/TypeScript
Better handling for manually created source files and compiler APIs
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Search Terms
type checker source file cannot ready property 'members' of undefined
Suggestion
When a user of the compiler API manually creates a source file with ts.createSourceFile instead of retrieving it from their program, and then asks the program for type inference on a contained node, this can crash. See https://github.com/Microsoft/TypeScript/issues/8136 / https://github.com/vuejs/vue-cli/issues/2712 / https://github.com/angular/tsickle/issues/151 / https://github.com/general-language-syntax/TS-GLS/issues/39.
It seems like one of three interpretations might be best:
- This is explicitly unsupported behavior, but for the sake of performance & simplicity, no checks should happen
- This is explicitly unsupported behavior, and a more explicit error should be thrown
- This should become supported behavior, and the program should dynamically create source files as requested
Use Cases
Auto-generated TypeScript files, such as .vue snippets, still want access to a type checker, such as for TSLint rules.
Examples
https://github.com/palantir/tslint/issues/4273
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript / JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. new expression-level syntax)
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 crash with ts.createSourceFile and a program type-checker query on a node from the manually created file. Review the linked issues and determine whether this behavior should be unsupported, fail explicitly, or be supported dynamically. Done requires a decided API behavior and corresponding implementation and validation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100