The `undecorated-classes-with-decorated-fields` migration has been introduced with 904a2018e0d3394ad91ffb6472f8271af7845295, but misses logic for decorating derived classes of undecorated classes which use Angular features. Example scenario: ```ts export abstract class MyBaseClass { @Input() someInput = true; } export abstract class BaseClassTwo extends MyBaseClass {} @Component(...) export class MyButton extends BaseClassTwo {} ``` Both abstract classes would need to be migrated. Previously, the migration only added `@Directive()` to `MyBaseClass`, but with this change, it also decorates `BaseClassTwo`. This is necessary because the Angular Compiler requires `BaseClassTwo` to have a directive definition when it flattens the directive metadata for `MyButton` in order to perform type checking. Technically, not decorating `BaseClassTwo` does not break at runtime. We basically want to enforce consistent use of `@Directive` to simplify the mental model. [See the migration guide](https://angular.io/guide/migration-undecorated-classes#migrating-classes-that-use-field-decorators). Fixes #34376. PR Close #35339
23 lines
1013 B
Python
23 lines
1013 B
Python
load("//tools:defaults.bzl", "ts_library")
|
|
|
|
ts_library(
|
|
name = "google3",
|
|
srcs = glob(["**/*.ts"]),
|
|
tsconfig = "//packages/core/schematics:tsconfig.json",
|
|
visibility = ["//packages/core/schematics/test/google3:__pkg__"],
|
|
deps = [
|
|
"//packages/core/schematics/migrations/dynamic-queries",
|
|
"//packages/core/schematics/migrations/missing-injectable",
|
|
"//packages/core/schematics/migrations/missing-injectable/google3",
|
|
"//packages/core/schematics/migrations/renderer-to-renderer2",
|
|
"//packages/core/schematics/migrations/static-queries",
|
|
"//packages/core/schematics/migrations/template-var-assignment",
|
|
"//packages/core/schematics/migrations/undecorated-classes-with-decorated-fields",
|
|
"//packages/core/schematics/migrations/undecorated-classes-with-decorated-fields/google3",
|
|
"//packages/core/schematics/utils",
|
|
"//packages/core/schematics/utils/tslint",
|
|
"@npm//tslint",
|
|
"@npm//typescript",
|
|
],
|
|
)
|