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