Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / nonexhaustive.sml
CommitLineData
7f918cf1
CE
1(* nonexhaustive.sml *)
2
3val _ =
4 case 2 of
5 2 => 3
6 | 3 => 4
7
8val _ =
9 case [] of
10 [] => 1
11
12val _ =
13 case [] of
14 [] => 0
15 | [_] => 1
16 | [_, _] => 2
17
18fun first l =
19 case l of
20 SOME x :: _ => x
21
22fun f x =
23 case x of
24 (false, false) => ()
25 | (true, true) => ()
26
27datatype z = A | B | C
28
29fun f x =
30 case x of
31 (A, B, C) => ()
32
33val _ =
34 case Fail "foo" of
35 Fail _ => false
36
37val _ =
38 case (1, []) of
39 (1, []) => true
40
41val _ =
42 case (1, []) of
43 (1, _) => true
44
45fun f 1 2 = 3
46
47fun f "" = ()
48
49fun f #"a" = 13
50
51fun f (0w0: Word8.word) = 13
52
53(* Checks for non-exhaustive pattern matches (compiler should warn). *)
54
55fun ord #"\000" = 0
56 | ord #"\002" = 2
57 | ord #"\003" = 3
58 | ord #"\004" = 4
59 | ord #"\005" = 5
60 | ord #"\006" = 6
61 | ord #"\007" = 7
62 | ord #"\008" = 8
63 | ord #"\009" = 9
64 | ord #"\010" = 10
65 | ord #"\011" = 11
66 | ord #"\012" = 12
67 | ord #"\013" = 13
68 | ord #"\014" = 14
69 | ord #"\015" = 15
70 | ord #"\016" = 16
71 | ord #"\017" = 17
72 | ord #"\018" = 18
73 | ord #"\019" = 19
74 | ord #"\020" = 20
75 | ord #"\021" = 21
76 | ord #"\022" = 22
77 | ord #"\023" = 23
78 | ord #"\024" = 24
79 | ord #"\025" = 25
80 | ord #"\026" = 26
81 | ord #"\027" = 27
82 | ord #"\028" = 28
83 | ord #"\029" = 29
84 | ord #"\030" = 30
85 | ord #"\031" = 31
86 | ord #"\032" = 32
87 | ord #"\033" = 33
88 | ord #"\034" = 34
89 | ord #"\035" = 35
90 | ord #"\036" = 36
91 | ord #"\037" = 37
92 | ord #"\038" = 38
93 | ord #"\039" = 39
94 | ord #"\040" = 40
95 | ord #"\041" = 41
96 | ord #"\042" = 42
97 | ord #"\043" = 43
98 | ord #"\044" = 44
99 | ord #"\045" = 45
100 | ord #"\046" = 46
101 | ord #"\047" = 47
102 | ord #"\048" = 48
103 | ord #"\049" = 49
104 | ord #"\050" = 50
105 | ord #"\051" = 51
106 | ord #"\052" = 52
107 | ord #"\053" = 53
108 | ord #"\054" = 54
109 | ord #"\055" = 55
110 | ord #"\056" = 56
111 | ord #"\057" = 57
112 | ord #"\058" = 58
113 | ord #"\059" = 59
114 | ord #"\060" = 60
115 | ord #"\061" = 61
116 | ord #"\062" = 62
117 | ord #"\063" = 63
118 | ord #"\064" = 64
119 | ord #"\065" = 65
120 | ord #"\066" = 66
121 | ord #"\067" = 67
122 | ord #"\068" = 68
123 | ord #"\069" = 69
124 | ord #"\070" = 70
125 | ord #"\071" = 71
126 | ord #"\072" = 72
127 | ord #"\073" = 73
128 | ord #"\074" = 74
129 | ord #"\075" = 75
130 | ord #"\076" = 76
131 | ord #"\077" = 77
132 | ord #"\078" = 78
133 | ord #"\079" = 79
134 | ord #"\080" = 80
135 | ord #"\081" = 81
136 | ord #"\082" = 82
137 | ord #"\083" = 83
138 | ord #"\084" = 84
139 | ord #"\085" = 85
140 | ord #"\086" = 86
141 | ord #"\087" = 87
142 | ord #"\088" = 88
143 | ord #"\089" = 89
144 | ord #"\090" = 90
145 | ord #"\091" = 91
146 | ord #"\092" = 92
147 | ord #"\093" = 93
148 | ord #"\094" = 94
149 | ord #"\095" = 95
150 | ord #"\096" = 96
151 | ord #"\097" = 97
152 | ord #"\098" = 98
153 | ord #"\099" = 99
154 | ord #"\100" = 100
155 | ord #"\101" = 101
156 | ord #"\102" = 102
157 | ord #"\103" = 103
158 | ord #"\104" = 104
159 | ord #"\105" = 105
160 | ord #"\106" = 106
161 | ord #"\107" = 107
162 | ord #"\108" = 108
163 | ord #"\109" = 109
164 | ord #"\110" = 110
165 | ord #"\111" = 111
166 | ord #"\112" = 112
167 | ord #"\113" = 113
168 | ord #"\114" = 114
169 | ord #"\115" = 115
170 | ord #"\116" = 116
171 | ord #"\117" = 117
172 | ord #"\118" = 118
173 | ord #"\119" = 119
174 | ord #"\120" = 120
175 | ord #"\121" = 121
176 | ord #"\122" = 122
177 | ord #"\123" = 123
178 | ord #"\124" = 124
179 | ord #"\125" = 125
180 | ord #"\126" = 126
181 | ord #"\127" = 127
182 | ord #"\128" = 128
183 | ord #"\129" = 129
184 | ord #"\130" = 130
185 | ord #"\131" = 131
186 | ord #"\132" = 132
187 | ord #"\133" = 133
188 | ord #"\134" = 134
189 | ord #"\135" = 135
190 | ord #"\136" = 136
191 | ord #"\137" = 137
192 | ord #"\138" = 138
193 | ord #"\139" = 139
194 | ord #"\140" = 140
195 | ord #"\141" = 141
196 | ord #"\142" = 142
197 | ord #"\143" = 143
198 | ord #"\144" = 144
199 | ord #"\145" = 145
200 | ord #"\146" = 146
201 | ord #"\147" = 147
202 | ord #"\148" = 148
203 | ord #"\149" = 149
204 | ord #"\150" = 150
205 | ord #"\151" = 151
206 | ord #"\152" = 152
207 | ord #"\153" = 153
208 | ord #"\154" = 154
209 | ord #"\155" = 155
210 | ord #"\156" = 156
211 | ord #"\157" = 157
212 | ord #"\158" = 158
213 | ord #"\159" = 159
214 | ord #"\160" = 160
215 | ord #"\161" = 161
216 | ord #"\162" = 162
217 | ord #"\163" = 163
218 | ord #"\164" = 164
219 | ord #"\165" = 165
220 | ord #"\166" = 166
221 | ord #"\167" = 167
222 | ord #"\168" = 168
223 | ord #"\169" = 169
224 | ord #"\170" = 170
225 | ord #"\171" = 171
226 | ord #"\172" = 172
227 | ord #"\173" = 173
228 | ord #"\174" = 174
229 | ord #"\175" = 175
230 | ord #"\176" = 176
231 | ord #"\177" = 177
232 | ord #"\178" = 178
233 | ord #"\179" = 179
234 | ord #"\180" = 180
235 | ord #"\181" = 181
236 | ord #"\182" = 182
237 | ord #"\183" = 183
238 | ord #"\184" = 184
239 | ord #"\185" = 185
240 | ord #"\186" = 186
241 | ord #"\187" = 187
242 | ord #"\188" = 188
243 | ord #"\189" = 189
244 | ord #"\190" = 190
245 | ord #"\191" = 191
246 | ord #"\192" = 192
247 | ord #"\193" = 193
248 | ord #"\194" = 194
249 | ord #"\195" = 195
250 | ord #"\196" = 196
251 | ord #"\197" = 197
252 | ord #"\198" = 198
253 | ord #"\199" = 199
254 | ord #"\200" = 200
255 | ord #"\201" = 201
256 | ord #"\202" = 202
257 | ord #"\203" = 203
258 | ord #"\204" = 204
259 | ord #"\205" = 205
260 | ord #"\206" = 206
261 | ord #"\207" = 207
262 | ord #"\208" = 208
263 | ord #"\209" = 209
264 | ord #"\210" = 210
265 | ord #"\211" = 211
266 | ord #"\212" = 212
267 | ord #"\213" = 213
268 | ord #"\214" = 214
269 | ord #"\215" = 215
270 | ord #"\216" = 216
271 | ord #"\217" = 217
272 | ord #"\218" = 218
273 | ord #"\219" = 219
274 | ord #"\220" = 220
275 | ord #"\221" = 221
276 | ord #"\222" = 222
277 | ord #"\223" = 223
278 | ord #"\224" = 224
279 | ord #"\225" = 225
280 | ord #"\226" = 226
281 | ord #"\227" = 227
282 | ord #"\228" = 228
283 | ord #"\229" = 229
284 | ord #"\230" = 230
285 | ord #"\231" = 231
286 | ord #"\232" = 232
287 | ord #"\233" = 233
288 | ord #"\234" = 234
289 | ord #"\235" = 235
290 | ord #"\236" = 236
291 | ord #"\237" = 237
292 | ord #"\238" = 238
293 | ord #"\239" = 239
294 | ord #"\240" = 240
295 | ord #"\241" = 241
296 | ord #"\242" = 242
297 | ord #"\243" = 243
298 | ord #"\244" = 244
299 | ord #"\245" = 245
300 | ord #"\246" = 246
301 | ord #"\247" = 247
302 | ord #"\248" = 248
303 | ord #"\249" = 249
304 | ord #"\250" = 250
305 | ord #"\251" = 251
306 | ord #"\252" = 252
307 | ord #"\253" = 253
308 | ord #"\254" = 254
309 | ord #"\255" = 255;