File tree Expand file tree Collapse file tree 2 files changed +19
-0
lines changed
docs/docs/reference/other-new-features Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -46,6 +46,20 @@ object o {
4646def id (x : o.T ): o.T = x
4747```
4848
49+ ### Type Parameters of Opaque Types
50+
51+ Opaque type aliases can have a single type parameter list. The following aliases
52+ are well-formed
53+ ``` scala
54+ opaque type F [T ] = (T , T )
55+ opaque type G = [T ] =>> List [T ]
56+ ```
57+ but the following are not:
58+ ``` scala
59+ opaque type BadF [T ] = [U ] =>> (T , U )
60+ opaque type BadG = [T ] =>> [U ] => (T , U )
61+ ```
62+
4963### Translation of Equality
5064
5165Comparing two values of opaque type with ` == ` or ` != ` normally uses universal equality,
Original file line number Diff line number Diff line change @@ -5,3 +5,8 @@ opaque type T = [A] =>> [B] =>> String // error: opaque type alias cannot have m
55opaque type S = [B ] =>> String // ok
66opaque type IArray [+ T ] = Array [? <: T ] // ok
77opaque type S2 [B ] = String // ok
8+
9+ opaque type BadF [T ] = [U ] =>> (T , U ) // error
10+ opaque type BadG = [T ] =>> [U ] =>> (T , U ) // error
11+
12+
You can’t perform that action at this time.
0 commit comments