Skip to content

Commit

Permalink
docs(core): remove v10 mention from @Injectable warning (angular#37383)
Browse files Browse the repository at this point in the history
In v9, we started showing a console warning when
instantiating a token that inherited its @Injectable
decorator rather than providing its own. This warning
said that the pattern would become an error in v10.

However, we have decided to wait until at least v11
to throw in this case, so this commit updates the
warning to be less prescriptive about the exact
version when the pattern will no longer be supported.

PR Close angular#37383
  • Loading branch information
kara authored and matsko committed Jun 2, 2020
1 parent 561c0f8 commit 17e9819
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 6 deletions.
7 changes: 4 additions & 3 deletions packages/core/src/di/interface/defs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ function getOwnDefinition<T>(type: any, def: ɵɵInjectableDef<T>): ɵɵInjectab
*
* @param type A type which may have `ɵprov`, via inheritance.
*
* @deprecated Will be removed in v10, where an error will occur in the scenario if we find the
* `ɵprov` on an ancestor only.
* @deprecated Will be removed in a future version of Angular, where an error will occur in the
* scenario if we find the `ɵprov` on an ancestor only.
*/
export function getInheritedInjectableDef<T>(type: any): ɵɵInjectableDef<T>|null {
// See `jit/injectable.ts#compileInjectable` for context on NG_PROV_DEF_FALLBACK.
Expand All @@ -233,7 +233,8 @@ export function getInheritedInjectableDef<T>(type: any): ɵɵInjectableDef<T>|nu
console.warn(
`DEPRECATED: DI is instantiating a token "${
typeName}" that inherits its @Injectable decorator but does not provide one itself.\n` +
`This will become an error in v10. Please add @Injectable() to the "${typeName}" class.`);
`This will become an error in a future version of Angular. Please add @Injectable() to the "${
typeName}" class.`);
return def;
} else {
return null;
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/di/jit/injectable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function compileInjectable(type: Type<any>, srcMeta?: Injectable): void {
// undecorated parent class. We work around it by defining a method which should be used
// as a fallback. This should only be a problem in JIT mode, because in AOT TypeScript
// seems to have a workaround for static properties. When inheriting from an undecorated
// parent is no longer supported in v10, this can safely be removed.
// parent is no longer supported (v11 or later), this can safely be removed.
if (!type.hasOwnProperty(NG_PROV_DEF_FALLBACK)) {
(type as any)[NG_PROV_DEF_FALLBACK] = () => (type as any)[NG_PROV_DEF];
}
Expand Down
4 changes: 2 additions & 2 deletions packages/core/test/acceptance/di_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1030,7 +1030,7 @@ describe('di', () => {
if (ivyEnabled) {
expect(warnSpy).toHaveBeenCalledWith(
`DEPRECATED: DI is instantiating a token "SubSubClass" that inherits its @Injectable decorator but does not provide one itself.\n` +
`This will become an error in v10. Please add @Injectable() to the "SubSubClass" class.`);
`This will become an error in a future version of Angular. Please add @Injectable() to the "SubSubClass" class.`);
}
});

Expand Down Expand Up @@ -1061,7 +1061,7 @@ describe('di', () => {
if (ivyEnabled) {
expect(warnSpy).toHaveBeenCalledWith(
`DEPRECATED: DI is instantiating a token "MyRootService" that inherits its @Injectable decorator but does not provide one itself.\n` +
`This will become an error in v10. Please add @Injectable() to the "MyRootService" class.`);
`This will become an error in a future version of Angular. Please add @Injectable() to the "MyRootService" class.`);
}
});

Expand Down

0 comments on commit 17e9819

Please sign in to comment.