fix(core): missing-injectable migration should not update type definitions (#33286)
Currently the `missing-injectable` migration seems to add `@Injectable()` to third-party classes in type definitions. This not an issue in general since we do not generate broken code by inserting a decorator into a type definition file. Though, we can avoid adding the decorator since it won't have any effect and in general we should not write to non source files of the compilation unit. PR Close #33286
This commit is contained in:

committed by
Andrew Kushnir

parent
4d23b60d09
commit
335854f6bc
@ -380,7 +380,6 @@ describe('Missing injectable migration', () => {
|
||||
.toContain(`{ ${type}, Injectable } from '@angular/core`);
|
||||
});
|
||||
|
||||
|
||||
it(`should migrate multiple nested providers in same ${type}`, async() => {
|
||||
writeFile('/index.ts', `
|
||||
import {${type}} from '@angular/core';
|
||||
@ -689,5 +688,24 @@ describe('Missing injectable migration', () => {
|
||||
expect(tree.readContent('/service.ts'))
|
||||
.toMatch(/import { Inject, Injectable } from '@angular\/core';/);
|
||||
});
|
||||
|
||||
it('should not migrate provider classes in library type definitions', async() => {
|
||||
writeFile('/node_modules/my-lib/index.d.ts', `
|
||||
export declare class MyService {}
|
||||
`);
|
||||
|
||||
writeFile('/index.ts', `
|
||||
import {MyService} from 'my-lib';
|
||||
import {Pipe, ${type}} from '@angular/core';
|
||||
|
||||
@${type}({${propName}: [MyService]})
|
||||
export class TestClass {}
|
||||
`);
|
||||
|
||||
await runMigration();
|
||||
|
||||
expect(warnOutput.length).toBe(0);
|
||||
expect(tree.readContent('/node_modules/my-lib/index.d.ts')).not.toContain('@Injectable');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user