feat(core): missing-injectable migration should migrate empty object literal providers (#33709)
In View Engine, providers which neither used `useValue`, `useClass`, `useFactory` or `useExisting`, were interpreted differently. e.g. ``` {provide: X} -> {provide: X, useValue: undefined}, // this is how it works in View Engine {provide: X} -> {provide: X, useClass: X}, // this is how it works in Ivy ``` The missing-injectable migration should migrate such providers to the explicit `useValue` provider. This ensures that there is no unexpected behavioral change when updating to v9. PR Close #33709
This commit is contained in:

committed by
Alex Rickabaugh

parent
1b7aa05699
commit
b7c012f91b
@ -107,6 +107,10 @@ function runMissingInjectableMigration(
|
||||
treeRecorder.remove(namedBindings.getStart(), namedBindings.getWidth());
|
||||
treeRecorder.insertRight(namedBindings.getStart(), newNamedBindings);
|
||||
},
|
||||
updateObjectLiteral(node: ts.ObjectLiteralExpression, newText: string) {
|
||||
treeRecorder.remove(node.getStart(), node.getWidth());
|
||||
treeRecorder.insertRight(node.getStart(), newText);
|
||||
},
|
||||
commitUpdate() { tree.commitUpdate(treeRecorder); }
|
||||
};
|
||||
updateRecorders.set(sourceFile, recorder);
|
||||
|
Reference in New Issue
Block a user