Skip to content

Conversation

@aws-cdk-automation
Copy link
Collaborator

Backport

This will backport the following commits from main to maintenance/v5.8:

Questions ?

Please refer to the Backport tool documentation

Relaxes the the restriction on covariant overrides as currently documented here: https://aws.github.io/jsii/user-guides/lib-author/typescript-restrictions/#covariant-overrides-parameter-list-changes Use of this new feature is indicated by the `class-covariant-overrides` feature in the produced jsii assembly. ## What is the change? It is now allowed to override the _type of readonly class properties_ and the _return type of class methods_ in class inheritance, as long as the changes are covariant to the superclass. Importantly, we still don't allow covariant overrides when implementing interfaces. ✅ now possible ```ts export class Superclass {} export class Subclass extends Superclass {} export class SomethingUnspecific { public readonly something = new Superclass(); public returnSomething(): Superclass { return new Superclass(); } } // Subclass is covariant to Superclass export class SomethingSpecific extends SomethingUnspecific { public readonly something = new Subclass(); public returnSomething(): Subclass { return new Subclass(); } } ``` ❌ still prohibited ```ts export class Superclass {} export class Subclass extends Superclass {} export interface ISomething { something: Superclass; returnSomething(): Superclass; } // ❌ covariant changes are still prohibited when implementing an interface export class SomethingImpl implements ISomething { public something: Subclass = new Subclass(); public returnSomething(): Subclass { return new Subclass(); } } ``` ## Why is this safe now? We can make these changes now, because C# 9 has added the necessary support, and this version of C# has been introduced in .NET 5. In jsii we have now made the necessary change to [increase the target framework to `net6.0`](aws/jsii#4916). C# references: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/covariant-returns https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/override https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords --- By submitting this pull request, I confirm that my contribution is made under the terms of the [Apache 2.0 license]. [Apache 2.0 license]: https://www.apache.org/licenses/LICENSE-2.0 (cherry picked from commit 0e9cf43)
@aws-cdk-automation aws-cdk-automation added this pull request to the merge queue Oct 29, 2025
Merged via the queue into maintenance/v5.8 with commit 1593ae0 Oct 29, 2025
84 checks passed
@aws-cdk-automation aws-cdk-automation deleted the backport/maintenance/v5.8-pr-2324 branch October 29, 2025 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-approve Automatically approve this PR backport

2 participants