feat(ivy): do not emit empty providers/imports for defineInjector (#29598)
The defineInjector function specifies its providers and imports array to be optional, so if no providers/imports are present these keys may be omitted. This commit updates the compiler to only generate the keys when necessary. PR Close #29598
This commit is contained in:
@ -190,7 +190,7 @@ export interface R3InjectorMetadata {
|
||||
name: string;
|
||||
type: o.Expression;
|
||||
deps: R3DependencyMetadata[]|null;
|
||||
providers: o.Expression;
|
||||
providers: o.Expression|null;
|
||||
imports: o.Expression[];
|
||||
}
|
||||
|
||||
@ -201,11 +201,19 @@ export function compileInjector(meta: R3InjectorMetadata): R3InjectorDef {
|
||||
deps: meta.deps,
|
||||
injectFn: R3.inject,
|
||||
});
|
||||
const expression = o.importExpr(R3.defineInjector).callFn([mapToMapExpression({
|
||||
const definitionMap = {
|
||||
factory: result.factory,
|
||||
providers: meta.providers,
|
||||
imports: o.literalArr(meta.imports),
|
||||
})]);
|
||||
} as{factory: o.Expression, providers: o.Expression, imports: o.Expression};
|
||||
|
||||
if (meta.providers !== null) {
|
||||
definitionMap.providers = meta.providers;
|
||||
}
|
||||
|
||||
if (meta.imports.length > 0) {
|
||||
definitionMap.imports = o.literalArr(meta.imports);
|
||||
}
|
||||
|
||||
const expression = o.importExpr(R3.defineInjector).callFn([mapToMapExpression(definitionMap)]);
|
||||
const type =
|
||||
new o.ExpressionType(o.importExpr(R3.InjectorDef, [new o.ExpressionType(meta.type)]));
|
||||
return {expression, type, statements: result.statements};
|
||||
|
Reference in New Issue
Block a user