Skip to content

Commit d254401

Browse files
committed
Do not nullify Modules
1 parent c15894f commit d254401

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

compiler/src/dotty/tools/dotc/core/JavaNullInterop.scala

+3-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@ object JavaNullInterop {
5858
// assert(sym.is(JavaDefined), "can only nullify java-defined members")
5959

6060
// Some special cases when nullifying the type
61-
if isEnumValueDef || sym.name == nme.TYPE_ then
62-
// Don't nullify the `TYPE` field in every class and Java enum instances
61+
if isEnumValueDef || sym.name == nme.TYPE_ // Don't nullify the `TYPE` field in every class and Java enum instances
62+
|| sym.is(Flags.ModuleVal) // Don't nullify Modules
63+
then
6364
tp
6465
else if sym.name == nme.toString_ || sym.isConstructor || hasNotNullAnnot(sym) then
6566
// Don't nullify the return type of the `toString` method.

tests/explicit-nulls/flexible-unpickle/Flexible_2.scala

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import unsafeNulls.Foo.*
2+
import unsafeNulls.Unsafe_1
3+
14
@main
25
def Flexible_2() =
36
val s2: String | Null = "foo"
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
package unsafeNulls
2+
13
class Unsafe_1 {
24
def foo(s: String): String = {
35
if (s == null) then "nullString"
46
else s
57
}
68
}
9+
10+
object Foo {
11+
def bar = "bar!"
12+
}

0 commit comments

Comments
 (0)