Skip to content

Commit 0d9f263

Browse files
committed
Properties on intersections should be readonly only if all declarations are
Fixes microsoft#45122
1 parent 7c4c0a3 commit 0d9f263

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/compiler/checker.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11795,8 +11795,15 @@ namespace ts {
1179511795
}
1179611796
}
1179711797
}
11798-
checkFlags |= (isReadonlySymbol(prop) ? CheckFlags.Readonly : 0) |
11799-
(!(modifiers & ModifierFlags.NonPublicAccessibilityModifier) ? CheckFlags.ContainsPublic : 0) |
11798+
// For unions, prop is readonly if any definition of it is readonly
11799+
if (isUnion && isReadonlySymbol(prop)) {
11800+
checkFlags |= CheckFlags.Readonly;
11801+
}
11802+
// For intersections, prop is writable if any definition of it is writable
11803+
else if (!isUnion && !isReadonlySymbol(prop)) {
11804+
checkFlags &= ~CheckFlags.Readonly;
11805+
}
11806+
checkFlags |= (!(modifiers & ModifierFlags.NonPublicAccessibilityModifier) ? CheckFlags.ContainsPublic : 0) |
1180011807
(modifiers & ModifierFlags.Protected ? CheckFlags.ContainsProtected : 0) |
1180111808
(modifiers & ModifierFlags.Private ? CheckFlags.ContainsPrivate : 0) |
1180211809
(modifiers & ModifierFlags.Static ? CheckFlags.ContainsStatic : 0);

0 commit comments

Comments
 (0)