Skip to content

Commit 8b209be

Browse files
committed
chore: end-2-end test for covariant overrides in classes
1 parent d1ad18e commit 8b209be

File tree

22 files changed

+2036
-25
lines changed

22 files changed

+2036
-25
lines changed

packages/@scope/jsii-calc-base-of-base/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"test:update": "yarn build && UPDATE_DIFF=1 yarn test"
3131
},
3232
"devDependencies": {
33-
"jsii": "5.9.1",
33+
"jsii": "5.9.5-dev.5",
3434
"jsii-build-tools": "^0.0.0",
3535
"jsii-rosetta": "^5.9.1"
3636
},

packages/@scope/jsii-calc-base-of-base/test/assembly.jsii

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
},
1010
"description": "An example transitive dependency for jsii-calc.",
1111
"homepage": "https://github.com/aws/jsii",
12-
"jsiiVersion": "5.9.1",
12+
"jsiiVersion": "5.9.5-dev.5",
1313
"license": "Apache-2.0",
1414
"metadata": {
1515
"jsii": {
@@ -169,5 +169,5 @@
169169
}
170170
},
171171
"version": "2.1.1",
172-
"fingerprint": "aYxN6OFk7UbVs1sLXw8gQJwhedbyv9+wGNPYiMZsxsM="
172+
"fingerprint": "YiQrpPDPr/bX2cGRV/vhmz2lVkryQeiOTtsbwXrKQTA="
173173
}

packages/@scope/jsii-calc-base/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"@scope/jsii-calc-base-of-base": "^2.1.1"
3636
},
3737
"devDependencies": {
38-
"jsii": "5.9.1",
38+
"jsii": "5.9.5-dev.5",
3939
"jsii-build-tools": "^0.0.0",
4040
"jsii-rosetta": "^5.9.1"
4141
},

packages/@scope/jsii-calc-base/test/assembly.jsii

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
},
4040
"description": "An example direct dependency for jsii-calc.",
4141
"homepage": "https://github.com/aws/jsii",
42-
"jsiiVersion": "5.9.1",
42+
"jsiiVersion": "5.9.5-dev.5",
4343
"license": "Apache-2.0",
4444
"metadata": {
4545
"jsii": {
@@ -210,5 +210,5 @@
210210
}
211211
},
212212
"version": "0.0.0",
213-
"fingerprint": "Tkv4XtmzLBHjpoCQIvmDQWCZzcfyvXQvT70VAeVAjx8="
213+
"fingerprint": "JaPxiDRB+3F+uz21JqEeNrE2SV/B067e51Xn1r0ksVw="
214214
}

packages/@scope/jsii-calc-lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"@scope/jsii-calc-base-of-base": "^2.1.1"
4040
},
4141
"devDependencies": {
42-
"jsii": "5.9.1",
42+
"jsii": "5.9.5-dev.5",
4343
"jsii-build-tools": "^0.0.0",
4444
"jsii-rosetta": "^5.9.1"
4545
},

packages/@scope/jsii-calc-lib/test/assembly.jsii

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"stability": "deprecated"
7272
},
7373
"homepage": "https://github.com/aws/jsii",
74-
"jsiiVersion": "5.9.1",
74+
"jsiiVersion": "5.9.5-dev.5",
7575
"license": "Apache-2.0",
7676
"metadata": {
7777
"jsii": {
@@ -1164,5 +1164,5 @@
11641164
}
11651165
},
11661166
"version": "0.0.0",
1167-
"fingerprint": "H6wdtGhqwOcKK1OUW9voxYuUdStSr5JX3ikW5avTfrk="
1167+
"fingerprint": "5OCuu6buBdN9P5AEzbPNsbmIxyEc5glggcBxBSHn5hQ="
11681168
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* This module demonstrates covariant overrides support in jsii.
3+
*
4+
* Covariant overrides allow derived classes to override methods with more specific return types.
5+
* This was previously not supported because C# didn't allow it, but newer versions of C# (9.0+) do.
6+
*/
7+
8+
/** Base class in the inheritance hierarchy */
9+
export class ASuperclass {}
10+
11+
/** Derived class that extends Superclass */
12+
export class BSubclass extends ASuperclass {}
13+
14+
/** Further derived class that extends Subclass */
15+
export class CSubSubclass extends BSubclass {}
16+
17+
export interface IBase {
18+
readonly something: ASuperclass;
19+
}
20+
21+
/** Base class with methods and properties that will be overridden with covariant return types */
22+
export class OriginalBase implements IBase {
23+
public readonly something: ASuperclass = new ASuperclass();
24+
public createSomething(): ASuperclass {
25+
return new ASuperclass();
26+
}
27+
}
28+
29+
/** Middle class in the inheritance chain - doesn't override anything */
30+
export class SomethingInTheMiddle extends OriginalBase {
31+
public addUnrelatedMember = 3;
32+
}
33+
34+
/**
35+
* Derived class that demonstrates covariant overrides.
36+
*
37+
* Both property and method overrides are covariant and will work in C# 9.0+
38+
* when the covariant-overrides feature is enabled.
39+
*/
40+
export class TheEnd extends SomethingInTheMiddle {
41+
// This property override is covariant (SubSubclass extends Superclass)
42+
public readonly something: CSubSubclass = new CSubSubclass();
43+
44+
// This method override is covariant and will work in C# 9.0+
45+
public createSomething(): CSubSubclass {
46+
return new CSubSubclass();
47+
}
48+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * as classOverrides from './class-overrides';

packages/jsii-calc/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ export * as jsii4894 from './jsii4894';
2929
export * as anonymous from './anonymous';
3030
export * as union from './union';
3131
export * as homonymousForwardReferences from './homonymous';
32+
export * as covariance from './covariance';

packages/jsii-calc/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"@scope/jsii-calc-lib": "^0.0.0"
5252
},
5353
"devDependencies": {
54-
"jsii": "5.9.1",
54+
"jsii": "5.9.5-dev.5",
5555
"jsii-build-tools": "^0.0.0",
5656
"jsii-rosetta": "^5.9.1"
5757
},

0 commit comments

Comments
 (0)