Skip to content

Commit e42eae8

Browse files
5948cd0 fix(compiler-cli): Produce fatal diagnostic on duplicate decorated properties (#60376)
1 parent a53565e commit e42eae8

28 files changed

+69
-66
lines changed

BUILD_INFO

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Thu Mar 27 19:49:47 UTC 2025
2-
76c60a609fecb7bb7d9de576e9486d22fc4e932e
1+
Thu Mar 27 20:35:23 UTC 2025
2+
5948cd03c505c252602e80d09d5c63ea8fd38f70

bundles/chunk-TVFKPPMT.js renamed to bundles/chunk-GEBFUMBV.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import {
4848
translateStatement,
4949
translateType,
5050
typeNodeToValueExpr
51-
} from "./chunk-T4MIUT36.js";
51+
} from "./chunk-WWBWIRJR.js";
5252
import {
5353
PerfCheckpoint,
5454
PerfEvent,
@@ -3629,6 +3629,7 @@ var InjectableClassRegistry = class {
36293629
import { ArrowFunctionExpr, LiteralArrayExpr, LiteralExpr as LiteralExpr2, literalMap, WrappedNodeExpr as WrappedNodeExpr3 } from "@angular/compiler";
36303630
import ts14 from "typescript";
36313631
function extractClassMetadata(clazz, reflection, isCore, annotateForClosureCompiler, angularDecoratorTransform = (dec) => dec) {
3632+
var _a;
36323633
if (!reflection.isClass(clazz)) {
36333634
return null;
36343635
}
@@ -3650,13 +3651,13 @@ function extractClassMetadata(clazz, reflection, isCore, annotateForClosureCompi
36503651
}
36513652
let metaPropDecorators = null;
36523653
const classMembers = reflection.getMembersOfClass(clazz).filter((member) => !member.isStatic && member.decorators !== null && member.decorators.length > 0);
3653-
const duplicateDecoratedMemberNames = classMembers.map((member) => member.name).filter((name, i, arr) => arr.indexOf(name) < i);
3654-
if (duplicateDecoratedMemberNames.length > 0) {
3655-
throw new Error(`Duplicate decorated properties found on class '${clazz.name.text}': ` + duplicateDecoratedMemberNames.join(", "));
3654+
const duplicateDecoratedMembers = classMembers.filter((member, i, arr) => arr.findIndex((arrayMember) => arrayMember.name === member.name) < i);
3655+
if (duplicateDecoratedMembers.length > 0) {
3656+
throw new FatalDiagnosticError(ErrorCode.DUPLICATE_DECORATED_PROPERTIES, (_a = duplicateDecoratedMembers[0].nameNode) != null ? _a : clazz, `Duplicate decorated properties found on class '${clazz.name.text}': ` + duplicateDecoratedMembers.map((member) => member.name).join(", "));
36563657
}
36573658
const decoratedMembers = classMembers.map((member) => {
3658-
var _a;
3659-
return classMemberToMetadata((_a = member.nameNode) != null ? _a : member.name, member.decorators, isCore);
3659+
var _a2;
3660+
return classMemberToMetadata((_a2 = member.nameNode) != null ? _a2 : member.name, member.decorators, isCore);
36603661
});
36613662
if (decoratedMembers.length > 0) {
36623663
metaPropDecorators = new WrappedNodeExpr3(ts14.factory.createObjectLiteralExpression(decoratedMembers));
@@ -16146,4 +16147,4 @@ export {
1614616147
* Use of this source code is governed by an MIT-style license that can be
1614716148
* found in the LICENSE file at https://angular.dev/license
1614816149
*/
16149-
//# sourceMappingURL=chunk-TVFKPPMT.js.map
16150+
//# sourceMappingURL=chunk-GEBFUMBV.js.map

bundles/chunk-GEBFUMBV.js.map

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundles/chunk-GWRAQOUD.js renamed to bundles/chunk-JMPAR7G7.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-5MOIRYIZ.js renamed to bundles/chunk-MMD7NYL5.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-U5SIOHOA.js renamed to bundles/chunk-NIVE5PXL.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

bundles/chunk-T4MIUT36.js.map

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)