@@ -11,7 +11,7 @@ package object ops {
11
11
* val eq3: "1" == "1" = true
12
12
* ```
13
13
*/
14
- @ infix type == [X <: AnyVal & Singleton , Y <: AnyVal & Singleton ] <: Boolean & Singleton
14
+ @ infix type == [X <: AnyVal , Y <: AnyVal ] <: Boolean
15
15
16
16
/** Inequality comparison of two singleton types.
17
17
* ```scala
@@ -20,7 +20,7 @@ package object ops {
20
20
* val eq3: "1" != "1" = false
21
21
* ```
22
22
*/
23
- @ infix type != [X <: AnyVal & Singleton , Y <: AnyVal & Singleton ] <: Boolean & Singleton
23
+ @ infix type != [X <: AnyVal , Y <: AnyVal ] <: Boolean
24
24
}
25
25
26
26
object string {
@@ -29,7 +29,7 @@ package object ops {
29
29
* val hello: "hello " + "world" = "hello world"
30
30
* ```
31
31
*/
32
- @ infix type + [X <: String & Singleton , Y <: String & Singleton ] <: String & Singleton
32
+ @ infix type + [X <: String , Y <: String ] <: String
33
33
}
34
34
35
35
object int {
@@ -38,103 +38,103 @@ package object ops {
38
38
* val sum: 2 + 2 = 4
39
39
* ```
40
40
*/
41
- @ infix type + [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
41
+ @ infix type + [X <: Int , Y <: Int ] <: Int
42
42
43
43
/** Subtraction of two `Int` singleton types.
44
44
* ```scala
45
45
* val sub: 4 - 2 = 2
46
46
* ```
47
47
*/
48
- @ infix type - [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
48
+ @ infix type - [X <: Int , Y <: Int ] <: Int
49
49
50
50
/** Multiplication of two `Int` singleton types.
51
51
* ```scala
52
52
* val mul: 4 * 2 = 8
53
53
* ```
54
54
*/
55
- @ infix type * [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
55
+ @ infix type * [X <: Int , Y <: Int ] <: Int
56
56
57
57
/** Integer division of two `Int` singleton types.
58
58
* ```scala
59
59
* val div: 5 / 2 = 2
60
60
* ```
61
61
*/
62
- @ infix type / [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
62
+ @ infix type / [X <: Int , Y <: Int ] <: Int
63
63
64
64
/** Remainder of the division of `X` by `Y`.
65
65
* ```scala
66
66
* val mod: 5 % 2 = 1
67
67
* ```
68
68
*/
69
- @ infix type % [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
69
+ @ infix type % [X <: Int , Y <: Int ] <: Int
70
70
71
71
/** Less-than comparison of two `Int` singleton types.
72
72
* ```scala
73
73
* val lt1: 4 < 2 = false
74
74
* val lt2: 2 < 4 = true
75
75
* ```
76
76
*/
77
- @ infix type < [X <: Int & Singleton , Y <: Int & Singleton ] <: Boolean & Singleton
77
+ @ infix type < [X <: Int , Y <: Int ] <: Boolean
78
78
79
79
/** Greater-than comparison of two `Int` singleton types.
80
80
* ```scala
81
81
* val gt1: 4 > 2 = true
82
82
* val gt2: 2 > 2 = false
83
83
* ```
84
84
*/
85
- @ infix type > [X <: Int & Singleton , Y <: Int & Singleton ] <: Boolean & Singleton
85
+ @ infix type > [X <: Int , Y <: Int ] <: Boolean
86
86
87
87
/** Greater-or-equal comparison of two `Int` singleton types.
88
88
* ```scala
89
89
* val ge1: 4 >= 2 = true
90
90
* val ge2: 2 >= 3 = false
91
91
* ```
92
92
*/
93
- @ infix type >= [X <: Int & Singleton , Y <: Int & Singleton ] <: Boolean & Singleton
93
+ @ infix type >= [X <: Int , Y <: Int ] <: Boolean
94
94
95
95
/** Less-or-equal comparison of two `Int` singleton types.
96
96
* ```scala
97
97
* val lt1: 4 <= 2 = false
98
98
* val lt2: 2 <= 2 = true
99
99
* ```
100
100
*/
101
- @ infix type <= [X <: Int & Singleton , Y <: Int & Singleton ] <: Boolean & Singleton
101
+ @ infix type <= [X <: Int , Y <: Int ] <: Boolean
102
102
103
103
/** Absolute value of an `Int` singleton type.
104
104
* ```scala
105
105
* val abs: Abs[-1] = 1
106
106
* ```
107
107
*/
108
- type Abs [X <: Int & Singleton ] <: Int & Singleton
108
+ type Abs [X <: Int ] <: Int
109
109
110
110
/** Negation of an `Int` singleton type.
111
111
* ```scala
112
112
* val neg1: Neg[-1] = 1
113
113
* val neg2: Neg[1] = -1
114
114
* ```
115
115
*/
116
- type Negate [X <: Int & Singleton ] <: Int & Singleton
116
+ type Negate [X <: Int ] <: Int
117
117
118
118
/** Minimum of two `Int` singleton types.
119
119
* ```scala
120
120
* val min: Min[-1, 1] = -1
121
121
* ```
122
122
*/
123
- type Min [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
123
+ type Min [X <: Int , Y <: Int ] <: Int
124
124
125
125
/** Maximum of two `Int` singleton types.
126
126
* ```scala
127
127
* val abs: Abs[-1] = 1
128
128
* ```
129
129
*/
130
- type Max [X <: Int & Singleton , Y <: Int & Singleton ] <: Int & Singleton
130
+ type Max [X <: Int , Y <: Int ] <: Int
131
131
132
132
/** String conversion of an `Int` singleton type.
133
133
* ```scala
134
134
* val abs: ToString[1] = "1"
135
135
* ```
136
136
*/
137
- type ToString [X <: Int & Singleton ] <: String & Singleton
137
+ type ToString [X <: Int ] <: String
138
138
}
139
139
140
140
object boolean {
@@ -145,30 +145,30 @@ package object ops {
145
145
* val notTrue: ![true] = false
146
146
* ```
147
147
*/
148
- type ! [X <: Boolean & Singleton ] <: Boolean & Singleton
148
+ type ! [X <: Boolean ] <: Boolean
149
149
150
150
/** Exclusive disjunction of two `Boolean` singleton types.
151
151
* ```scala
152
152
* val a: true ^ true = false
153
153
* val b: false ^ true = true
154
154
* ```
155
155
*/
156
- @ infix type ^ [X <: Boolean & Singleton , Y <: Boolean & Singleton ] <: Boolean & Singleton
156
+ @ infix type ^ [X <: Boolean , Y <: Boolean ] <: Boolean
157
157
158
158
/** Conjunction of two `Boolean` singleton types.
159
159
* ```scala
160
160
* val a: true && true = true
161
161
* val b: false && true = false
162
162
* ```
163
163
*/
164
- @ infix type && [X <: Boolean & Singleton , Y <: Boolean & Singleton ] <: Boolean & Singleton
164
+ @ infix type && [X <: Boolean , Y <: Boolean ] <: Boolean
165
165
166
166
/** Disjunction of two `Boolean` singleton types.
167
167
* ```scala
168
168
* val a: true || false = true
169
169
* val b: false || false = false
170
170
* ```
171
171
*/
172
- @ infix type || [X <: Boolean & Singleton , Y <: Boolean & Singleton ] <: Boolean & Singleton
172
+ @ infix type || [X <: Boolean , Y <: Boolean ] <: Boolean
173
173
}
174
174
}
0 commit comments