refactor: use view engine also for NgModuleFactorys (#16658)

* refactor(core): provide error message in stack for reflective DI

Fixes #16355

* fix(compiler): make AOT work with `noUnusedParameters`

Fixes #15532

* refactor: use view engine also for `NgModuleFactory`s

This is a prerequisite for being able to mock providers
in AOTed code later on.
This commit is contained in:
Tobias Bosch
2017-05-11 10:26:02 -07:00
committed by Jason Aden
parent b9521b568f
commit ce1d7c4a6e
25 changed files with 800 additions and 604 deletions

View File

@ -96,7 +96,17 @@ export class ProviderElementContext {
}
get transformProviders(): ProviderAst[] {
return Array.from(this._transformedProviders.values());
// Note: Maps keep their insertion order.
const lazyProviders: ProviderAst[] = [];
const eagerProviders: ProviderAst[] = [];
this._transformedProviders.forEach(provider => {
if (provider.eager) {
eagerProviders.push(provider);
} else {
lazyProviders.push(provider);
}
});
return lazyProviders.concat(eagerProviders);
}
get transformedDirectiveAsts(): DirectiveAst[] {
@ -316,7 +326,17 @@ export class NgModuleProviderAnalyzer {
const errorString = this._errors.join('\n');
throw new Error(`Provider parse errors:\n${errorString}`);
}
return Array.from(this._transformedProviders.values());
// Note: Maps keep their insertion order.
const lazyProviders: ProviderAst[] = [];
const eagerProviders: ProviderAst[] = [];
this._transformedProviders.forEach(provider => {
if (provider.eager) {
eagerProviders.push(provider);
} else {
lazyProviders.push(provider);
}
});
return lazyProviders.concat(eagerProviders);
}
private _getOrCreateLocalProvider(token: CompileTokenMetadata, eager: boolean): ProviderAst|null {