feat(ivy): track file dependencies due to partial evaluation (#30238)

As part of incremental compilation performance improvements, we need
to track the dependencies of files due to expressions being evaluated by
the `PartialEvaluator`.

The `PartialEvaluator` now accepts a `DependencyTracker` object, which is
used to track which files are visited when evaluating an expression.
The interpreter computes this `originatingFile` and stores it in the evaluation
`Context` so it can pass this to the `DependencyTracker.

The `IncrementalState` object implements this interface, which allows it to be
passed to the `PartialEvaluator` and so capture the file dependencies.

PR Close #30238
This commit is contained in:
Pete Bacon Darwin
2019-05-08 17:36:11 +01:00
committed by Alex Rickabaugh
parent 5887ddfa3c
commit 0a0b4c1d8f
9 changed files with 140 additions and 104 deletions

View File

@ -457,7 +457,7 @@ export class NgtscProgram implements api.Program {
aliasGenerator = new AliasGenerator(this.fileToModuleHost);
}
const evaluator = new PartialEvaluator(this.reflector, checker);
const evaluator = new PartialEvaluator(this.reflector, checker, this.incrementalState);
const dtsReader = new DtsMetadataReader(checker, this.reflector);
const localMetaRegistry = new LocalMetadataRegistry();
const depScopeReader = new MetadataDtsModuleScopeResolver(dtsReader, aliasGenerator);