Skip to content

Commit 0ff7fc6

Browse files
jtennerdcodeIO
authored andcommitted
Derive null to a nullable type in reference contexts (#724)
1 parent fea328e commit 0ff7fc6

File tree

8 files changed

+634
-934
lines changed

8 files changed

+634
-934
lines changed

src/compiler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7140,8 +7140,11 @@ export class Compiler extends DiagnosticEmitter {
71407140
switch (expression.kind) {
71417141
case NodeKind.NULL: {
71427142
let options = this.options;
7143-
if (!contextualType.classReference) {
7143+
let classReference = contextualType.classReference;
7144+
if (!classReference) {
71447145
this.currentType = options.usizeType;
7146+
} else {
7147+
this.currentType = classReference.type.asNullable();
71457148
}
71467149
return options.isWasm64
71477150
? module.i64(0)

tests/compiler/nullable.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"asc_flags": [
3+
"--runtime none"
4+
],
5+
"stderr": [
6+
"TS2531: Object is possibly 'null'.",
7+
"EOF"
8+
]
9+
}

tests/compiler/nullable.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Example {}
2+
3+
function notNullable(a: Example): void {}
4+
5+
notNullable(null);
6+
7+
ERROR("EOF")

0 commit comments

Comments
 (0)