fix(ivy): throw a better error when DI can't inject a ctor param (#33739) (#34340)

Occasionally a factory function needs to be generated for an "invalid"
constructor (one with parameters types which aren't injectable). Typically
this happens in JIT mode where understanding of parameters cannot be done in
the same "up-front" way that the AOT compiler can.

This commit changes the JIT compiler to generate a new `invalidFactoryDep`
call for each invalid parameter. This instruction will error at runtime if
called, indicating both the index of the invalid parameter as well as (via
the stack trace) the factory function which was generated for the type being
constructed.

Fixes #33637

PR Close #33739

PR Close #34340
This commit is contained in:
Alex Rickabaugh
2019-11-11 00:18:43 -08:00
committed by Andrew Kushnir
parent 4b95ba43a5
commit 676aca108f
11 changed files with 97 additions and 10 deletions

View File

@ -67,6 +67,7 @@ export enum R3ResolvedDependencyType {
Token = 0,
Attribute = 1,
ChangeDetectorRef = 2,
Invalid = 3,
}
export enum R3FactoryTarget {