Merge tests into a larger file (part 2 of ∞) (#9335)
* merge controlflow tests * merge distinct tests * merge enum tests * merge fields tests * merge implicit tests * merge iter issues tests
This commit is contained in:
parent
ef820769a4
commit
3c9fcc4c30
40 changed files with 809 additions and 802 deletions
77
tests/distinct/tdistinct.nim
Normal file
77
tests/distinct/tdistinct.nim
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
discard """
|
||||
output: '''
|
||||
25
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
block tborrowdot:
|
||||
type
|
||||
Foo = object
|
||||
a, b: int
|
||||
s: string
|
||||
|
||||
Bar {.borrow: `.`.} = distinct Foo
|
||||
|
||||
var bb: ref Bar
|
||||
new bb
|
||||
bb.a = 90
|
||||
bb.s = "abc"
|
||||
|
||||
|
||||
|
||||
block tcurrncy:
|
||||
template Additive(typ: untyped) =
|
||||
proc `+`(x, y: typ): typ {.borrow.}
|
||||
proc `-`(x, y: typ): typ {.borrow.}
|
||||
|
||||
# unary operators:
|
||||
proc `+`(x: typ): typ {.borrow.}
|
||||
proc `-`(x: typ): typ {.borrow.}
|
||||
|
||||
template Multiplicative(typ, base: untyped) =
|
||||
proc `*`(x: typ, y: base): typ {.borrow.}
|
||||
proc `*`(x: base, y: typ): typ {.borrow.}
|
||||
proc `div`(x: typ, y: base): typ {.borrow.}
|
||||
proc `mod`(x: typ, y: base): typ {.borrow.}
|
||||
|
||||
template Comparable(typ: untyped) =
|
||||
proc `<`(x, y: typ): bool {.borrow.}
|
||||
proc `<=`(x, y: typ): bool {.borrow.}
|
||||
proc `==`(x, y: typ): bool {.borrow.}
|
||||
|
||||
template DefineCurrency(typ, base: untyped) =
|
||||
type
|
||||
typ = distinct base
|
||||
Additive(typ)
|
||||
Multiplicative(typ, base)
|
||||
Comparable(typ)
|
||||
|
||||
proc `$`(t: typ): string {.borrow.}
|
||||
|
||||
DefineCurrency(TDollar, int)
|
||||
DefineCurrency(TEuro, int)
|
||||
echo($( 12.TDollar + 13.TDollar )) #OUT 25
|
||||
|
||||
|
||||
|
||||
block tconsts:
|
||||
# bug #2641
|
||||
|
||||
type MyChar = distinct char
|
||||
const c:MyChar = MyChar('a')
|
||||
|
||||
type MyBool = distinct bool
|
||||
const b:MyBool = MyBool(true)
|
||||
|
||||
type MyBoolSet = distinct set[bool]
|
||||
const bs:MyBoolSet = MyBoolSet({true})
|
||||
|
||||
type MyCharSet= distinct set[char]
|
||||
const cs:MyCharSet = MyCharSet({'a'})
|
||||
|
||||
type MyBoolSeq = distinct seq[bool]
|
||||
const bseq:MyBoolSeq = MyBoolSeq(@[true, false])
|
||||
|
||||
type MyBoolArr = distinct array[3, bool]
|
||||
const barr:MyBoolArr = MyBoolArr([true, false, true])
|
||||
Loading…
Add table
Add a link
Reference in a new issue