1+ def trim (x : String | Null ): String =
2+ import scala .language .unsafeNulls
3+ // The type of `x.trim()` is `String | Null`.
4+ // Although `String | Null` conforms the expected type `String`,
5+ // we still need to cast the expression to the expected type here,
6+ // because outside the scope we don't have `unsafeNulls` anymore.
7+ x.trim()
8+
9+ class TestDefs :
10+
11+ def f1 : String | Null = null
12+ def f2 : Array [String | Null ] | Null = null
13+ def f3 : Array [String ] | Null = null
14+
15+ def h1a : String =
16+ import scala .language .unsafeNulls
17+ f1
18+
19+ def h1b : String | Null =
20+ import scala .language .unsafeNulls
21+ f1
22+
23+ def h2a : Array [String ] =
24+ import scala .language .unsafeNulls
25+ f2
26+
27+ def h2b : Array [String | Null ] =
28+ import scala .language .unsafeNulls
29+ f2
30+
31+ def h3a : Array [String ] =
32+ import scala .language .unsafeNulls
33+ f3
34+
35+ def h3b : Array [String | Null ] =
36+ import scala .language .unsafeNulls
37+ f3
38+
39+ class TestVals :
40+
41+ val f1 : String | Null = null
42+ val f2 : Array [String | Null ] | Null = null
43+ val f3 : Array [String ] | Null = null
44+
45+ val h1a : String =
46+ import scala .language .unsafeNulls
47+ f1
48+
49+ val h1b : String | Null =
50+ import scala .language .unsafeNulls
51+ f1
52+
53+ val h2a : Array [String ] =
54+ import scala .language .unsafeNulls
55+ f2
56+
57+ val h2b : Array [String | Null ] =
58+ import scala .language .unsafeNulls
59+ f2
60+
61+ val h3a : Array [String ] =
62+ import scala .language .unsafeNulls
63+ f3
64+
65+ val h3b : Array [String | Null ] =
66+ import scala .language .unsafeNulls
67+ f3
0 commit comments