@shd101wyy/yo 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +8 -6
  2. package/out/cjs/index.cjs +691 -636
  3. package/out/cjs/yo-cli.cjs +710 -653
  4. package/out/esm/index.mjs +649 -594
  5. package/out/types/src/build-runner.d.ts +1 -1
  6. package/out/types/src/codegen/async/runtime-io-common.d.ts +2 -1
  7. package/out/types/src/codegen/async/runtime.d.ts +5 -1
  8. package/out/types/src/codegen/codegen-c.d.ts +2 -0
  9. package/out/types/src/codegen/functions/collection.d.ts +1 -1
  10. package/out/types/src/codegen/functions/context.d.ts +1 -0
  11. package/out/types/src/codegen/functions/generation.d.ts +10 -0
  12. package/out/types/src/codegen/utils/index.d.ts +4 -0
  13. package/out/types/src/env.d.ts +1 -0
  14. package/out/types/src/evaluator/builtins/build.d.ts +1 -0
  15. package/out/types/src/evaluator/builtins/comptime-index-fns.d.ts +17 -0
  16. package/out/types/src/evaluator/calls/index-trait.d.ts +17 -0
  17. package/out/types/src/evaluator/context.d.ts +19 -14
  18. package/out/types/src/evaluator/index.d.ts +3 -1
  19. package/out/types/src/evaluator/trait-checking.d.ts +1 -0
  20. package/out/types/src/evaluator/values/anonymous-module.d.ts +3 -2
  21. package/out/types/src/expr.d.ts +22 -1
  22. package/out/types/src/module-manager.d.ts +1 -0
  23. package/out/types/src/target.d.ts +1 -0
  24. package/out/types/src/value.d.ts +4 -1
  25. package/out/types/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +1 -1
  27. package/std/build.yo +2 -1
  28. package/std/collections/array_list.yo +114 -26
  29. package/std/collections/btree_map.yo +13 -3
  30. package/std/collections/deque.yo +10 -0
  31. package/std/collections/hash_map.yo +15 -0
  32. package/std/collections/priority_queue.yo +5 -5
  33. package/std/encoding/html.yo +283 -0
  34. package/std/encoding/html_char_utils.yo +36 -0
  35. package/std/encoding/html_entities.yo +2262 -0
  36. package/std/encoding/punycode.yo +366 -0
  37. package/std/encoding/toml.yo +1 -1
  38. package/std/fmt/to_string.yo +5 -4
  39. package/std/glob/index.yo +2 -2
  40. package/std/libc/wctype.yo +55 -0
  41. package/std/path.yo +6 -6
  42. package/std/prelude.yo +826 -205
  43. package/std/process.yo +1 -1
  44. package/std/regex/compiler.yo +11 -11
  45. package/std/regex/index.yo +2 -4
  46. package/std/regex/parser.yo +69 -4
  47. package/std/regex/vm.yo +53 -46
  48. package/std/string/string.yo +1424 -1339
  49. package/std/string/unicode.yo +242 -0
  50. package/out/types/src/evaluator/calls/array.d.ts +0 -14
package/std/prelude.yo CHANGED
@@ -96,6 +96,14 @@ extern "Yo",
96
96
  fn(forall(T: Type), slice: Slice(T)) -> usize,
97
97
  __yo_slice_new :
98
98
  fn(forall(T: Type), ptr: *(T), length: usize) -> Slice(T),
99
+ __yo_slice_ptr :
100
+ fn(forall(T: Type), slice: Slice(T)) -> *(T),
101
+
102
+ // array/slice indexing builtins (used by Index trait impls)
103
+ __yo_array_index :
104
+ fn(forall(T: Type, N: usize), self: *(Array(T, N)), idx: usize) -> *(T),
105
+ __yo_slice_index :
106
+ fn(forall(T: Type), self: *(Slice(T)), idx: usize) -> *(T),
99
107
 
100
108
  // C macro related
101
109
  __yo_c_macro_defined : (fn(comptime(name) : comptime_string) -> comptime(bool)),
@@ -177,149 +185,240 @@ Dispose :: trait(
177
185
  );
178
186
  export Dispose;
179
187
 
180
- /// === Arithmetic ===
181
- Add :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
182
- trait
183
- Output := Output,
184
- (+) : (fn(lhs: Self, rhs: Rhs)-> Output)
188
+ /// === Index ===
189
+ Index :: (fn(comptime(Idx) : Type) -> comptime(Trait))(
190
+ trait(
191
+ Output : Type,
192
+ index : (fn(self: *(Self), idx: Idx) -> *(Self.Output))
193
+ )
194
+ );
195
+ export Index;
196
+
197
+ ComptimeIndex :: (fn(comptime(Idx) : Type, where(Idx <: Comptime)) -> comptime(Trait))(
198
+ trait(
199
+ Output : Type,
200
+ index : (fn(comptime(self): *(Self), comptime(idx): Idx) -> comptime(*(Self.Output))),
201
+ where(Self <: Comptime, Self.Output <: Comptime)
202
+ )
203
+ );
204
+ export ComptimeIndex;
205
+
206
+ /// === Range Types ===
207
+ Range :: (fn(comptime(T) : Type) -> comptime(Type))(
208
+ struct(start : T, end : T)
209
+ );
210
+ export Range;
211
+
212
+ RangeInclusive :: (fn(comptime(T) : Type) -> comptime(Type))(
213
+ struct(start : T, end : T)
214
+ );
215
+ export RangeInclusive;
216
+
217
+ /// === Range Operator Traits ===
218
+ RangeOp :: trait(
219
+ (..) : (fn(start: Self, end: Self) -> Range(Self))
220
+ );
221
+ export RangeOp;
222
+
223
+ RangeInclusiveOp :: trait(
224
+ (..=) : (fn(start: Self, end: Self) -> RangeInclusive(Self))
225
+ );
226
+ export RangeInclusiveOp;
227
+
228
+ // array/slice range indexing builtins (declared after Range/RangeInclusive types)
229
+ extern "Yo",
230
+ __yo_array_index_range :
231
+ fn(forall(T: Type, N: usize), self: *(Array(T, N)), idx: Range(usize)) -> *(Slice(T)),
232
+ __yo_array_index_range_inclusive :
233
+ fn(forall(T: Type, N: usize), self: *(Array(T, N)), idx: RangeInclusive(usize)) -> *(Slice(T)),
234
+ __yo_slice_index_range :
235
+ fn(forall(T: Type), self: *(Slice(T)), idx: Range(usize)) -> *(Slice(T)),
236
+ __yo_slice_index_range_inclusive :
237
+ fn(forall(T: Type), self: *(Slice(T)), idx: RangeInclusive(usize)) -> *(Slice(T))
238
+ ;
239
+
240
+ // comptime array/slice/string indexing builtins (used by ComptimeIndex trait impls)
241
+ extern "Yo",
242
+ __yo_comptime_array_index :
243
+ (fn(forall(T: Type, N: usize), comptime(self): *(Array(T, N)), comptime(idx): usize, where(T <: Comptime)) -> comptime(*(T))),
244
+ __yo_comptime_slice_index :
245
+ (fn(forall(T: Type), comptime(self): *(Slice(T)), comptime(idx): usize, where(T <: Comptime)) -> comptime(*(T))),
246
+ __yo_comptime_array_index_range :
247
+ (fn(forall(T: Type, N: usize), comptime(self): *(Array(T, N)), comptime(idx): Range(usize), where(T <: Comptime)) -> comptime(*(Slice(T)))),
248
+ __yo_comptime_array_index_range_inclusive :
249
+ (fn(forall(T: Type, N: usize), comptime(self): *(Array(T, N)), comptime(idx): RangeInclusive(usize), where(T <: Comptime)) -> comptime(*(Slice(T)))),
250
+ __yo_comptime_slice_index_range :
251
+ (fn(forall(T: Type), comptime(self): *(Slice(T)), comptime(idx): Range(usize), where(T <: Comptime)) -> comptime(*(Slice(T)))),
252
+ __yo_comptime_slice_index_range_inclusive :
253
+ (fn(forall(T: Type), comptime(self): *(Slice(T)), comptime(idx): RangeInclusive(usize), where(T <: Comptime)) -> comptime(*(Slice(T)))),
254
+ __yo_comptime_string_index :
255
+ (fn(comptime(self): comptime_string, comptime(idx): comptime_int) -> comptime(comptime_string)),
256
+ __yo_comptime_string_index_range :
257
+ (fn(comptime(self): comptime_string, comptime(idx): Range(comptime_int)) -> comptime(comptime_string)),
258
+ __yo_comptime_string_index_range_inclusive :
259
+ (fn(comptime(self): comptime_string, comptime(idx): RangeInclusive(comptime_int)) -> comptime(comptime_string))
185
260
  ;
261
+
262
+ ComptimeRangeOp :: trait(
263
+ (..) : (fn(comptime(start): Self, comptime(end): Self) -> comptime(Range(Self))),
264
+ where(Self <: Comptime)
265
+ );
266
+ export ComptimeRangeOp;
267
+
268
+ ComptimeRangeInclusiveOp :: trait(
269
+ (..=) : (fn(comptime(start): Self, comptime(end): Self) -> comptime(RangeInclusive(Self))),
270
+ where(Self <: Comptime)
271
+ );
272
+ export ComptimeRangeInclusiveOp;
273
+
274
+ /// === Arithmetic ===
275
+ Add :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
276
+ trait(
277
+ Output : Type,
278
+ (+) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
279
+ )
280
+ );
186
281
  export Add;
187
282
 
188
- ComptimeAdd :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
283
+ ComptimeAdd :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
189
284
  trait(
190
- Output := Output,
191
- (+) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
192
- where(Self <: Comptime)
285
+ Output : Type,
286
+ (+) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
287
+ where(Self <: Comptime, Self.Output <: Comptime)
193
288
  )
194
- ;
289
+ );
195
290
  export ComptimeAdd;
196
291
 
197
- Sub :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
198
- trait
199
- Output := Output,
200
- (-) : (fn(lhs: Self, rhs: Rhs)-> Output)
201
- ;
292
+ Sub :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
293
+ trait(
294
+ Output : Type,
295
+ (-) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
296
+ )
297
+ );
202
298
  export Sub;
203
299
 
204
- ComptimeSub :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
300
+ ComptimeSub :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
205
301
  trait(
206
- Output := Output,
207
- (-) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
208
- where(Self <: Comptime)
302
+ Output : Type,
303
+ (-) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
304
+ where(Self <: Comptime, Self.Output <: Comptime)
209
305
  )
210
- ;
306
+ );
211
307
  export ComptimeSub;
212
308
 
213
- Mul :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
214
- trait
215
- Output := Output,
216
- (*) : (fn(lhs: Self, rhs: Rhs)-> Output)
217
- ;
309
+ Mul :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
310
+ trait(
311
+ Output : Type,
312
+ (*) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
313
+ )
314
+ );
218
315
  export Mul;
219
316
 
220
- ComptimeMul :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
317
+ ComptimeMul :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
221
318
  trait(
222
- Output := Output,
223
- (*) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
224
- where(Self <: Comptime)
319
+ Output : Type,
320
+ (*) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
321
+ where(Self <: Comptime, Self.Output <: Comptime)
225
322
  )
226
- ;
323
+ );
227
324
  export ComptimeMul;
228
325
 
229
- Div :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
230
- trait
231
- Output := Output,
232
- (/) : (fn(lhs: Self, rhs: Rhs)-> Output)
233
- ;
326
+ Div :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
327
+ trait(
328
+ Output : Type,
329
+ (/) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
330
+ )
331
+ );
234
332
  export Div;
235
333
 
236
- ComptimeDiv :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
334
+ ComptimeDiv :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
237
335
  trait(
238
- Output := Output,
239
- (/) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
240
- where(Self <: Comptime)
336
+ Output : Type,
337
+ (/) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
338
+ where(Self <: Comptime, Self.Output <: Comptime)
241
339
  )
242
- ;
340
+ );
243
341
  export ComptimeDiv;
244
342
 
245
- Mod :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
246
- trait
247
- Output := Output,
248
- (%) : (fn(lhs: Self, rhs: Rhs)-> Output)
249
- ;
343
+ Mod :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
344
+ trait(
345
+ Output : Type,
346
+ (%) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
347
+ )
348
+ );
250
349
  export Mod;
251
350
 
252
- ComptimeMod :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
351
+ ComptimeMod :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
253
352
  trait(
254
- Output := Output,
255
- (%) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
256
- where(Self <: Comptime)
353
+ Output : Type,
354
+ (%) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
355
+ where(Self <: Comptime, Self.Output <: Comptime)
257
356
  )
258
- ;
357
+ );
259
358
  export ComptimeMod;
260
359
 
261
- BitLeftShift :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
262
- trait
263
- Output := Output,
264
- (<<) : (fn(lhs: Self, rhs: Rhs)-> Output)
265
- ;
360
+ BitLeftShift :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
361
+ trait(
362
+ Output : Type,
363
+ (<<) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
364
+ )
365
+ );
266
366
  export BitLeftShift;
267
367
 
268
- ComptimeBitLeftShift :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
368
+ ComptimeBitLeftShift :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
269
369
  trait(
270
- Output := Output,
271
- (<<) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
272
- where(Self <: Comptime)
370
+ Output : Type,
371
+ (<<) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
372
+ where(Self <: Comptime, Self.Output <: Comptime)
273
373
  )
274
- ;
374
+ );
275
375
  export ComptimeBitLeftShift;
276
376
 
277
- BitRightShift :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
278
- trait
279
- Output := Output,
280
- (>>) : (fn(lhs: Self, rhs: Rhs)-> Output)
281
- ;
377
+ BitRightShift :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
378
+ trait(
379
+ Output : Type,
380
+ (>>) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
381
+ )
382
+ );
282
383
  export BitRightShift;
283
384
 
284
- ComptimeBitRightShift :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
385
+ ComptimeBitRightShift :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
285
386
  trait(
286
- Output := Output,
287
- (>>) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
288
- where(Self <: Comptime)
387
+ Output : Type,
388
+ (>>) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
389
+ where(Self <: Comptime, Self.Output <: Comptime)
289
390
  )
290
- ;
391
+ );
291
392
  export ComptimeBitRightShift;
292
393
 
293
- Exponentiation :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs)-> comptime(Trait))
294
- trait
295
- Output := Output,
296
- (**) : (fn(lhs: Self, rhs: Rhs)-> Output)
297
- ;
394
+ Exponentiation :: (fn(comptime(Rhs) : Type)-> comptime(Trait))(
395
+ trait(
396
+ Output : Type,
397
+ (**) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
398
+ )
399
+ );
298
400
  export Exponentiation;
299
401
 
300
- ComptimeExponentiation :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime))-> comptime(Trait))
402
+ ComptimeExponentiation :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
301
403
  trait(
302
- Output := Output,
303
- (**) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
304
- where(Self <: Comptime)
404
+ Output : Type,
405
+ (**) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
406
+ where(Self <: Comptime, Self.Output <: Comptime)
305
407
  )
306
- ;
408
+ );
307
409
  export ComptimeExponentiation;
308
410
 
309
- Negate :: (fn(comptime(Output) : Type)-> comptime(Trait))
310
- trait
311
- Output := Output,
312
- (neg): (fn(self: Self)-> Output)
313
- ;
411
+ Negate :: trait(
412
+ Output : Type,
413
+ (neg): (fn(self: Self) -> Self.Output)
414
+ );
314
415
  export Negate;
315
416
 
316
- ComptimeNegate :: (fn(comptime(Output) : Type, where(Output <: Comptime))-> comptime(Trait))
317
- trait(
318
- Output := Output,
319
- (neg) : (fn(comptime(self): Self)-> comptime(Output)),
320
- where(Self <: Comptime)
321
- )
322
- ;
417
+ ComptimeNegate :: trait(
418
+ Output : Type,
419
+ (neg) : (fn(comptime(self): Self) -> comptime(Self.Output)),
420
+ where(Self <: Comptime, Self.Output <: Comptime)
421
+ );
323
422
  export ComptimeNegate;
324
423
 
325
424
  /// === Logic ===
@@ -334,68 +433,68 @@ ComptimeLogicalNot :: trait
334
433
  ;
335
434
  export ComptimeLogicalNot;
336
435
 
337
- BitNot :: (fn(comptime(Output) : Type) -> comptime(Trait))
338
- trait
339
- Output := Output,
340
- (~) : (fn(self: Self)-> Output)
341
- ;
436
+ BitNot :: trait(
437
+ Output : Type,
438
+ (~) : (fn(self: Self) -> Self.Output)
439
+ );
342
440
  export BitNot;
343
441
 
344
- ComptimeBitNot :: (fn(comptime(Output) : Type, where(Output <: Comptime)) -> comptime(Trait))
345
- trait(
346
- Output := Output,
347
- (~) : (fn(comptime(self): Self)-> comptime(Output)),
348
- where(Self <: Comptime)
349
- )
350
- ;
442
+ ComptimeBitNot :: trait(
443
+ Output : Type,
444
+ (~) : (fn(comptime(self): Self) -> comptime(Self.Output)),
445
+ where(Self <: Comptime, Self.Output <: Comptime)
446
+ );
351
447
  export ComptimeBitNot;
352
448
 
353
- BitAnd :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs) -> comptime(Trait))
354
- trait
355
- Output := Output,
356
- (&) : (fn(lhs: Self, rhs: Rhs)-> Output)
357
- ;
449
+ BitAnd :: (fn(comptime(Rhs) : Type) -> comptime(Trait))(
450
+ trait(
451
+ Output : Type,
452
+ (&) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
453
+ )
454
+ );
358
455
  export BitAnd;
359
456
 
360
- ComptimeBitAnd :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime)) -> comptime(Trait))
457
+ ComptimeBitAnd :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
361
458
  trait(
362
- Output := Output,
363
- (&) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
364
- where(Self <: Comptime)
459
+ Output : Type,
460
+ (&) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
461
+ where(Self <: Comptime, Self.Output <: Comptime)
365
462
  )
366
- ;
463
+ );
367
464
  export ComptimeBitAnd;
368
465
 
369
- BitOr :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs) -> comptime(Trait))
370
- trait
371
- Output := Output,
372
- (|) : (fn(lhs: Self, rhs: Rhs)-> Output)
373
- ;
466
+ BitOr :: (fn(comptime(Rhs) : Type) -> comptime(Trait))(
467
+ trait(
468
+ Output : Type,
469
+ (|) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
470
+ )
471
+ );
374
472
  export BitOr;
375
473
 
376
- ComptimeBitOr :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime)) -> comptime(Trait))
474
+ ComptimeBitOr :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
377
475
  trait(
378
- Output := Output,
379
- (|) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
380
- where(Self <: Comptime)
476
+ Output : Type,
477
+ (|) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
478
+ where(Self <: Comptime, Self.Output <: Comptime)
381
479
  )
382
- ;
480
+ );
383
481
  export ComptimeBitOr;
384
482
 
385
- BitXor :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs) -> comptime(Trait))
386
- trait
387
- Output := Output,
388
- (^) : (fn(lhs: Self, rhs: Rhs)-> Output)
389
- ;
483
+ BitXor :: (fn(comptime(Rhs) : Type) -> comptime(Trait))(
484
+ trait(
485
+ Output : Type,
486
+ (^) : (fn(lhs: Self, rhs: Rhs) -> Self.Output)
487
+ )
488
+ );
390
489
  export BitXor;
391
490
 
392
- ComptimeBitXor :: (fn(comptime(Rhs) : Type, (comptime(Output) : Type) ?= Rhs, where(Rhs <: Comptime, Output <: Comptime)) -> comptime(Trait))
491
+ ComptimeBitXor :: (fn(comptime(Rhs) : Type, where(Rhs <: Comptime))-> comptime(Trait))(
393
492
  trait(
394
- Output := Output,
395
- (^) : (fn(comptime(lhs): Self, comptime(rhs): Rhs)-> comptime(Output)),
396
- where(Self <: Comptime)
493
+ Output : Type,
494
+ (^) : (fn(comptime(lhs): Self, comptime(rhs): Rhs) -> comptime(Self.Output)),
495
+ where(Self <: Comptime, Self.Output <: Comptime)
397
496
  )
398
- ;
497
+ );
399
498
  export ComptimeBitXor;
400
499
 
401
500
  (!) :: impl {
@@ -425,14 +524,14 @@ export not, (!);
425
524
  (~) :: impl {
426
525
  (bit_not) :: (fn(forall(_Self : Type),
427
526
  self : _Self,
428
- where(_Self <: BitNot(_Self))
527
+ where(_Self <: BitNot)
429
528
  ) -> _Self)
430
529
  self.(~)()
431
530
  ;
432
531
 
433
532
  (comptime_bit_not) :: (fn(forall(_Self : Type),
434
533
  comptime(self) : _Self,
435
- where(_Self <: (Comptime, ComptimeBitNot(_Self)))
534
+ where(_Self <: (Comptime, ComptimeBitNot))
436
535
  ) -> comptime(_Self))
437
536
  self.(~)()
438
537
  ;
@@ -448,14 +547,14 @@ export (~);
448
547
  (-) :: impl {
449
548
  (neg) :: (fn(forall(_Self : Type),
450
549
  self : _Self,
451
- where(_Self <: Negate(_Self))
550
+ where(_Self <: Negate)
452
551
  ) -> _Self) {
453
552
  return self.neg();
454
553
  };
455
554
 
456
555
  (comptime_neg) :: (fn(forall(_Self : Type),
457
556
  comptime(self) : _Self,
458
- where(_Self <: (Comptime, ComptimeNegate(_Self)))
557
+ where(_Self <: (Comptime, ComptimeNegate))
459
558
  ) -> comptime(_Self)) {
460
559
  return self.neg();
461
560
  };
@@ -615,31 +714,37 @@ impl(void, Send());
615
714
  impl(comptime_int, Acyclic());
616
715
  impl(comptime_int, Comptime());
617
716
  impl(comptime_int, ComptimeAdd(comptime_int)(
717
+ Output : comptime_int,
618
718
  (+) : ((lhs, rhs) ->
619
719
  __yo_comptime_int_add(lhs, rhs)
620
720
  )
621
721
  ));
622
722
  impl(comptime_int, ComptimeSub(comptime_int)(
723
+ Output : comptime_int,
623
724
  (-) : ((lhs, rhs) ->
624
725
  __yo_comptime_int_sub(lhs, rhs)
625
726
  )
626
727
  ));
627
728
  impl(comptime_int, ComptimeMul(comptime_int)(
729
+ Output : comptime_int,
628
730
  (*) : ((lhs, rhs) ->
629
731
  __yo_comptime_int_mul(lhs, rhs)
630
732
  )
631
733
  ));
632
734
  impl(comptime_int, ComptimeDiv(comptime_int)(
735
+ Output : comptime_int,
633
736
  (/) : ((lhs, rhs) ->
634
737
  __yo_comptime_int_div(lhs, rhs)
635
738
  )
636
739
  ));
637
740
  impl(comptime_int, ComptimeMod(comptime_int)(
741
+ Output : comptime_int,
638
742
  (%) : ((lhs, rhs) ->
639
743
  __yo_comptime_int_mod(lhs, rhs)
640
744
  )
641
745
  ));
642
- impl(comptime_int, ComptimeNegate(comptime_int)(
746
+ impl(comptime_int, ComptimeNegate(
747
+ Output : comptime_int,
643
748
  (neg) : (self ->
644
749
  __yo_comptime_int_neg(self)
645
750
  )
@@ -671,6 +776,12 @@ impl(comptime_int, ComptimeToString(
671
776
  __yo_comptime_int_to_comptime_string(self)
672
777
  )
673
778
  ));
779
+ impl(comptime_int, ComptimeRangeOp(
780
+ (..): ((start, end) -> Range(comptime_int)(start: start, end: end))
781
+ ));
782
+ impl(comptime_int, ComptimeRangeInclusiveOp(
783
+ (..=): ((start, end) -> RangeInclusive(comptime_int)(start: start, end: end))
784
+ ));
674
785
  _comptime_int :: comptime_int;
675
786
  export comptime_int : _comptime_int;
676
787
 
@@ -678,26 +789,31 @@ export comptime_int : _comptime_int;
678
789
  impl(comptime_float, Acyclic());
679
790
  impl(comptime_float, Comptime());
680
791
  impl(comptime_float, ComptimeAdd(comptime_float)(
792
+ Output : comptime_float,
681
793
  (+) : ((lhs, rhs) ->
682
794
  __yo_comptime_float_add(lhs, rhs)
683
795
  )
684
796
  ));
685
797
  impl(comptime_float, ComptimeSub(comptime_float)(
798
+ Output : comptime_float,
686
799
  (-) : ((lhs, rhs) ->
687
800
  __yo_comptime_float_sub(lhs, rhs)
688
801
  )
689
802
  ));
690
803
  impl(comptime_float, ComptimeMul(comptime_float)(
804
+ Output : comptime_float,
691
805
  (*) : ((lhs, rhs) ->
692
806
  __yo_comptime_float_mul(lhs, rhs)
693
807
  )
694
808
  ));
695
809
  impl(comptime_float, ComptimeDiv(comptime_float)(
810
+ Output : comptime_float,
696
811
  (/) : ((lhs, rhs) ->
697
812
  __yo_comptime_float_div(lhs, rhs)
698
813
  )
699
814
  ));
700
- impl(comptime_float, ComptimeNegate(comptime_float)(
815
+ impl(comptime_float, ComptimeNegate(
816
+ Output : comptime_float,
701
817
  (neg) : (self ->
702
818
  __yo_comptime_float_neg(self)
703
819
  )
@@ -734,6 +850,7 @@ export comptime_float : _comptime_float;
734
850
  impl(comptime_string, Acyclic());
735
851
  impl(comptime_string, Comptime());
736
852
  impl(comptime_string, ComptimeAdd(comptime_string)(
853
+ Output : comptime_string,
737
854
  (+) : ((lhs, rhs) ->
738
855
  __yo_comptime_string_concat(lhs, rhs)
739
856
  )
@@ -828,42 +945,54 @@ impl(i8, Acyclic());
828
945
  impl(i8, Comptime());
829
946
  impl(i8, Runtime());
830
947
  impl(i8, Add(i8)(
948
+ Output : i8,
831
949
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
832
950
  ));
833
951
  impl(i8, Sub(i8)(
952
+ Output : i8,
834
953
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
835
954
  ));
836
955
  impl(i8, Mul(i8)(
956
+ Output : i8,
837
957
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
838
958
  ));
839
959
  impl(i8, Div(i8)(
960
+ Output : i8,
840
961
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
841
962
  ));
842
963
  impl(i8, Mod(i8)(
964
+ Output : i8,
843
965
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
844
966
  ));
845
- impl(i8, Negate(i8)(
967
+ impl(i8, Negate(
968
+ Output : i8,
846
969
  (neg): ((self) -> __yo_op_neg(self))
847
970
  ));
848
971
  impl(i8, BitLeftShift(i8)(
972
+ Output : i8,
849
973
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
850
974
  ));
851
975
  impl(i8, BitRightShift(i8)(
976
+ Output : i8,
852
977
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
853
978
  ));
854
979
  impl(i8, LogicalNot(
855
980
  (!): ((self) -> __yo_op_not(self))
856
981
  ));
857
- impl(i8, BitNot(i8)(
982
+ impl(i8, BitNot(
983
+ Output : i8,
858
984
  (~): ((self) -> __yo_op_bit_complement(self))
859
985
  ));
860
986
  impl(i8, BitAnd(i8)(
987
+ Output : i8,
861
988
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
862
989
  ));
863
990
  impl(i8, BitOr(i8)(
991
+ Output : i8,
864
992
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
865
993
  ));
866
994
  impl(i8, BitXor(i8)(
995
+ Output : i8,
867
996
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
868
997
  ));
869
998
  impl(i8, Eq(i8)(
@@ -883,31 +1012,37 @@ impl(i8, Clone(
883
1012
  clone: ((self) -> __yo_return_self(self.*))
884
1013
  ));
885
1014
  impl(i8, ComptimeAdd(i8)(
1015
+ Output : i8,
886
1016
  (+) : ((lhs, rhs) ->
887
1017
  __yo_comptime_i8_add(lhs, rhs)
888
1018
  )
889
1019
  ));
890
1020
  impl(i8, ComptimeSub(i8)(
1021
+ Output : i8,
891
1022
  (-) : ((lhs, rhs) ->
892
1023
  __yo_comptime_i8_sub(lhs, rhs)
893
1024
  )
894
1025
  ));
895
1026
  impl(i8, ComptimeMul(i8)(
1027
+ Output : i8,
896
1028
  (*) : ((lhs, rhs) ->
897
1029
  __yo_comptime_i8_mul(lhs, rhs)
898
1030
  )
899
1031
  ));
900
1032
  impl(i8, ComptimeDiv(i8)(
1033
+ Output : i8,
901
1034
  (/) : ((lhs, rhs) ->
902
1035
  __yo_comptime_i8_div(lhs, rhs)
903
1036
  )
904
1037
  ));
905
1038
  impl(i8, ComptimeMod(i8)(
1039
+ Output : i8,
906
1040
  (%) : ((lhs, rhs) ->
907
1041
  __yo_comptime_i8_mod(lhs, rhs)
908
1042
  )
909
1043
  ));
910
- impl(i8, ComptimeNegate(i8)(
1044
+ impl(i8, ComptimeNegate(
1045
+ Output : i8,
911
1046
  (neg) : (self ->
912
1047
  __yo_comptime_i8_neg(self)
913
1048
  )
@@ -935,31 +1070,37 @@ impl(i8, ComptimeOrd(i8)(
935
1070
  )
936
1071
  ));
937
1072
  impl(i8, ComptimeBitAnd(i8)(
1073
+ Output : i8,
938
1074
  (&): ((lhs, rhs) ->
939
1075
  __yo_comptime_i8_bit_and(lhs, rhs)
940
1076
  )
941
1077
  ));
942
1078
  impl(i8, ComptimeBitOr(i8)(
1079
+ Output : i8,
943
1080
  (|): ((lhs, rhs) ->
944
1081
  __yo_comptime_i8_bit_or(lhs, rhs)
945
1082
  )
946
1083
  ));
947
1084
  impl(i8, ComptimeBitXor(i8)(
1085
+ Output : i8,
948
1086
  (^): ((lhs, rhs) ->
949
1087
  __yo_comptime_i8_bit_xor(lhs, rhs)
950
1088
  )
951
1089
  ));
952
1090
  impl(i8, ComptimeBitLeftShift(i8)(
1091
+ Output : i8,
953
1092
  (<<): ((lhs, rhs) ->
954
1093
  __yo_comptime_i8_shl(lhs, rhs)
955
1094
  )
956
1095
  ));
957
1096
  impl(i8, ComptimeBitRightShift(i8)(
1097
+ Output : i8,
958
1098
  (>>): ((lhs, rhs) ->
959
1099
  __yo_comptime_i8_shr(lhs, rhs)
960
1100
  )
961
1101
  ));
962
- impl(i8, ComptimeBitNot(i8)(
1102
+ impl(i8, ComptimeBitNot(
1103
+ Output : i8,
963
1104
  (~): (self ->
964
1105
  __yo_comptime_i8_bit_not(self)
965
1106
  )
@@ -980,42 +1121,54 @@ impl(i16, Acyclic());
980
1121
  impl(i16, Comptime());
981
1122
  impl(i16, Runtime());
982
1123
  impl(i16, Add(i16)(
1124
+ Output : i16,
983
1125
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
984
1126
  ));
985
1127
  impl(i16, Sub(i16)(
1128
+ Output : i16,
986
1129
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
987
1130
  ));
988
1131
  impl(i16, Mul(i16)(
1132
+ Output : i16,
989
1133
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
990
1134
  ));
991
1135
  impl(i16, Div(i16)(
1136
+ Output : i16,
992
1137
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
993
1138
  ));
994
1139
  impl(i16, Mod(i16)(
1140
+ Output : i16,
995
1141
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
996
1142
  ));
997
- impl(i16, Negate(i16)(
1143
+ impl(i16, Negate(
1144
+ Output : i16,
998
1145
  (neg): ((self) -> __yo_op_neg(self))
999
1146
  ));
1000
1147
  impl(i16, BitLeftShift(i16)(
1148
+ Output : i16,
1001
1149
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1002
1150
  ));
1003
1151
  impl(i16, BitRightShift(i16)(
1152
+ Output : i16,
1004
1153
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1005
1154
  ));
1006
1155
  impl(i16, LogicalNot(
1007
1156
  (!): ((self) -> __yo_op_not(self))
1008
1157
  ));
1009
- impl(i16, BitNot(i16)(
1158
+ impl(i16, BitNot(
1159
+ Output : i16,
1010
1160
  (~): ((self) -> __yo_op_bit_complement(self))
1011
1161
  ));
1012
1162
  impl(i16, BitAnd(i16)(
1163
+ Output : i16,
1013
1164
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1014
1165
  ));
1015
1166
  impl(i16, BitOr(i16)(
1167
+ Output : i16,
1016
1168
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1017
1169
  ));
1018
1170
  impl(i16, BitXor(i16)(
1171
+ Output : i16,
1019
1172
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1020
1173
  ));
1021
1174
  impl(i16, Eq(i16)(
@@ -1035,31 +1188,37 @@ impl(i16, Clone(
1035
1188
  clone: ((self) -> __yo_return_self(self.*))
1036
1189
  ));
1037
1190
  impl(i16, ComptimeAdd(i16)(
1191
+ Output : i16,
1038
1192
  (+) : ((lhs, rhs) ->
1039
1193
  __yo_comptime_i16_add(lhs, rhs)
1040
1194
  )
1041
1195
  ));
1042
1196
  impl(i16, ComptimeSub(i16)(
1197
+ Output : i16,
1043
1198
  (-) : ((lhs, rhs) ->
1044
1199
  __yo_comptime_i16_sub(lhs, rhs)
1045
1200
  )
1046
1201
  ));
1047
1202
  impl(i16, ComptimeMul(i16)(
1203
+ Output : i16,
1048
1204
  (*) : ((lhs, rhs) ->
1049
1205
  __yo_comptime_i16_mul(lhs, rhs)
1050
1206
  )
1051
1207
  ));
1052
1208
  impl(i16, ComptimeDiv(i16)(
1209
+ Output : i16,
1053
1210
  (/) : ((lhs, rhs) ->
1054
1211
  __yo_comptime_i16_div(lhs, rhs)
1055
1212
  )
1056
1213
  ));
1057
1214
  impl(i16, ComptimeMod(i16)(
1215
+ Output : i16,
1058
1216
  (%) : ((lhs, rhs) ->
1059
1217
  __yo_comptime_i16_mod(lhs, rhs)
1060
1218
  )
1061
1219
  ));
1062
- impl(i16, ComptimeNegate(i16)(
1220
+ impl(i16, ComptimeNegate(
1221
+ Output : i16,
1063
1222
  (neg) : (self ->
1064
1223
  __yo_comptime_i16_neg(self)
1065
1224
  )
@@ -1087,31 +1246,37 @@ impl(i16, ComptimeOrd(i16)(
1087
1246
  )
1088
1247
  ));
1089
1248
  impl(i16, ComptimeBitAnd(i16)(
1249
+ Output : i16,
1090
1250
  (&): ((lhs, rhs) ->
1091
1251
  __yo_comptime_i16_bit_and(lhs, rhs)
1092
1252
  )
1093
1253
  ));
1094
1254
  impl(i16, ComptimeBitOr(i16)(
1255
+ Output : i16,
1095
1256
  (|): ((lhs, rhs) ->
1096
1257
  __yo_comptime_i16_bit_or(lhs, rhs)
1097
1258
  )
1098
1259
  ));
1099
1260
  impl(i16, ComptimeBitXor(i16)(
1261
+ Output : i16,
1100
1262
  (^): ((lhs, rhs) ->
1101
1263
  __yo_comptime_i16_bit_xor(lhs, rhs)
1102
1264
  )
1103
1265
  ));
1104
1266
  impl(i16, ComptimeBitLeftShift(i16)(
1267
+ Output : i16,
1105
1268
  (<<): ((lhs, rhs) ->
1106
1269
  __yo_comptime_i16_shl(lhs, rhs)
1107
1270
  )
1108
1271
  ));
1109
1272
  impl(i16, ComptimeBitRightShift(i16)(
1273
+ Output : i16,
1110
1274
  (>>): ((lhs, rhs) ->
1111
1275
  __yo_comptime_i16_shr(lhs, rhs)
1112
1276
  )
1113
1277
  ));
1114
- impl(i16, ComptimeBitNot(i16)(
1278
+ impl(i16, ComptimeBitNot(
1279
+ Output : i16,
1115
1280
  (~): (self ->
1116
1281
  __yo_comptime_i16_bit_not(self)
1117
1282
  )
@@ -1132,70 +1297,88 @@ impl(i32, Acyclic());
1132
1297
  impl(i32, Comptime());
1133
1298
  impl(i32, Runtime());
1134
1299
  impl(i32, Add(i32)(
1300
+ Output : i32,
1135
1301
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1136
1302
  ));
1137
1303
  impl(i32, Sub(i32)(
1304
+ Output : i32,
1138
1305
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1139
1306
  ));
1140
1307
  impl(i32, Mul(i32)(
1308
+ Output : i32,
1141
1309
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1142
1310
  ));
1143
1311
  impl(i32, Div(i32)(
1312
+ Output : i32,
1144
1313
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1145
1314
  ));
1146
1315
  impl(i32, Mod(i32)(
1316
+ Output : i32,
1147
1317
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1148
1318
  ));
1149
- impl(i32, Negate(i32)(
1319
+ impl(i32, Negate(
1320
+ Output : i32,
1150
1321
  (neg): ((self) -> __yo_op_neg(self))
1151
1322
  ));
1152
1323
  impl(i32, BitLeftShift(i32)(
1324
+ Output : i32,
1153
1325
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1154
1326
  ));
1155
1327
  impl(i32, BitRightShift(i32)(
1328
+ Output : i32,
1156
1329
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1157
1330
  ));
1158
1331
  impl(i32, LogicalNot(
1159
1332
  (!): ((self) -> __yo_op_not(self))
1160
1333
  ));
1161
- impl(i32, BitNot(i32)(
1334
+ impl(i32, BitNot(
1335
+ Output : i32,
1162
1336
  (~): ((self) -> __yo_op_bit_complement(self))
1163
1337
  ));
1164
1338
  impl(i32, BitAnd(i32)(
1339
+ Output : i32,
1165
1340
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1166
1341
  ));
1167
1342
  impl(i32, BitOr(i32)(
1343
+ Output : i32,
1168
1344
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1169
1345
  ));
1170
1346
  impl(i32, BitXor(i32)(
1347
+ Output : i32,
1171
1348
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1172
1349
  ));
1173
1350
  impl(i32, ComptimeBitAnd(i32)(
1351
+ Output : i32,
1174
1352
  (&): ((lhs, rhs) ->
1175
1353
  __yo_comptime_i32_bit_and(lhs, rhs)
1176
1354
  )
1177
1355
  ));
1178
1356
  impl(i32, ComptimeBitOr(i32)(
1357
+ Output : i32,
1179
1358
  (|): ((lhs, rhs) ->
1180
1359
  __yo_comptime_i32_bit_or(lhs, rhs)
1181
1360
  )
1182
1361
  ));
1183
1362
  impl(i32, ComptimeBitXor(i32)(
1363
+ Output : i32,
1184
1364
  (^): ((lhs, rhs) ->
1185
1365
  __yo_comptime_i32_bit_xor(lhs, rhs)
1186
1366
  )
1187
1367
  ));
1188
1368
  impl(i32, ComptimeBitLeftShift(i32)(
1369
+ Output : i32,
1189
1370
  (<<): ((lhs, rhs) ->
1190
1371
  __yo_comptime_i32_shl(lhs, rhs)
1191
1372
  )
1192
1373
  ));
1193
1374
  impl(i32, ComptimeBitRightShift(i32)(
1375
+ Output : i32,
1194
1376
  (>>): ((lhs, rhs) ->
1195
1377
  __yo_comptime_i32_shr(lhs, rhs)
1196
1378
  )
1197
1379
  ));
1198
- impl(i32, ComptimeBitNot(i32)(
1380
+ impl(i32, ComptimeBitNot(
1381
+ Output : i32,
1199
1382
  (~): (self ->
1200
1383
  __yo_comptime_i32_bit_not(self)
1201
1384
  )
@@ -1222,31 +1405,37 @@ impl(i32, Clone(
1222
1405
  )
1223
1406
  ));
1224
1407
  impl(i32, ComptimeAdd(i32)(
1408
+ Output : i32,
1225
1409
  (+) : ((lhs, rhs) ->
1226
1410
  __yo_comptime_i32_add(lhs, rhs)
1227
1411
  )
1228
1412
  ));
1229
1413
  impl(i32, ComptimeSub(i32)(
1414
+ Output : i32,
1230
1415
  (-) : ((lhs, rhs) ->
1231
1416
  __yo_comptime_i32_sub(lhs, rhs)
1232
1417
  )
1233
1418
  ));
1234
1419
  impl(i32, ComptimeMul(i32)(
1420
+ Output : i32,
1235
1421
  (*) : ((lhs, rhs) ->
1236
1422
  __yo_comptime_i32_mul(lhs, rhs)
1237
1423
  )
1238
1424
  ));
1239
1425
  impl(i32, ComptimeDiv(i32)(
1426
+ Output : i32,
1240
1427
  (/) : ((lhs, rhs) ->
1241
1428
  __yo_comptime_i32_div(lhs, rhs)
1242
1429
  )
1243
1430
  ));
1244
1431
  impl(i32, ComptimeMod(i32)(
1432
+ Output : i32,
1245
1433
  (%) : ((lhs, rhs) ->
1246
1434
  __yo_comptime_i32_mod(lhs, rhs)
1247
1435
  )
1248
1436
  ));
1249
- impl(i32, ComptimeNegate(i32)(
1437
+ impl(i32, ComptimeNegate(
1438
+ Output : i32,
1250
1439
  (neg) : (self ->
1251
1440
  __yo_comptime_i32_neg(self)
1252
1441
  )
@@ -1289,42 +1478,54 @@ impl(i64, Acyclic());
1289
1478
  impl(i64, Comptime());
1290
1479
  impl(i64, Runtime());
1291
1480
  impl(i64, Add(i64)(
1481
+ Output : i64,
1292
1482
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1293
1483
  ));
1294
1484
  impl(i64, Sub(i64)(
1485
+ Output : i64,
1295
1486
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1296
1487
  ));
1297
1488
  impl(i64, Mul(i64)(
1489
+ Output : i64,
1298
1490
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1299
1491
  ));
1300
1492
  impl(i64, Div(i64)(
1493
+ Output : i64,
1301
1494
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1302
1495
  ));
1303
1496
  impl(i64, Mod(i64)(
1497
+ Output : i64,
1304
1498
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1305
1499
  ));
1306
- impl(i64, Negate(i64)(
1500
+ impl(i64, Negate(
1501
+ Output : i64,
1307
1502
  (neg): ((self) -> __yo_op_neg(self))
1308
1503
  ));
1309
1504
  impl(i64, BitLeftShift(i64)(
1505
+ Output : i64,
1310
1506
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1311
1507
  ));
1312
1508
  impl(i64, BitRightShift(i64)(
1509
+ Output : i64,
1313
1510
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1314
1511
  ));
1315
1512
  impl(i64, LogicalNot(
1316
1513
  (!): ((self) -> __yo_op_not(self))
1317
1514
  ));
1318
- impl(i64, BitNot(i64)(
1515
+ impl(i64, BitNot(
1516
+ Output : i64,
1319
1517
  (~): ((self) -> __yo_op_bit_complement(self))
1320
1518
  ));
1321
1519
  impl(i64, BitAnd(i64)(
1520
+ Output : i64,
1322
1521
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1323
1522
  ));
1324
1523
  impl(i64, BitOr(i64)(
1524
+ Output : i64,
1325
1525
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1326
1526
  ));
1327
1527
  impl(i64, BitXor(i64)(
1528
+ Output : i64,
1328
1529
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1329
1530
  ));
1330
1531
  impl(i64, Eq(i64)(
@@ -1344,31 +1545,37 @@ impl(i64, Clone(
1344
1545
  clone: ((self) -> __yo_return_self(self.*))
1345
1546
  ));
1346
1547
  impl(i64, ComptimeAdd(i64)(
1548
+ Output : i64,
1347
1549
  (+) : ((lhs, rhs) ->
1348
1550
  __yo_comptime_i64_add(lhs, rhs)
1349
1551
  )
1350
1552
  ));
1351
1553
  impl(i64, ComptimeSub(i64)(
1554
+ Output : i64,
1352
1555
  (-) : ((lhs, rhs) ->
1353
1556
  __yo_comptime_i64_sub(lhs, rhs)
1354
1557
  )
1355
1558
  ));
1356
1559
  impl(i64, ComptimeMul(i64)(
1560
+ Output : i64,
1357
1561
  (*) : ((lhs, rhs) ->
1358
1562
  __yo_comptime_i64_mul(lhs, rhs)
1359
1563
  )
1360
1564
  ));
1361
1565
  impl(i64, ComptimeDiv(i64)(
1566
+ Output : i64,
1362
1567
  (/) : ((lhs, rhs) ->
1363
1568
  __yo_comptime_i64_div(lhs, rhs)
1364
1569
  )
1365
1570
  ));
1366
1571
  impl(i64, ComptimeMod(i64)(
1572
+ Output : i64,
1367
1573
  (%) : ((lhs, rhs) ->
1368
1574
  __yo_comptime_i64_mod(lhs, rhs)
1369
1575
  )
1370
1576
  ));
1371
- impl(i64, ComptimeNegate(i64)(
1577
+ impl(i64, ComptimeNegate(
1578
+ Output : i64,
1372
1579
  (neg) : (self ->
1373
1580
  __yo_comptime_i64_neg(self)
1374
1581
  )
@@ -1396,31 +1603,37 @@ impl(i64, ComptimeOrd(i64)(
1396
1603
  )
1397
1604
  ));
1398
1605
  impl(i64, ComptimeBitAnd(i64)(
1606
+ Output : i64,
1399
1607
  (&): ((lhs, rhs) ->
1400
1608
  __yo_comptime_i64_bit_and(lhs, rhs)
1401
1609
  )
1402
1610
  ));
1403
1611
  impl(i64, ComptimeBitOr(i64)(
1612
+ Output : i64,
1404
1613
  (|): ((lhs, rhs) ->
1405
1614
  __yo_comptime_i64_bit_or(lhs, rhs)
1406
1615
  )
1407
1616
  ));
1408
1617
  impl(i64, ComptimeBitXor(i64)(
1618
+ Output : i64,
1409
1619
  (^): ((lhs, rhs) ->
1410
1620
  __yo_comptime_i64_bit_xor(lhs, rhs)
1411
1621
  )
1412
1622
  ));
1413
1623
  impl(i64, ComptimeBitLeftShift(i64)(
1624
+ Output : i64,
1414
1625
  (<<): ((lhs, rhs) ->
1415
1626
  __yo_comptime_i64_shl(lhs, rhs)
1416
1627
  )
1417
1628
  ));
1418
1629
  impl(i64, ComptimeBitRightShift(i64)(
1630
+ Output : i64,
1419
1631
  (>>): ((lhs, rhs) ->
1420
1632
  __yo_comptime_i64_shr(lhs, rhs)
1421
1633
  )
1422
1634
  ));
1423
- impl(i64, ComptimeBitNot(i64)(
1635
+ impl(i64, ComptimeBitNot(
1636
+ Output : i64,
1424
1637
  (~): (self ->
1425
1638
  __yo_comptime_i64_bit_not(self)
1426
1639
  )
@@ -1441,42 +1654,54 @@ impl(u8, Acyclic());
1441
1654
  impl(u8, Comptime());
1442
1655
  impl(u8, Runtime());
1443
1656
  impl(u8, Add(u8)(
1657
+ Output : u8,
1444
1658
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1445
1659
  ));
1446
1660
  impl(u8, Sub(u8)(
1661
+ Output : u8,
1447
1662
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1448
1663
  ));
1449
1664
  impl(u8, Mul(u8)(
1665
+ Output : u8,
1450
1666
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1451
1667
  ));
1452
1668
  impl(u8, Div(u8)(
1669
+ Output : u8,
1453
1670
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1454
1671
  ));
1455
1672
  impl(u8, Mod(u8)(
1673
+ Output : u8,
1456
1674
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1457
1675
  ));
1458
- impl(u8, Negate(u8)(
1676
+ impl(u8, Negate(
1677
+ Output : u8,
1459
1678
  (neg): ((self) -> __yo_op_neg(self))
1460
1679
  ));
1461
1680
  impl(u8, BitLeftShift(u8)(
1681
+ Output : u8,
1462
1682
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1463
1683
  ));
1464
1684
  impl(u8, BitRightShift(u8)(
1685
+ Output : u8,
1465
1686
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1466
1687
  ));
1467
1688
  impl(u8, LogicalNot(
1468
1689
  (!): ((self) -> __yo_op_not(self))
1469
1690
  ));
1470
- impl(u8, BitNot(u8)(
1691
+ impl(u8, BitNot(
1692
+ Output : u8,
1471
1693
  (~): ((self) -> __yo_op_bit_complement(self))
1472
1694
  ));
1473
1695
  impl(u8, BitAnd(u8)(
1696
+ Output : u8,
1474
1697
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1475
1698
  ));
1476
1699
  impl(u8, BitOr(u8)(
1700
+ Output : u8,
1477
1701
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1478
1702
  ));
1479
1703
  impl(u8, BitXor(u8)(
1704
+ Output : u8,
1480
1705
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1481
1706
  ));
1482
1707
  impl(u8, Eq(u8)(
@@ -1496,26 +1721,31 @@ impl(u8, Clone(
1496
1721
  clone: ((self) -> __yo_return_self(self.*))
1497
1722
  ));
1498
1723
  impl(u8, ComptimeAdd(u8)(
1724
+ Output : u8,
1499
1725
  (+) : ((lhs, rhs) ->
1500
1726
  __yo_comptime_u8_add(lhs, rhs)
1501
1727
  )
1502
1728
  ));
1503
1729
  impl(u8, ComptimeSub(u8)(
1730
+ Output : u8,
1504
1731
  (-) : ((lhs, rhs) ->
1505
1732
  __yo_comptime_u8_sub(lhs, rhs)
1506
1733
  )
1507
1734
  ));
1508
1735
  impl(u8, ComptimeMul(u8)(
1736
+ Output : u8,
1509
1737
  (*) : ((lhs, rhs) ->
1510
1738
  __yo_comptime_u8_mul(lhs, rhs)
1511
1739
  )
1512
1740
  ));
1513
1741
  impl(u8, ComptimeDiv(u8)(
1742
+ Output : u8,
1514
1743
  (/) : ((lhs, rhs) ->
1515
1744
  __yo_comptime_u8_div(lhs, rhs)
1516
1745
  )
1517
1746
  ));
1518
1747
  impl(u8, ComptimeMod(u8)(
1748
+ Output : u8,
1519
1749
  (%) : ((lhs, rhs) ->
1520
1750
  __yo_comptime_u8_mod(lhs, rhs)
1521
1751
  )
@@ -1543,31 +1773,37 @@ impl(u8, ComptimeOrd(u8)(
1543
1773
  )
1544
1774
  ));
1545
1775
  impl(u8, ComptimeBitAnd(u8)(
1776
+ Output : u8,
1546
1777
  (&): ((lhs, rhs) ->
1547
1778
  __yo_comptime_u8_bit_and(lhs, rhs)
1548
1779
  )
1549
1780
  ));
1550
1781
  impl(u8, ComptimeBitOr(u8)(
1782
+ Output : u8,
1551
1783
  (|): ((lhs, rhs) ->
1552
1784
  __yo_comptime_u8_bit_or(lhs, rhs)
1553
1785
  )
1554
1786
  ));
1555
1787
  impl(u8, ComptimeBitXor(u8)(
1788
+ Output : u8,
1556
1789
  (^): ((lhs, rhs) ->
1557
1790
  __yo_comptime_u8_bit_xor(lhs, rhs)
1558
1791
  )
1559
1792
  ));
1560
1793
  impl(u8, ComptimeBitLeftShift(u8)(
1794
+ Output : u8,
1561
1795
  (<<): ((lhs, rhs) ->
1562
1796
  __yo_comptime_u8_shl(lhs, rhs)
1563
1797
  )
1564
1798
  ));
1565
1799
  impl(u8, ComptimeBitRightShift(u8)(
1800
+ Output : u8,
1566
1801
  (>>): ((lhs, rhs) ->
1567
1802
  __yo_comptime_u8_shr(lhs, rhs)
1568
1803
  )
1569
1804
  ));
1570
- impl(u8, ComptimeBitNot(u8)(
1805
+ impl(u8, ComptimeBitNot(
1806
+ Output : u8,
1571
1807
  (~): (self ->
1572
1808
  __yo_comptime_u8_bit_not(self)
1573
1809
  )
@@ -1588,42 +1824,54 @@ impl(u16, Acyclic());
1588
1824
  impl(u16, Comptime());
1589
1825
  impl(u16, Runtime());
1590
1826
  impl(u16, Add(u16)(
1827
+ Output : u16,
1591
1828
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1592
1829
  ));
1593
1830
  impl(u16, Sub(u16)(
1831
+ Output : u16,
1594
1832
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1595
1833
  ));
1596
1834
  impl(u16, Mul(u16)(
1835
+ Output : u16,
1597
1836
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1598
1837
  ));
1599
1838
  impl(u16, Div(u16)(
1839
+ Output : u16,
1600
1840
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1601
1841
  ));
1602
1842
  impl(u16, Mod(u16)(
1843
+ Output : u16,
1603
1844
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1604
1845
  ));
1605
- impl(u16, Negate(u16)(
1846
+ impl(u16, Negate(
1847
+ Output : u16,
1606
1848
  (neg): ((self) -> __yo_op_neg(self))
1607
1849
  ));
1608
1850
  impl(u16, BitLeftShift(u16)(
1851
+ Output : u16,
1609
1852
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1610
1853
  ));
1611
1854
  impl(u16, BitRightShift(u16)(
1855
+ Output : u16,
1612
1856
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1613
1857
  ));
1614
1858
  impl(u16, LogicalNot(
1615
1859
  (!): ((self) -> __yo_op_not(self))
1616
1860
  ));
1617
- impl(u16, BitNot(u16)(
1861
+ impl(u16, BitNot(
1862
+ Output : u16,
1618
1863
  (~): ((self) -> __yo_op_bit_complement(self))
1619
1864
  ));
1620
1865
  impl(u16, BitAnd(u16)(
1866
+ Output : u16,
1621
1867
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1622
1868
  ));
1623
1869
  impl(u16, BitOr(u16)(
1870
+ Output : u16,
1624
1871
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1625
1872
  ));
1626
1873
  impl(u16, BitXor(u16)(
1874
+ Output : u16,
1627
1875
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1628
1876
  ));
1629
1877
  impl(u16, Eq(u16)(
@@ -1643,26 +1891,31 @@ impl(u16, Clone(
1643
1891
  clone: ((self) -> __yo_return_self(self.*))
1644
1892
  ));
1645
1893
  impl(u16, ComptimeAdd(u16)(
1894
+ Output : u16,
1646
1895
  (+) : ((lhs, rhs) ->
1647
1896
  __yo_comptime_u16_add(lhs, rhs)
1648
1897
  )
1649
1898
  ));
1650
1899
  impl(u16, ComptimeSub(u16)(
1900
+ Output : u16,
1651
1901
  (-) : ((lhs, rhs) ->
1652
1902
  __yo_comptime_u16_sub(lhs, rhs)
1653
1903
  )
1654
1904
  ));
1655
1905
  impl(u16, ComptimeMul(u16)(
1906
+ Output : u16,
1656
1907
  (*) : ((lhs, rhs) ->
1657
1908
  __yo_comptime_u16_mul(lhs, rhs)
1658
1909
  )
1659
1910
  ));
1660
1911
  impl(u16, ComptimeDiv(u16)(
1912
+ Output : u16,
1661
1913
  (/) : ((lhs, rhs) ->
1662
1914
  __yo_comptime_u16_div(lhs, rhs)
1663
1915
  )
1664
1916
  ));
1665
1917
  impl(u16, ComptimeMod(u16)(
1918
+ Output : u16,
1666
1919
  (%) : ((lhs, rhs) ->
1667
1920
  __yo_comptime_u16_mod(lhs, rhs)
1668
1921
  )
@@ -1690,31 +1943,37 @@ impl(u16, ComptimeOrd(u16)(
1690
1943
  )
1691
1944
  ));
1692
1945
  impl(u16, ComptimeBitAnd(u16)(
1946
+ Output : u16,
1693
1947
  (&): ((lhs, rhs) ->
1694
1948
  __yo_comptime_u16_bit_and(lhs, rhs)
1695
1949
  )
1696
1950
  ));
1697
1951
  impl(u16, ComptimeBitOr(u16)(
1952
+ Output : u16,
1698
1953
  (|): ((lhs, rhs) ->
1699
1954
  __yo_comptime_u16_bit_or(lhs, rhs)
1700
1955
  )
1701
1956
  ));
1702
1957
  impl(u16, ComptimeBitXor(u16)(
1958
+ Output : u16,
1703
1959
  (^): ((lhs, rhs) ->
1704
1960
  __yo_comptime_u16_bit_xor(lhs, rhs)
1705
1961
  )
1706
1962
  ));
1707
1963
  impl(u16, ComptimeBitLeftShift(u16)(
1964
+ Output : u16,
1708
1965
  (<<): ((lhs, rhs) ->
1709
1966
  __yo_comptime_u16_shl(lhs, rhs)
1710
1967
  )
1711
1968
  ));
1712
1969
  impl(u16, ComptimeBitRightShift(u16)(
1970
+ Output : u16,
1713
1971
  (>>): ((lhs, rhs) ->
1714
1972
  __yo_comptime_u16_shr(lhs, rhs)
1715
1973
  )
1716
1974
  ));
1717
- impl(u16, ComptimeBitNot(u16)(
1975
+ impl(u16, ComptimeBitNot(
1976
+ Output : u16,
1718
1977
  (~): (self ->
1719
1978
  __yo_comptime_u16_bit_not(self)
1720
1979
  )
@@ -1735,42 +1994,54 @@ impl(u32, Acyclic());
1735
1994
  impl(u32, Comptime());
1736
1995
  impl(u32, Runtime());
1737
1996
  impl(u32, Add(u32)(
1997
+ Output : u32,
1738
1998
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1739
1999
  ));
1740
2000
  impl(u32, Sub(u32)(
2001
+ Output : u32,
1741
2002
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1742
2003
  ));
1743
2004
  impl(u32, Mul(u32)(
2005
+ Output : u32,
1744
2006
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1745
2007
  ));
1746
2008
  impl(u32, Div(u32)(
2009
+ Output : u32,
1747
2010
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1748
2011
  ));
1749
2012
  impl(u32, Mod(u32)(
2013
+ Output : u32,
1750
2014
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1751
2015
  ));
1752
- impl(u32, Negate(u32)(
2016
+ impl(u32, Negate(
2017
+ Output : u32,
1753
2018
  (neg): ((self) -> __yo_op_neg(self))
1754
2019
  ));
1755
2020
  impl(u32, BitLeftShift(u32)(
2021
+ Output : u32,
1756
2022
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1757
2023
  ));
1758
2024
  impl(u32, BitRightShift(u32)(
2025
+ Output : u32,
1759
2026
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1760
2027
  ));
1761
2028
  impl(u32, LogicalNot(
1762
2029
  (!): ((self) -> __yo_op_not(self))
1763
2030
  ));
1764
- impl(u32, BitNot(u32)(
2031
+ impl(u32, BitNot(
2032
+ Output : u32,
1765
2033
  (~): ((self) -> __yo_op_bit_complement(self))
1766
2034
  ));
1767
2035
  impl(u32, BitAnd(u32)(
2036
+ Output : u32,
1768
2037
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1769
2038
  ));
1770
2039
  impl(u32, BitOr(u32)(
2040
+ Output : u32,
1771
2041
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1772
2042
  ));
1773
2043
  impl(u32, BitXor(u32)(
2044
+ Output : u32,
1774
2045
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1775
2046
  ));
1776
2047
  impl(u32, Eq(u32)(
@@ -1790,26 +2061,31 @@ impl(u32, Clone(
1790
2061
  clone: ((self) -> __yo_return_self(self.*))
1791
2062
  ));
1792
2063
  impl(u32, ComptimeAdd(u32)(
2064
+ Output : u32,
1793
2065
  (+) : ((lhs, rhs) ->
1794
2066
  __yo_comptime_u32_add(lhs, rhs)
1795
2067
  )
1796
2068
  ));
1797
2069
  impl(u32, ComptimeSub(u32)(
2070
+ Output : u32,
1798
2071
  (-) : ((lhs, rhs) ->
1799
2072
  __yo_comptime_u32_sub(lhs, rhs)
1800
2073
  )
1801
2074
  ));
1802
2075
  impl(u32, ComptimeMul(u32)(
2076
+ Output : u32,
1803
2077
  (*) : ((lhs, rhs) ->
1804
2078
  __yo_comptime_u32_mul(lhs, rhs)
1805
2079
  )
1806
2080
  ));
1807
2081
  impl(u32, ComptimeDiv(u32)(
2082
+ Output : u32,
1808
2083
  (/) : ((lhs, rhs) ->
1809
2084
  __yo_comptime_u32_div(lhs, rhs)
1810
2085
  )
1811
2086
  ));
1812
2087
  impl(u32, ComptimeMod(u32)(
2088
+ Output : u32,
1813
2089
  (%) : ((lhs, rhs) ->
1814
2090
  __yo_comptime_u32_mod(lhs, rhs)
1815
2091
  )
@@ -1837,31 +2113,37 @@ impl(u32, ComptimeOrd(u32)(
1837
2113
  )
1838
2114
  ));
1839
2115
  impl(u32, ComptimeBitAnd(u32)(
2116
+ Output : u32,
1840
2117
  (&): ((lhs, rhs) ->
1841
2118
  __yo_comptime_u32_bit_and(lhs, rhs)
1842
2119
  )
1843
2120
  ));
1844
2121
  impl(u32, ComptimeBitOr(u32)(
2122
+ Output : u32,
1845
2123
  (|): ((lhs, rhs) ->
1846
2124
  __yo_comptime_u32_bit_or(lhs, rhs)
1847
2125
  )
1848
2126
  ));
1849
2127
  impl(u32, ComptimeBitXor(u32)(
2128
+ Output : u32,
1850
2129
  (^): ((lhs, rhs) ->
1851
2130
  __yo_comptime_u32_bit_xor(lhs, rhs)
1852
2131
  )
1853
2132
  ));
1854
2133
  impl(u32, ComptimeBitLeftShift(u32)(
2134
+ Output : u32,
1855
2135
  (<<): ((lhs, rhs) ->
1856
2136
  __yo_comptime_u32_shl(lhs, rhs)
1857
2137
  )
1858
2138
  ));
1859
2139
  impl(u32, ComptimeBitRightShift(u32)(
2140
+ Output : u32,
1860
2141
  (>>): ((lhs, rhs) ->
1861
2142
  __yo_comptime_u32_shr(lhs, rhs)
1862
2143
  )
1863
2144
  ));
1864
- impl(u32, ComptimeBitNot(u32)(
2145
+ impl(u32, ComptimeBitNot(
2146
+ Output : u32,
1865
2147
  (~): (self ->
1866
2148
  __yo_comptime_u32_bit_not(self)
1867
2149
  )
@@ -1882,42 +2164,54 @@ impl(u64, Acyclic());
1882
2164
  impl(u64, Comptime());
1883
2165
  impl(u64, Runtime());
1884
2166
  impl(u64, Add(u64)(
2167
+ Output : u64,
1885
2168
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
1886
2169
  ));
1887
2170
  impl(u64, Sub(u64)(
2171
+ Output : u64,
1888
2172
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
1889
2173
  ));
1890
2174
  impl(u64, Mul(u64)(
2175
+ Output : u64,
1891
2176
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
1892
2177
  ));
1893
2178
  impl(u64, Div(u64)(
2179
+ Output : u64,
1894
2180
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
1895
2181
  ));
1896
2182
  impl(u64, Mod(u64)(
2183
+ Output : u64,
1897
2184
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
1898
2185
  ));
1899
- impl(u64, Negate(u64)(
2186
+ impl(u64, Negate(
2187
+ Output : u64,
1900
2188
  (neg): ((self) -> __yo_op_neg(self))
1901
2189
  ));
1902
2190
  impl(u64, BitLeftShift(u64)(
2191
+ Output : u64,
1903
2192
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
1904
2193
  ));
1905
2194
  impl(u64, BitRightShift(u64)(
2195
+ Output : u64,
1906
2196
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
1907
2197
  ));
1908
2198
  impl(u64, LogicalNot(
1909
2199
  (!): ((self) -> __yo_op_not(self))
1910
2200
  ));
1911
- impl(u64, BitNot(u64)(
2201
+ impl(u64, BitNot(
2202
+ Output : u64,
1912
2203
  (~): ((self) -> __yo_op_bit_complement(self))
1913
2204
  ));
1914
2205
  impl(u64, BitAnd(u64)(
2206
+ Output : u64,
1915
2207
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
1916
2208
  ));
1917
2209
  impl(u64, BitOr(u64)(
2210
+ Output : u64,
1918
2211
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
1919
2212
  ));
1920
2213
  impl(u64, BitXor(u64)(
2214
+ Output : u64,
1921
2215
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
1922
2216
  ));
1923
2217
  impl(u64, Eq(u64)(
@@ -1937,26 +2231,31 @@ impl(u64, Clone(
1937
2231
  clone: ((self) -> __yo_return_self(self.*))
1938
2232
  ));
1939
2233
  impl(u64, ComptimeAdd(u64)(
2234
+ Output : u64,
1940
2235
  (+) : ((lhs, rhs) ->
1941
2236
  __yo_comptime_u64_add(lhs, rhs)
1942
2237
  )
1943
2238
  ));
1944
2239
  impl(u64, ComptimeSub(u64)(
2240
+ Output : u64,
1945
2241
  (-) : ((lhs, rhs) ->
1946
2242
  __yo_comptime_u64_sub(lhs, rhs)
1947
2243
  )
1948
2244
  ));
1949
2245
  impl(u64, ComptimeMul(u64)(
2246
+ Output : u64,
1950
2247
  (*) : ((lhs, rhs) ->
1951
2248
  __yo_comptime_u64_mul(lhs, rhs)
1952
2249
  )
1953
2250
  ));
1954
2251
  impl(u64, ComptimeDiv(u64)(
2252
+ Output : u64,
1955
2253
  (/) : ((lhs, rhs) ->
1956
2254
  __yo_comptime_u64_div(lhs, rhs)
1957
2255
  )
1958
2256
  ));
1959
2257
  impl(u64, ComptimeMod(u64)(
2258
+ Output : u64,
1960
2259
  (%) : ((lhs, rhs) ->
1961
2260
  __yo_comptime_u64_mod(lhs, rhs)
1962
2261
  )
@@ -1984,31 +2283,37 @@ impl(u64, ComptimeOrd(u64)(
1984
2283
  )
1985
2284
  ));
1986
2285
  impl(u64, ComptimeBitAnd(u64)(
2286
+ Output : u64,
1987
2287
  (&): ((lhs, rhs) ->
1988
2288
  __yo_comptime_u64_bit_and(lhs, rhs)
1989
2289
  )
1990
2290
  ));
1991
2291
  impl(u64, ComptimeBitOr(u64)(
2292
+ Output : u64,
1992
2293
  (|): ((lhs, rhs) ->
1993
2294
  __yo_comptime_u64_bit_or(lhs, rhs)
1994
2295
  )
1995
2296
  ));
1996
2297
  impl(u64, ComptimeBitXor(u64)(
2298
+ Output : u64,
1997
2299
  (^): ((lhs, rhs) ->
1998
2300
  __yo_comptime_u64_bit_xor(lhs, rhs)
1999
2301
  )
2000
2302
  ));
2001
2303
  impl(u64, ComptimeBitLeftShift(u64)(
2304
+ Output : u64,
2002
2305
  (<<): ((lhs, rhs) ->
2003
2306
  __yo_comptime_u64_shl(lhs, rhs)
2004
2307
  )
2005
2308
  ));
2006
2309
  impl(u64, ComptimeBitRightShift(u64)(
2310
+ Output : u64,
2007
2311
  (>>): ((lhs, rhs) ->
2008
2312
  __yo_comptime_u64_shr(lhs, rhs)
2009
2313
  )
2010
2314
  ));
2011
- impl(u64, ComptimeBitNot(u64)(
2315
+ impl(u64, ComptimeBitNot(
2316
+ Output : u64,
2012
2317
  (~): (fn(comptime(self): u64) -> comptime(u64))(
2013
2318
  __yo_comptime_u64_bit_not(self)
2014
2319
  )
@@ -2025,36 +2330,46 @@ impl(f32, Acyclic());
2025
2330
  impl(f32, Comptime());
2026
2331
  impl(f32, Runtime());
2027
2332
  impl(f32, Add(f32)(
2333
+ Output : f32,
2028
2334
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2029
2335
  ));
2030
2336
  impl(f32, Sub(f32)(
2337
+ Output : f32,
2031
2338
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2032
2339
  ));
2033
2340
  impl(f32, Mul(f32)(
2341
+ Output : f32,
2034
2342
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2035
2343
  ));
2036
2344
  impl(f32, Div(f32)(
2345
+ Output : f32,
2037
2346
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2038
2347
  ));
2039
2348
  impl(f32, Mod(f32)(
2349
+ Output : f32,
2040
2350
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2041
2351
  ));
2042
- impl(f32, Negate(f32)(
2352
+ impl(f32, Negate(
2353
+ Output : f32,
2043
2354
  (neg): ((self) -> __yo_op_neg(self))
2044
2355
  ));
2045
2356
  impl(f32, LogicalNot(
2046
2357
  (!): ((self) -> __yo_op_not(self))
2047
2358
  ));
2048
- impl(f32, BitNot(f32)(
2359
+ impl(f32, BitNot(
2360
+ Output : f32,
2049
2361
  (~): ((self) -> __yo_op_bit_complement(self))
2050
2362
  ));
2051
2363
  impl(f32, BitAnd(f32)(
2364
+ Output : f32,
2052
2365
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2053
2366
  ));
2054
2367
  impl(f32, BitOr(f32)(
2368
+ Output : f32,
2055
2369
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2056
2370
  ));
2057
2371
  impl(f32, BitXor(f32)(
2372
+ Output : f32,
2058
2373
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2059
2374
  ));
2060
2375
  impl(f32, Eq(f32)(
@@ -2074,26 +2389,31 @@ impl(f32, Clone(
2074
2389
  clone: ((self) -> __yo_return_self(self.*))
2075
2390
  ));
2076
2391
  impl(f32, ComptimeAdd(f32)(
2392
+ Output : f32,
2077
2393
  (+) : ((lhs, rhs) ->
2078
2394
  __yo_comptime_f32_add(lhs, rhs)
2079
2395
  )
2080
2396
  ));
2081
2397
  impl(f32, ComptimeSub(f32)(
2398
+ Output : f32,
2082
2399
  (-) : ((lhs, rhs) ->
2083
2400
  __yo_comptime_f32_sub(lhs, rhs)
2084
2401
  )
2085
2402
  ));
2086
2403
  impl(f32, ComptimeMul(f32)(
2404
+ Output : f32,
2087
2405
  (*) : ((lhs, rhs) ->
2088
2406
  __yo_comptime_f32_mul(lhs, rhs)
2089
2407
  )
2090
2408
  ));
2091
2409
  impl(f32, ComptimeDiv(f32)(
2410
+ Output : f32,
2092
2411
  (/) : ((lhs, rhs) ->
2093
2412
  __yo_comptime_f32_div(lhs, rhs)
2094
2413
  )
2095
2414
  ));
2096
- impl(f32, ComptimeNegate(f32)(
2415
+ impl(f32, ComptimeNegate(
2416
+ Output : f32,
2097
2417
  (neg) : (self ->
2098
2418
  __yo_comptime_f32_neg(self)
2099
2419
  )
@@ -2132,36 +2452,46 @@ impl(f64, Acyclic());
2132
2452
  impl(f64, Comptime());
2133
2453
  impl(f64, Runtime());
2134
2454
  impl(f64, Add(f64)(
2455
+ Output : f64,
2135
2456
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2136
2457
  ));
2137
2458
  impl(f64, Sub(f64)(
2459
+ Output : f64,
2138
2460
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2139
2461
  ));
2140
2462
  impl(f64, Mul(f64)(
2463
+ Output : f64,
2141
2464
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2142
2465
  ));
2143
2466
  impl(f64, Div(f64)(
2467
+ Output : f64,
2144
2468
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2145
2469
  ));
2146
2470
  impl(f64, Mod(f64)(
2471
+ Output : f64,
2147
2472
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2148
2473
  ));
2149
- impl(f64, Negate(f64)(
2474
+ impl(f64, Negate(
2475
+ Output : f64,
2150
2476
  (neg): ((self) -> __yo_op_neg(self))
2151
2477
  ));
2152
2478
  impl(f64, LogicalNot(
2153
2479
  (!): ((self) -> __yo_op_not(self))
2154
2480
  ));
2155
- impl(f64, BitNot(f64)(
2481
+ impl(f64, BitNot(
2482
+ Output : f64,
2156
2483
  (~): ((self) -> __yo_op_bit_complement(self))
2157
2484
  ));
2158
2485
  impl(f64, BitAnd(f64)(
2486
+ Output : f64,
2159
2487
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2160
2488
  ));
2161
2489
  impl(f64, BitOr(f64)(
2490
+ Output : f64,
2162
2491
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2163
2492
  ));
2164
2493
  impl(f64, BitXor(f64)(
2494
+ Output : f64,
2165
2495
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2166
2496
  ));
2167
2497
  impl(f64, Eq(f64)(
@@ -2181,26 +2511,31 @@ impl(f64, Clone(
2181
2511
  clone: ((self) -> __yo_return_self(self.*))
2182
2512
  ));
2183
2513
  impl(f64, ComptimeAdd(f64)(
2514
+ Output : f64,
2184
2515
  (+) : ((lhs, rhs) ->
2185
2516
  __yo_comptime_f64_add(lhs, rhs)
2186
2517
  )
2187
2518
  ));
2188
2519
  impl(f64, ComptimeSub(f64)(
2520
+ Output : f64,
2189
2521
  (-) : ((lhs, rhs) ->
2190
2522
  __yo_comptime_f64_sub(lhs, rhs)
2191
2523
  )
2192
2524
  ));
2193
2525
  impl(f64, ComptimeMul(f64)(
2526
+ Output : f64,
2194
2527
  (*) : ((lhs, rhs) ->
2195
2528
  __yo_comptime_f64_mul(lhs, rhs)
2196
2529
  )
2197
2530
  ));
2198
2531
  impl(f64, ComptimeDiv(f64)(
2532
+ Output : f64,
2199
2533
  (/) : ((lhs, rhs) ->
2200
2534
  __yo_comptime_f64_div(lhs, rhs)
2201
2535
  )
2202
2536
  ));
2203
- impl(f64, ComptimeNegate(f64)(
2537
+ impl(f64, ComptimeNegate(
2538
+ Output : f64,
2204
2539
  (neg) : (self ->
2205
2540
  __yo_comptime_f64_neg(self)
2206
2541
  )
@@ -2249,42 +2584,54 @@ impl(isize, Acyclic());
2249
2584
  impl(isize, Comptime());
2250
2585
  impl(isize, Runtime());
2251
2586
  impl(isize, Add(isize)(
2587
+ Output : isize,
2252
2588
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2253
2589
  ));
2254
2590
  impl(isize, Sub(isize)(
2591
+ Output : isize,
2255
2592
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2256
2593
  ));
2257
2594
  impl(isize, Mul(isize)(
2595
+ Output : isize,
2258
2596
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2259
2597
  ));
2260
2598
  impl(isize, Div(isize)(
2599
+ Output : isize,
2261
2600
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2262
2601
  ));
2263
2602
  impl(isize, Mod(isize)(
2603
+ Output : isize,
2264
2604
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2265
2605
  ));
2266
- impl(isize, Negate(isize)(
2606
+ impl(isize, Negate(
2607
+ Output : isize,
2267
2608
  (neg): ((self) -> __yo_op_neg(self))
2268
2609
  ));
2269
2610
  impl(isize, BitLeftShift(isize)(
2611
+ Output : isize,
2270
2612
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
2271
2613
  ));
2272
2614
  impl(isize, BitRightShift(isize)(
2615
+ Output : isize,
2273
2616
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
2274
2617
  ));
2275
2618
  impl(isize, LogicalNot(
2276
2619
  (!): ((self) -> __yo_op_not(self))
2277
2620
  ));
2278
- impl(isize, BitNot(isize)(
2621
+ impl(isize, BitNot(
2622
+ Output : isize,
2279
2623
  (~): ((self) -> __yo_op_bit_complement(self))
2280
2624
  ));
2281
2625
  impl(isize, BitAnd(isize)(
2626
+ Output : isize,
2282
2627
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2283
2628
  ));
2284
2629
  impl(isize, BitOr(isize)(
2630
+ Output : isize,
2285
2631
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2286
2632
  ));
2287
2633
  impl(isize, BitXor(isize)(
2634
+ Output : isize,
2288
2635
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2289
2636
  ));
2290
2637
  impl(isize, Eq(isize)(
@@ -2304,31 +2651,37 @@ impl(isize, Clone(
2304
2651
  clone: ((self) -> __yo_return_self(self.*))
2305
2652
  ));
2306
2653
  impl(isize, ComptimeAdd(isize)(
2654
+ Output : isize,
2307
2655
  (+) : ((lhs, rhs) ->
2308
2656
  __yo_comptime_isize_add(lhs, rhs)
2309
2657
  )
2310
2658
  ));
2311
2659
  impl(isize, ComptimeSub(isize)(
2660
+ Output : isize,
2312
2661
  (-) : ((lhs, rhs) ->
2313
2662
  __yo_comptime_isize_sub(lhs, rhs)
2314
2663
  )
2315
2664
  ));
2316
2665
  impl(isize, ComptimeMul(isize)(
2666
+ Output : isize,
2317
2667
  (*) : ((lhs, rhs) ->
2318
2668
  __yo_comptime_isize_mul(lhs, rhs)
2319
2669
  )
2320
2670
  ));
2321
2671
  impl(isize, ComptimeDiv(isize)(
2672
+ Output : isize,
2322
2673
  (/) : ((lhs, rhs) ->
2323
2674
  __yo_comptime_isize_div(lhs, rhs)
2324
2675
  )
2325
2676
  ));
2326
2677
  impl(isize, ComptimeMod(isize)(
2678
+ Output : isize,
2327
2679
  (%) : ((lhs, rhs) ->
2328
2680
  __yo_comptime_isize_mod(lhs, rhs)
2329
2681
  )
2330
2682
  ));
2331
- impl(isize, ComptimeNegate(isize)(
2683
+ impl(isize, ComptimeNegate(
2684
+ Output : isize,
2332
2685
  (neg) : (self ->
2333
2686
  __yo_comptime_isize_neg(self)
2334
2687
  )
@@ -2356,31 +2709,37 @@ impl(isize, ComptimeOrd(isize)(
2356
2709
  )
2357
2710
  ));
2358
2711
  impl(isize, ComptimeBitAnd(isize)(
2712
+ Output : isize,
2359
2713
  (&): ((lhs, rhs) ->
2360
2714
  __yo_comptime_isize_bit_and(lhs, rhs)
2361
2715
  )
2362
2716
  ));
2363
2717
  impl(isize, ComptimeBitOr(isize)(
2718
+ Output : isize,
2364
2719
  (|): ((lhs, rhs) ->
2365
2720
  __yo_comptime_isize_bit_or(lhs, rhs)
2366
2721
  )
2367
2722
  ));
2368
2723
  impl(isize, ComptimeBitXor(isize)(
2724
+ Output : isize,
2369
2725
  (^): ((lhs, rhs) ->
2370
2726
  __yo_comptime_isize_bit_xor(lhs, rhs)
2371
2727
  )
2372
2728
  ));
2373
2729
  impl(isize, ComptimeBitLeftShift(isize)(
2730
+ Output : isize,
2374
2731
  (<<): ((lhs, rhs) ->
2375
2732
  __yo_comptime_isize_shl(lhs, rhs)
2376
2733
  )
2377
2734
  ));
2378
2735
  impl(isize, ComptimeBitRightShift(isize)(
2736
+ Output : isize,
2379
2737
  (>>): ((lhs, rhs) ->
2380
2738
  __yo_comptime_isize_shr(lhs, rhs)
2381
2739
  )
2382
2740
  ));
2383
- impl(isize, ComptimeBitNot(isize)(
2741
+ impl(isize, ComptimeBitNot(
2742
+ Output : isize,
2384
2743
  (~): (self ->
2385
2744
  __yo_comptime_isize_bit_not(self)
2386
2745
  )
@@ -2404,42 +2763,54 @@ impl(usize, Acyclic());
2404
2763
  impl(usize, Comptime());
2405
2764
  impl(usize, Runtime());
2406
2765
  impl(usize, Add(usize)(
2766
+ Output : usize,
2407
2767
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2408
2768
  ));
2409
2769
  impl(usize, Sub(usize)(
2770
+ Output : usize,
2410
2771
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2411
2772
  ));
2412
2773
  impl(usize, Mul(usize)(
2774
+ Output : usize,
2413
2775
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2414
2776
  ));
2415
2777
  impl(usize, Div(usize)(
2778
+ Output : usize,
2416
2779
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2417
2780
  ));
2418
2781
  impl(usize, Mod(usize)(
2782
+ Output : usize,
2419
2783
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2420
2784
  ));
2421
- impl(usize, Negate(usize)(
2785
+ impl(usize, Negate(
2786
+ Output : usize,
2422
2787
  (neg): ((self) -> __yo_op_neg(self))
2423
2788
  ));
2424
2789
  impl(usize, BitLeftShift(usize)(
2790
+ Output : usize,
2425
2791
  (<<): ((lhs, rhs) -> __yo_op_bit_left_shift(lhs, rhs))
2426
2792
  ));
2427
2793
  impl(usize, BitRightShift(usize)(
2794
+ Output : usize,
2428
2795
  (>>): ((lhs, rhs) -> __yo_op_bit_right_shift(lhs, rhs))
2429
2796
  ));
2430
2797
  impl(usize, LogicalNot(
2431
2798
  (!): ((self) -> __yo_op_not(self))
2432
2799
  ));
2433
- impl(usize, BitNot(usize)(
2800
+ impl(usize, BitNot(
2801
+ Output : usize,
2434
2802
  (~): ((self) -> __yo_op_bit_complement(self))
2435
2803
  ));
2436
2804
  impl(usize, BitAnd(usize)(
2805
+ Output : usize,
2437
2806
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2438
2807
  ));
2439
2808
  impl(usize, BitOr(usize)(
2809
+ Output : usize,
2440
2810
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2441
2811
  ));
2442
2812
  impl(usize, BitXor(usize)(
2813
+ Output : usize,
2443
2814
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2444
2815
  ));
2445
2816
  impl(usize, Eq(usize)(
@@ -2458,27 +2829,44 @@ impl(usize, Hash(
2458
2829
  impl(usize, Clone(
2459
2830
  clone: ((self) -> __yo_return_self(self.*))
2460
2831
  ));
2832
+ impl(usize, RangeOp(
2833
+ (..): ((start, end) -> Range(usize)(start: start, end: end))
2834
+ ));
2835
+ impl(usize, RangeInclusiveOp(
2836
+ (..=): ((start, end) -> RangeInclusive(usize)(start: start, end: end))
2837
+ ));
2838
+ impl(usize, ComptimeRangeOp(
2839
+ (..): ((start, end) -> Range(usize)(start: start, end: end))
2840
+ ));
2841
+ impl(usize, ComptimeRangeInclusiveOp(
2842
+ (..=): ((start, end) -> RangeInclusive(usize)(start: start, end: end))
2843
+ ));
2461
2844
  impl(usize, ComptimeAdd(usize)(
2845
+ Output : usize,
2462
2846
  (+) : ((lhs, rhs) ->
2463
2847
  __yo_comptime_usize_add(lhs, rhs)
2464
2848
  )
2465
2849
  ));
2466
2850
  impl(usize, ComptimeSub(usize)(
2851
+ Output : usize,
2467
2852
  (-) : ((lhs, rhs) ->
2468
2853
  __yo_comptime_usize_sub(lhs, rhs)
2469
2854
  )
2470
2855
  ));
2471
2856
  impl(usize, ComptimeMul(usize)(
2857
+ Output : usize,
2472
2858
  (*) : ((lhs, rhs) ->
2473
2859
  __yo_comptime_usize_mul(lhs, rhs)
2474
2860
  )
2475
2861
  ));
2476
2862
  impl(usize, ComptimeDiv(usize)(
2863
+ Output : usize,
2477
2864
  (/) : ((lhs, rhs) ->
2478
2865
  __yo_comptime_usize_div(lhs, rhs)
2479
2866
  )
2480
2867
  ));
2481
2868
  impl(usize, ComptimeMod(usize)(
2869
+ Output : usize,
2482
2870
  (%) : ((lhs, rhs) ->
2483
2871
  __yo_comptime_usize_mod(lhs, rhs)
2484
2872
  )
@@ -2506,31 +2894,37 @@ impl(usize, ComptimeOrd(usize)(
2506
2894
  )
2507
2895
  ));
2508
2896
  impl(usize, ComptimeBitAnd(usize)(
2897
+ Output : usize,
2509
2898
  (&): ((lhs, rhs) ->
2510
2899
  __yo_comptime_usize_bit_and(lhs, rhs)
2511
2900
  )
2512
2901
  ));
2513
2902
  impl(usize, ComptimeBitOr(usize)(
2903
+ Output : usize,
2514
2904
  (|): ((lhs, rhs) ->
2515
2905
  __yo_comptime_usize_bit_or(lhs, rhs)
2516
2906
  )
2517
2907
  ));
2518
2908
  impl(usize, ComptimeBitXor(usize)(
2909
+ Output : usize,
2519
2910
  (^): ((lhs, rhs) ->
2520
2911
  __yo_comptime_usize_bit_xor(lhs, rhs)
2521
2912
  )
2522
2913
  ));
2523
2914
  impl(usize, ComptimeBitLeftShift(usize)(
2915
+ Output : usize,
2524
2916
  (<<): ((lhs, rhs) ->
2525
2917
  __yo_comptime_usize_shl(lhs, rhs)
2526
2918
  )
2527
2919
  ));
2528
2920
  impl(usize, ComptimeBitRightShift(usize)(
2921
+ Output : usize,
2529
2922
  (>>): ((lhs, rhs) ->
2530
2923
  __yo_comptime_usize_shr(lhs, rhs)
2531
2924
  )
2532
2925
  ));
2533
- impl(usize, ComptimeBitNot(usize)(
2926
+ impl(usize, ComptimeBitNot(
2927
+ Output : usize,
2534
2928
  (~): (self ->
2535
2929
  __yo_comptime_usize_bit_not(self)
2536
2930
  )
@@ -2546,36 +2940,46 @@ impl(char, Send());
2546
2940
  impl(char, Acyclic());
2547
2941
  impl(char, Runtime());
2548
2942
  impl(char, Add(char)(
2943
+ Output : char,
2549
2944
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2550
2945
  ));
2551
2946
  impl(char, Sub(char)(
2947
+ Output : char,
2552
2948
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2553
2949
  ));
2554
2950
  impl(char, Mul(char)(
2951
+ Output : char,
2555
2952
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2556
2953
  ));
2557
2954
  impl(char, Div(char)(
2955
+ Output : char,
2558
2956
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2559
2957
  ));
2560
2958
  impl(char, Mod(char)(
2959
+ Output : char,
2561
2960
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2562
2961
  ));
2563
- impl(char, Negate(char)(
2962
+ impl(char, Negate(
2963
+ Output : char,
2564
2964
  (neg): ((self) -> __yo_op_neg(self))
2565
2965
  ));
2566
2966
  impl(char, LogicalNot(
2567
2967
  (!): ((self) -> __yo_op_not(self))
2568
2968
  ));
2569
- impl(char, BitNot(char)(
2969
+ impl(char, BitNot(
2970
+ Output : char,
2570
2971
  (~): ((self) -> __yo_op_bit_complement(self))
2571
2972
  ));
2572
2973
  impl(char, BitAnd(char)(
2974
+ Output : char,
2573
2975
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2574
2976
  ));
2575
2977
  impl(char, BitOr(char)(
2978
+ Output : char,
2576
2979
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2577
2980
  ));
2578
2981
  impl(char, BitXor(char)(
2982
+ Output : char,
2579
2983
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2580
2984
  ));
2581
2985
  impl(char, Eq(char)(
@@ -2602,36 +3006,46 @@ impl(int, Send());
2602
3006
  impl(int, Acyclic());
2603
3007
  impl(int, Runtime());
2604
3008
  impl(int, Add(int)(
3009
+ Output : int,
2605
3010
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2606
3011
  ));
2607
3012
  impl(int, Sub(int)(
3013
+ Output : int,
2608
3014
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2609
3015
  ));
2610
3016
  impl(int, Mul(int)(
3017
+ Output : int,
2611
3018
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2612
3019
  ));
2613
3020
  impl(int, Div(int)(
3021
+ Output : int,
2614
3022
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2615
3023
  ));
2616
3024
  impl(int, Mod(int)(
3025
+ Output : int,
2617
3026
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2618
3027
  ));
2619
- impl(int, Negate(int)(
3028
+ impl(int, Negate(
3029
+ Output : int,
2620
3030
  (neg): ((self) -> __yo_op_neg(self))
2621
3031
  ));
2622
3032
  impl(int, LogicalNot(
2623
3033
  (!): ((self) -> __yo_op_not(self))
2624
3034
  ));
2625
- impl(int, BitNot(int)(
3035
+ impl(int, BitNot(
3036
+ Output : int,
2626
3037
  (~): ((self) -> __yo_op_bit_complement(self))
2627
3038
  ));
2628
3039
  impl(int, BitAnd(int)(
3040
+ Output : int,
2629
3041
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2630
3042
  ));
2631
3043
  impl(int, BitOr(int)(
3044
+ Output : int,
2632
3045
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2633
3046
  ));
2634
3047
  impl(int, BitXor(int)(
3048
+ Output : int,
2635
3049
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2636
3050
  ));
2637
3051
  impl(int, Eq(int)(
@@ -2658,36 +3072,46 @@ impl(uint, Send());
2658
3072
  impl(uint, Acyclic());
2659
3073
  impl(uint, Runtime());
2660
3074
  impl(uint, Add(uint)(
3075
+ Output : uint,
2661
3076
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2662
3077
  ));
2663
3078
  impl(uint, Sub(uint)(
3079
+ Output : uint,
2664
3080
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2665
3081
  ));
2666
3082
  impl(uint, Mul(uint)(
3083
+ Output : uint,
2667
3084
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2668
3085
  ));
2669
3086
  impl(uint, Div(uint)(
3087
+ Output : uint,
2670
3088
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2671
3089
  ));
2672
3090
  impl(uint, Mod(uint)(
3091
+ Output : uint,
2673
3092
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2674
3093
  ));
2675
- impl(uint, Negate(uint)(
3094
+ impl(uint, Negate(
3095
+ Output : uint,
2676
3096
  (neg): ((self) -> __yo_op_neg(self))
2677
3097
  ));
2678
3098
  impl(uint, LogicalNot(
2679
3099
  (!): ((self) -> __yo_op_not(self))
2680
3100
  ));
2681
- impl(uint, BitNot(uint)(
3101
+ impl(uint, BitNot(
3102
+ Output : uint,
2682
3103
  (~): ((self) -> __yo_op_bit_complement(self))
2683
3104
  ));
2684
3105
  impl(uint, BitAnd(uint)(
3106
+ Output : uint,
2685
3107
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2686
3108
  ));
2687
3109
  impl(uint, BitOr(uint)(
3110
+ Output : uint,
2688
3111
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2689
3112
  ));
2690
3113
  impl(uint, BitXor(uint)(
3114
+ Output : uint,
2691
3115
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2692
3116
  ));
2693
3117
  impl(uint, Eq(uint)(
@@ -2714,36 +3138,46 @@ impl(short, Send());
2714
3138
  impl(short, Acyclic());
2715
3139
  impl(short, Runtime());
2716
3140
  impl(short, Add(short)(
3141
+ Output : short,
2717
3142
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2718
3143
  ));
2719
3144
  impl(short, Sub(short)(
3145
+ Output : short,
2720
3146
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2721
3147
  ));
2722
3148
  impl(short, Mul(short)(
3149
+ Output : short,
2723
3150
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2724
3151
  ));
2725
3152
  impl(short, Div(short)(
3153
+ Output : short,
2726
3154
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2727
3155
  ));
2728
3156
  impl(short, Mod(short)(
3157
+ Output : short,
2729
3158
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2730
3159
  ));
2731
- impl(short, Negate(short)(
3160
+ impl(short, Negate(
3161
+ Output : short,
2732
3162
  (neg): ((self) -> __yo_op_neg(self))
2733
3163
  ));
2734
3164
  impl(short, LogicalNot(
2735
3165
  (!): ((self) -> __yo_op_not(self))
2736
3166
  ));
2737
- impl(short, BitNot(short)(
3167
+ impl(short, BitNot(
3168
+ Output : short,
2738
3169
  (~): ((self) -> __yo_op_bit_complement(self))
2739
3170
  ));
2740
3171
  impl(short, BitAnd(short)(
3172
+ Output : short,
2741
3173
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2742
3174
  ));
2743
3175
  impl(short, BitOr(short)(
3176
+ Output : short,
2744
3177
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2745
3178
  ));
2746
3179
  impl(short, BitXor(short)(
3180
+ Output : short,
2747
3181
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2748
3182
  ));
2749
3183
  impl(short, Eq(short)(
@@ -2770,36 +3204,46 @@ impl(ushort, Send());
2770
3204
  impl(ushort, Acyclic());
2771
3205
  impl(ushort, Runtime());
2772
3206
  impl(ushort, Add(ushort)(
3207
+ Output : ushort,
2773
3208
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2774
3209
  ));
2775
3210
  impl(ushort, Sub(ushort)(
3211
+ Output : ushort,
2776
3212
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2777
3213
  ));
2778
3214
  impl(ushort, Mul(ushort)(
3215
+ Output : ushort,
2779
3216
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2780
3217
  ));
2781
3218
  impl(ushort, Div(ushort)(
3219
+ Output : ushort,
2782
3220
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2783
3221
  ));
2784
3222
  impl(ushort, Mod(ushort)(
3223
+ Output : ushort,
2785
3224
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2786
3225
  ));
2787
- impl(ushort, Negate(ushort)(
3226
+ impl(ushort, Negate(
3227
+ Output : ushort,
2788
3228
  (neg): ((self) -> __yo_op_neg(self))
2789
3229
  ));
2790
3230
  impl(ushort, LogicalNot(
2791
3231
  (!): ((self) -> __yo_op_not(self))
2792
3232
  ));
2793
- impl(ushort, BitNot(ushort)(
3233
+ impl(ushort, BitNot(
3234
+ Output : ushort,
2794
3235
  (~): ((self) -> __yo_op_bit_complement(self))
2795
3236
  ));
2796
3237
  impl(ushort, BitAnd(ushort)(
3238
+ Output : ushort,
2797
3239
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2798
3240
  ));
2799
3241
  impl(ushort, BitOr(ushort)(
3242
+ Output : ushort,
2800
3243
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2801
3244
  ));
2802
3245
  impl(ushort, BitXor(ushort)(
3246
+ Output : ushort,
2803
3247
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2804
3248
  ));
2805
3249
  impl(ushort, Eq(ushort)(
@@ -2826,36 +3270,46 @@ impl(long, Send());
2826
3270
  impl(long, Acyclic());
2827
3271
  impl(long, Runtime());
2828
3272
  impl(long, Add(long)(
3273
+ Output : long,
2829
3274
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2830
3275
  ));
2831
3276
  impl(long, Sub(long)(
3277
+ Output : long,
2832
3278
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2833
3279
  ));
2834
3280
  impl(long, Mul(long)(
3281
+ Output : long,
2835
3282
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2836
3283
  ));
2837
3284
  impl(long, Div(long)(
3285
+ Output : long,
2838
3286
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2839
3287
  ));
2840
3288
  impl(long, Mod(long)(
3289
+ Output : long,
2841
3290
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2842
3291
  ));
2843
- impl(long, Negate(long)(
3292
+ impl(long, Negate(
3293
+ Output : long,
2844
3294
  (neg): ((self) -> __yo_op_neg(self))
2845
3295
  ));
2846
3296
  impl(long, LogicalNot(
2847
3297
  (!): ((self) -> __yo_op_not(self))
2848
3298
  ));
2849
- impl(long, BitNot(long)(
3299
+ impl(long, BitNot(
3300
+ Output : long,
2850
3301
  (~): ((self) -> __yo_op_bit_complement(self))
2851
3302
  ));
2852
3303
  impl(long, BitAnd(long)(
3304
+ Output : long,
2853
3305
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2854
3306
  ));
2855
3307
  impl(long, BitOr(long)(
3308
+ Output : long,
2856
3309
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2857
3310
  ));
2858
3311
  impl(long, BitXor(long)(
3312
+ Output : long,
2859
3313
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2860
3314
  ));
2861
3315
  impl(long, Eq(long)(
@@ -2883,36 +3337,46 @@ impl(ulong, Send());
2883
3337
  impl(ulong, Acyclic());
2884
3338
  impl(ulong, Runtime());
2885
3339
  impl(ulong, Add(ulong)(
3340
+ Output : ulong,
2886
3341
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2887
3342
  ));
2888
3343
  impl(ulong, Sub(ulong)(
3344
+ Output : ulong,
2889
3345
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2890
3346
  ));
2891
3347
  impl(ulong, Mul(ulong)(
3348
+ Output : ulong,
2892
3349
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2893
3350
  ));
2894
3351
  impl(ulong, Div(ulong)(
3352
+ Output : ulong,
2895
3353
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2896
3354
  ));
2897
3355
  impl(ulong, Mod(ulong)(
3356
+ Output : ulong,
2898
3357
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2899
3358
  ));
2900
- impl(ulong, Negate(ulong)(
3359
+ impl(ulong, Negate(
3360
+ Output : ulong,
2901
3361
  (neg): ((self) -> __yo_op_neg(self))
2902
3362
  ));
2903
3363
  impl(ulong, LogicalNot(
2904
3364
  (!): ((self) -> __yo_op_not(self))
2905
3365
  ));
2906
- impl(ulong, BitNot(ulong)(
3366
+ impl(ulong, BitNot(
3367
+ Output : ulong,
2907
3368
  (~): ((self) -> __yo_op_bit_complement(self))
2908
3369
  ));
2909
3370
  impl(ulong, BitAnd(ulong)(
3371
+ Output : ulong,
2910
3372
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2911
3373
  ));
2912
3374
  impl(ulong, BitOr(ulong)(
3375
+ Output : ulong,
2913
3376
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2914
3377
  ));
2915
3378
  impl(ulong, BitXor(ulong)(
3379
+ Output : ulong,
2916
3380
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2917
3381
  ));
2918
3382
  impl(ulong, Eq(ulong)(
@@ -2939,36 +3403,46 @@ impl(longlong, Send());
2939
3403
  impl(longlong, Acyclic());
2940
3404
  impl(longlong, Runtime());
2941
3405
  impl(longlong, Add(longlong)(
3406
+ Output : longlong,
2942
3407
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2943
3408
  ));
2944
3409
  impl(longlong, Sub(longlong)(
3410
+ Output : longlong,
2945
3411
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
2946
3412
  ));
2947
3413
  impl(longlong, Mul(longlong)(
3414
+ Output : longlong,
2948
3415
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
2949
3416
  ));
2950
3417
  impl(longlong, Div(longlong)(
3418
+ Output : longlong,
2951
3419
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
2952
3420
  ));
2953
3421
  impl(longlong, Mod(longlong)(
3422
+ Output : longlong,
2954
3423
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
2955
3424
  ));
2956
- impl(longlong, Negate(longlong)(
3425
+ impl(longlong, Negate(
3426
+ Output : longlong,
2957
3427
  (neg): ((self) -> __yo_op_neg(self))
2958
3428
  ));
2959
3429
  impl(longlong, LogicalNot(
2960
3430
  (!): ((self) -> __yo_op_not(self))
2961
3431
  ));
2962
- impl(longlong, BitNot(longlong)(
3432
+ impl(longlong, BitNot(
3433
+ Output : longlong,
2963
3434
  (~): ((self) -> __yo_op_bit_complement(self))
2964
3435
  ));
2965
3436
  impl(longlong, BitAnd(longlong)(
3437
+ Output : longlong,
2966
3438
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
2967
3439
  ));
2968
3440
  impl(longlong, BitOr(longlong)(
3441
+ Output : longlong,
2969
3442
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
2970
3443
  ));
2971
3444
  impl(longlong, BitXor(longlong)(
3445
+ Output : longlong,
2972
3446
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
2973
3447
  ));
2974
3448
  impl(longlong, Eq(longlong)(
@@ -2995,36 +3469,46 @@ impl(ulonglong, Send());
2995
3469
  impl(ulonglong, Acyclic());
2996
3470
  impl(ulonglong, Runtime());
2997
3471
  impl(ulonglong, Add(ulonglong)(
3472
+ Output : ulonglong,
2998
3473
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
2999
3474
  ));
3000
3475
  impl(ulonglong, Sub(ulonglong)(
3476
+ Output : ulonglong,
3001
3477
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
3002
3478
  ));
3003
3479
  impl(ulonglong, Mul(ulonglong)(
3480
+ Output : ulonglong,
3004
3481
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
3005
3482
  ));
3006
3483
  impl(ulonglong, Div(ulonglong)(
3484
+ Output : ulonglong,
3007
3485
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
3008
3486
  ));
3009
3487
  impl(ulonglong, Mod(ulonglong)(
3488
+ Output : ulonglong,
3010
3489
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
3011
3490
  ));
3012
- impl(ulonglong, Negate(ulonglong)(
3491
+ impl(ulonglong, Negate(
3492
+ Output : ulonglong,
3013
3493
  (neg): ((self) -> __yo_op_neg(self))
3014
3494
  ));
3015
3495
  impl(ulonglong, LogicalNot(
3016
3496
  (!): ((self) -> __yo_op_not(self))
3017
3497
  ));
3018
- impl(ulonglong, BitNot(ulonglong)(
3498
+ impl(ulonglong, BitNot(
3499
+ Output : ulonglong,
3019
3500
  (~): ((self) -> __yo_op_bit_complement(self))
3020
3501
  ));
3021
3502
  impl(ulonglong, BitAnd(ulonglong)(
3503
+ Output : ulonglong,
3022
3504
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
3023
3505
  ));
3024
3506
  impl(ulonglong, BitOr(ulonglong)(
3507
+ Output : ulonglong,
3025
3508
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
3026
3509
  ));
3027
3510
  impl(ulonglong, BitXor(ulonglong)(
3511
+ Output : ulonglong,
3028
3512
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
3029
3513
  ));
3030
3514
  impl(ulonglong, Eq(ulonglong)(
@@ -3051,36 +3535,46 @@ impl(longdouble, Send());
3051
3535
  impl(longdouble, Acyclic());
3052
3536
  impl(longdouble, Runtime());
3053
3537
  impl(longdouble, Add(longdouble)(
3538
+ Output : longdouble,
3054
3539
  (+): ((lhs, rhs) -> __yo_op_add(lhs, rhs))
3055
3540
  ));
3056
3541
  impl(longdouble, Sub(longdouble)(
3542
+ Output : longdouble,
3057
3543
  (-): ((lhs, rhs) -> __yo_op_sub(lhs, rhs))
3058
3544
  ));
3059
3545
  impl(longdouble, Mul(longdouble)(
3546
+ Output : longdouble,
3060
3547
  (*): ((lhs, rhs) -> __yo_op_mul(lhs, rhs))
3061
3548
  ));
3062
3549
  impl(longdouble, Div(longdouble)(
3550
+ Output : longdouble,
3063
3551
  (/): ((lhs, rhs) -> __yo_op_div(lhs, rhs))
3064
3552
  ));
3065
3553
  impl(longdouble, Mod(longdouble)(
3554
+ Output : longdouble,
3066
3555
  (%): ((lhs, rhs) -> __yo_op_mod(lhs, rhs))
3067
3556
  ));
3068
- impl(longdouble, Negate(longdouble)(
3557
+ impl(longdouble, Negate(
3558
+ Output : longdouble,
3069
3559
  (neg): ((self) -> __yo_op_neg(self))
3070
3560
  ));
3071
3561
  impl(longdouble, LogicalNot(
3072
3562
  (!): ((self) -> __yo_op_not(self))
3073
3563
  ));
3074
- impl(longdouble, BitNot(longdouble)(
3564
+ impl(longdouble, BitNot(
3565
+ Output : longdouble,
3075
3566
  (~): ((self) -> __yo_op_bit_complement(self))
3076
3567
  ));
3077
3568
  impl(longdouble, BitAnd(longdouble)(
3569
+ Output : longdouble,
3078
3570
  (&): ((lhs, rhs) -> __yo_op_bit_and(lhs, rhs))
3079
3571
  ));
3080
3572
  impl(longdouble, BitOr(longdouble)(
3573
+ Output : longdouble,
3081
3574
  (|): ((lhs, rhs) -> __yo_op_bit_or(lhs, rhs))
3082
3575
  ));
3083
3576
  impl(longdouble, BitXor(longdouble)(
3577
+ Output : longdouble,
3084
3578
  (^): ((lhs, rhs) -> __yo_op_bit_xor(lhs, rhs))
3085
3579
  ));
3086
3580
  impl(longdouble, Eq(longdouble)(
@@ -3108,18 +3602,21 @@ impl(forall(T : Type), *(T), Acyclic());
3108
3602
  impl(forall(T : Type), where(T <: Comptime), *(T), Comptime());
3109
3603
  impl(forall(T : Type), where(T <: Runtime), *(T), Runtime());
3110
3604
  /*
3111
- // NOTE: Below should give eror, as C disallows pointer arithmetic on void pointers.
3112
- impl(*(void), Add(usize, *(void))(
3605
+ // NOTE: Below should give error, as C disallows pointer arithmetic on void pointers.
3606
+ impl(*(void), Add(usize)(
3607
+ Output : *(void),
3113
3608
  (+) : ((lhs, rhs) -> __yo_ptr_add(lhs, rhs))
3114
3609
  ));
3115
- impl(*(void), Sub(usize, *(void))(
3610
+ impl(*(void), Sub(usize)(
3611
+ Output : *(void),
3116
3612
  (-) : ((lhs, rhs) -> __yo_ptr_sub(lhs, rhs))
3117
3613
  ));
3118
3614
  impl(*(void), Eq(*(void))(
3119
3615
  (==) : ((lhs, rhs) -> __yo_ptr_eq(lhs, rhs)),
3120
3616
  (!=) : ((lhs, rhs) -> __yo_ptr_neq(lhs, rhs))
3121
3617
  ));
3122
- impl(*(void), Div(*(void), isize)(
3618
+ impl(*(void), Div(*(void))(
3619
+ Output : isize,
3123
3620
  (/) : ((lhs, rhs) -> __yo_ptr_diff(lhs, rhs))
3124
3621
  ));
3125
3622
  impl(*(void), Ord(*(void))(
@@ -3186,19 +3683,140 @@ impl(forall(T : Type, U : usize), where(T <: Comptime), Array(T, U),
3186
3683
  })
3187
3684
  );
3188
3685
 
3686
+ /// Array Index impls
3687
+ impl(forall(T : Type, N : usize), Array(T, N), Index(usize)(
3688
+ Output : T,
3689
+ index : (fn(self: *(Self), idx: usize) -> *(Self.Output))(
3690
+ __yo_array_index(self, idx)
3691
+ )
3692
+ ));
3693
+
3694
+ impl(forall(T : Type, N : usize), Array(T, N), Index(Range(usize))(
3695
+ Output : Slice(T),
3696
+ index : (fn(self: *(Self), idx: Range(usize)) -> *(Self.Output))(
3697
+ __yo_array_index_range(self, idx)
3698
+ )
3699
+ ));
3700
+
3701
+ impl(forall(T : Type, N : usize), Array(T, N), Index(RangeInclusive(usize))(
3702
+ Output : Slice(T),
3703
+ index : (fn(self: *(Self), idx: RangeInclusive(usize)) -> *(Self.Output))(
3704
+ __yo_array_index_range_inclusive(self, idx)
3705
+ )
3706
+ ));
3707
+
3189
3708
  /// Slice
3190
3709
  impl(forall(T : Type), Slice(T), Acyclic());
3191
3710
  impl(forall(T : Type), where(T <: Comptime), Slice(T), Comptime());
3192
3711
  impl(forall(T : Type), where(T <: Runtime), Slice(T), Runtime());
3712
+
3713
+ impl(forall(T : Type), Range(T), Acyclic());
3714
+ impl(forall(T : Type), where(T <: Comptime), Range(T), Comptime());
3715
+ impl(forall(T : Type), where(T <: Runtime), Range(T), Runtime());
3716
+
3717
+ impl(forall(T : Type), RangeInclusive(T), Acyclic());
3718
+ impl(forall(T : Type), where(T <: Comptime), RangeInclusive(T), Comptime());
3719
+ impl(forall(T : Type), where(T <: Runtime), RangeInclusive(T), Runtime());
3193
3720
  impl(forall(T : Type), Slice(T),
3194
3721
  from_raw_parts : (fn(ptr : *(T), length : usize) -> Self)(
3195
3722
  __yo_slice_new(ptr, length)
3196
3723
  ),
3197
3724
  len : (fn(self : Self) -> usize)(
3198
3725
  __yo_slice_len(self)
3726
+ ),
3727
+ ptr : (fn(self : Self) -> *(T))(
3728
+ __yo_slice_ptr(self)
3199
3729
  )
3200
3730
  );
3201
3731
 
3732
+ /// Slice Index impls
3733
+ impl(forall(T : Type), Slice(T), Index(usize)(
3734
+ Output : T,
3735
+ index : (fn(self: *(Self), idx: usize) -> *(Self.Output))(
3736
+ __yo_slice_index(self, idx)
3737
+ )
3738
+ ));
3739
+
3740
+ impl(forall(T : Type), Slice(T), Index(Range(usize))(
3741
+ Output : Slice(T),
3742
+ index : (fn(self: *(Self), idx: Range(usize)) -> *(Self.Output))(
3743
+ __yo_slice_index_range(self, idx)
3744
+ )
3745
+ ));
3746
+
3747
+ impl(forall(T : Type), Slice(T), Index(RangeInclusive(usize))(
3748
+ Output : Slice(T),
3749
+ index : (fn(self: *(Self), idx: RangeInclusive(usize)) -> *(Self.Output))(
3750
+ __yo_slice_index_range_inclusive(self, idx)
3751
+ )
3752
+ ));
3753
+
3754
+ /// Array ComptimeIndex impls
3755
+ impl(forall(T : Type, N : usize), where(T <: Comptime), Array(T, N), ComptimeIndex(usize)(
3756
+ Output : T,
3757
+ index : (fn(comptime(self): *(Self), comptime(idx): usize) -> comptime(*(Self.Output)))(
3758
+ __yo_comptime_array_index(self, idx)
3759
+ )
3760
+ ));
3761
+
3762
+ impl(forall(T : Type, N : usize), where(T <: Comptime), Array(T, N), ComptimeIndex(Range(usize))(
3763
+ Output : Slice(T),
3764
+ index : (fn(comptime(self): *(Self), comptime(idx): Range(usize)) -> comptime(*(Self.Output)))(
3765
+ __yo_comptime_array_index_range(self, idx)
3766
+ )
3767
+ ));
3768
+
3769
+ impl(forall(T : Type, N : usize), where(T <: Comptime), Array(T, N), ComptimeIndex(RangeInclusive(usize))(
3770
+ Output : Slice(T),
3771
+ index : (fn(comptime(self): *(Self), comptime(idx): RangeInclusive(usize)) -> comptime(*(Self.Output)))(
3772
+ __yo_comptime_array_index_range_inclusive(self, idx)
3773
+ )
3774
+ ));
3775
+
3776
+ /// Slice ComptimeIndex impls
3777
+ impl(forall(T : Type), where(T <: Comptime), Slice(T), ComptimeIndex(usize)(
3778
+ Output : T,
3779
+ index : (fn(comptime(self): *(Self), comptime(idx): usize) -> comptime(*(Self.Output)))(
3780
+ __yo_comptime_slice_index(self, idx)
3781
+ )
3782
+ ));
3783
+
3784
+ impl(forall(T : Type), where(T <: Comptime), Slice(T), ComptimeIndex(Range(usize))(
3785
+ Output : Slice(T),
3786
+ index : (fn(comptime(self): *(Self), comptime(idx): Range(usize)) -> comptime(*(Self.Output)))(
3787
+ __yo_comptime_slice_index_range(self, idx)
3788
+ )
3789
+ ));
3790
+
3791
+ impl(forall(T : Type), where(T <: Comptime), Slice(T), ComptimeIndex(RangeInclusive(usize))(
3792
+ Output : Slice(T),
3793
+ index : (fn(comptime(self): *(Self), comptime(idx): RangeInclusive(usize)) -> comptime(*(Self.Output)))(
3794
+ __yo_comptime_slice_index_range_inclusive(self, idx)
3795
+ )
3796
+ ));
3797
+
3798
+ /// comptime_string ComptimeIndex impls
3799
+ impl(comptime_string, ComptimeIndex(comptime_int)(
3800
+ Output : comptime_string,
3801
+ index : ((self, idx) ->
3802
+ __yo_comptime_string_index(self, idx)
3803
+ )
3804
+ ));
3805
+
3806
+ impl(comptime_string, ComptimeIndex(Range(comptime_int))(
3807
+ Output : comptime_string,
3808
+ index : ((self, idx) ->
3809
+ __yo_comptime_string_index_range(self, idx)
3810
+ )
3811
+ ));
3812
+
3813
+ impl(comptime_string, ComptimeIndex(RangeInclusive(comptime_int))(
3814
+ Output : comptime_string,
3815
+ index : ((self, idx) ->
3816
+ __yo_comptime_string_index_range_inclusive(self, idx)
3817
+ )
3818
+ ));
3819
+
3202
3820
  /// str
3203
3821
  str :: newtype(
3204
3822
  bytes : Slice(u8)
@@ -3209,6 +3827,9 @@ impl(str,
3209
3827
  ),
3210
3828
  len : (fn(self : Self) -> usize)(
3211
3829
  __yo_slice_len(self.bytes)
3830
+ ),
3831
+ ptr : (fn(self : Self) -> *(u8))(
3832
+ __yo_slice_ptr(self.bytes)
3212
3833
  )
3213
3834
  );
3214
3835