feat(ivy): require 'token' for ngInjectableDef (#30855)
The compiler generates a 'token' field when it emits an ngInjectableDef, but this field was not required by defineInjectable or the InjectableDef interface, nor was it added by InjectionToken. This commit makes 'token' required and adds it where missing. PR Close #30855
This commit is contained in:

committed by
Andrew Kushnir

parent
b0866769b0
commit
a4b4f35533
@ -13,6 +13,7 @@ import {expect} from '@angular/platform-browser/testing/src/matchers';
|
||||
describe('InjectorDef-based createInjector()', () => {
|
||||
class CircularA {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: CircularA,
|
||||
providedIn: null,
|
||||
factory: () => ɵɵinject(CircularB),
|
||||
});
|
||||
@ -20,6 +21,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
|
||||
class CircularB {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: CircularB,
|
||||
providedIn: null,
|
||||
factory: () => ɵɵinject(CircularA),
|
||||
});
|
||||
@ -27,6 +29,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
|
||||
class Service {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: Service,
|
||||
providedIn: null,
|
||||
factory: () => new Service(),
|
||||
});
|
||||
@ -34,6 +37,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
|
||||
class OptionalService {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: OptionalService,
|
||||
providedIn: null,
|
||||
factory: () => new OptionalService(),
|
||||
});
|
||||
@ -56,6 +60,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
constructor(readonly service: Service) {}
|
||||
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ServiceWithDep,
|
||||
providedIn: null,
|
||||
factory: () => new ServiceWithDep(ɵɵinject(Service)),
|
||||
});
|
||||
@ -65,6 +70,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
constructor(@Optional() readonly service: OptionalService|null) {}
|
||||
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ServiceWithOptionalDep,
|
||||
providedIn: null,
|
||||
factory: () => new ServiceWithOptionalDep(ɵɵinject(OptionalService, InjectFlags.Optional)),
|
||||
});
|
||||
@ -74,6 +80,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
constructor(readonly service: Service) {}
|
||||
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ServiceWithMissingDep,
|
||||
providedIn: null,
|
||||
factory: () => new ServiceWithMissingDep(ɵɵinject(Service)),
|
||||
});
|
||||
@ -83,6 +90,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
constructor(readonly locale: string[]) {}
|
||||
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ServiceWithMultiDep,
|
||||
providedIn: null,
|
||||
factory: () => new ServiceWithMultiDep(ɵɵinject(LOCALE)),
|
||||
});
|
||||
@ -90,6 +98,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
|
||||
class ServiceTwo {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ServiceTwo,
|
||||
providedIn: null,
|
||||
factory: () => new ServiceTwo(),
|
||||
});
|
||||
@ -98,6 +107,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
let deepServiceDestroyed = false;
|
||||
class DeepService {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: DeepService,
|
||||
providedIn: null,
|
||||
factory: () => new DeepService(),
|
||||
});
|
||||
@ -108,6 +118,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
let eagerServiceCreated: boolean = false;
|
||||
class EagerService {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: EagerService,
|
||||
providedIn: undefined,
|
||||
factory: () => new EagerService(),
|
||||
});
|
||||
@ -203,6 +214,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
let scopedServiceDestroyed = false;
|
||||
class ScopedService {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: ScopedService,
|
||||
providedIn: Module,
|
||||
factory: () => new ScopedService(),
|
||||
});
|
||||
@ -212,6 +224,7 @@ describe('InjectorDef-based createInjector()', () => {
|
||||
|
||||
class WrongScopeService {
|
||||
static ngInjectableDef = ɵɵdefineInjectable({
|
||||
token: WrongScopeService,
|
||||
providedIn: OtherModule,
|
||||
factory: () => new WrongScopeService(),
|
||||
});
|
||||
|
Reference in New Issue
Block a user