File tree 1 file changed +3
-14
lines changed
1 file changed +3
-14
lines changed Original file line number Diff line number Diff line change 1
1
trait Null extends Any
2
2
object Test with
3
- def notNull (x : Any ): x.type & NotNull =
3
+ def notNull [ A ] (x : A | Null ): x.type & A =
4
4
assert(x != null )
5
5
x.asInstanceOf // TODO: drop the .asInstanceOf when explicit nulls are implemented
6
6
7
7
locally {
8
8
val x : (Int | Null ) = ???
9
9
val y = x; val _: Int | Null = y
10
10
}
11
- locally {
12
- val x : (Int | Null ) & NotNull = ???
13
- val y = identity(x); val yc : Int = y
14
- val z = x; val zc : Int = z
15
- }
16
11
locally {
17
12
val x : Int | Null = ???
18
13
val y = notNull(identity(x)); val yc : Int = y
19
14
val z = notNull(x); val zc : Int = z
20
15
}
21
- locally {
22
- val x : Int | Null = ???
23
- val y = identity(x).$nn; val yc : Int = y
24
- val z = x.$nn; val zc : Int = z
25
- }
26
16
class C { type T }
27
17
locally {
28
18
val x : C { type T = Int } = new C { type T = Int }
29
- val y : x.$nn.T = 33
19
+ val xnn : x.type & C { type T = Int } = notNull(x)
20
+ val y : xnn.T = 33
30
21
val z = y; val zc : Int = z
31
22
}
32
-
33
-
You can’t perform that action at this time.
0 commit comments