| Index: pkg/compiler/lib/src/types/types.dart
|
| diff --git a/pkg/compiler/lib/src/types/types.dart b/pkg/compiler/lib/src/types/types.dart
|
| index ad890dc6c79f6aaaee44a7880f2eb00d1abbeba8..eac9b46233dd81959705e0cdfd0e4709499e17e9 100644
|
| --- a/pkg/compiler/lib/src/types/types.dart
|
| +++ b/pkg/compiler/lib/src/types/types.dart
|
| @@ -128,23 +128,26 @@ class GlobalTypeInferenceTask extends CompilerTask {
|
| final String name = 'Type inference';
|
|
|
| final Compiler compiler;
|
| - TypesInferrer typesInferrer;
|
| - CommonMasks masks;
|
| +
|
| + /// The [TypeInferrer] used by the global type inference. This should by
|
| + /// accessed from outside this class for testing only.
|
| + TypesInferrer typesInferrerInternal;
|
| +
|
| GlobalTypeInferenceResults results;
|
|
|
| GlobalTypeInferenceTask(Compiler compiler)
|
| - : masks = new CommonMasks(compiler),
|
| - compiler = compiler,
|
| - super(compiler.measurer) {
|
| - typesInferrer = new TypeGraphInferrer(compiler, masks);
|
| - }
|
| + : compiler = compiler,
|
| + super(compiler.measurer);
|
|
|
| /// Runs the global type-inference algorithm once.
|
| void runGlobalTypeInference(Element mainElement) {
|
| measure(() {
|
| - typesInferrer.analyzeMain(mainElement);
|
| - typesInferrer.clear();
|
| - results = new GlobalTypeInferenceResults(typesInferrer, compiler, masks);
|
| + CommonMasks masks = compiler.closedWorld.commonMasks;
|
| + typesInferrerInternal ??= new TypeGraphInferrer(compiler, masks);
|
| + typesInferrerInternal.analyzeMain(mainElement);
|
| + typesInferrerInternal.clear();
|
| + results = new GlobalTypeInferenceResults(
|
| + typesInferrerInternal, compiler, masks);
|
| });
|
| }
|
| }
|
|
|