microsoft / microsoft/TypeScript
createProgram calls host.getSourceFile multiple times
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
TypeScript Version: 3.1.0-dev.20180807
Search Terms:
Repro
declare let oldProgram: ts.Program;
const originalHost = ts.createCompilerHost(true);
const host = {
... originalHost,
getSourceFile(fileName, ...args) {
console.log(fileName);
return originalHost.getSoruceFile(fileName, ...args);
}
const newProgram = ts.createProgram(oldProgram.getRootFileNames(), oldProgram.getCompilerOptions(), host, oldProgram);
Expected behavior:
Each fileName is logged once.
Actual behavior:
If structureIsReused !== Completely fileNames are logged twice: one time from tryReuseStructureFromOldProgram and another time from findSourceFile. That means these SourceFiles are requested multiple times. This is especially a problem with the default CompilerHost which has no caching. It therefore reads and parses each file multiple times, but only the last one is actually used.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con il repro di createProgram e traccia le chiamate attraverso tryReuseStructureFromOldProgram e findSourceFile. Verifica il comportamento con un CompilerHost che esegua il logging, quindi assicurati che ogni fileName venga richiesto una sola volta quando si riutilizza un programma precedente non completo, senza perdere il comportamento previsto di SourceFile.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers, performance
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 35/100