blob: ce71344d06641a40d3988741e141eb8a9f358030 (
plain) (
tree)
|
|
discard """
output: '''
A
A
25.0
210.0
apr
'''
"""
block t4435:
type
A[T] = distinct T
B[T] = distinct T
proc foo[T](x:A[T]) = echo "A"
proc foo[T](x:B[T]) = echo "B"
proc bar(x:A) = echo "A"
proc bar(x:B) = echo "B"
var
a:A[int]
foo(a) # fine
bar(a) # testdistinct.nim(14, 4) Error: ambiguous call; both testdistinct.bar(x: A) and testdistinct.bar(x: B) match for: (A[system.int])
block t7010:
type MyInt = distinct int
proc `+`(x: MyInt, y: MyInt): MyInt {.borrow.}
proc `+=`(x: var MyInt, y: MyInt) {.borrow.}
proc `=`(x: var MyInt, y: MyInt) {.borrow.}
var next: MyInt
proc getNext() : MyInt =
result = next
next += 1.MyInt
next = next + 1.MyInt
block t9079:
type
Dollars = distinct float
proc `$`(d: Dollars): string {.borrow.}
proc `*`(a, b: Dollars): Dollars {.borrow.}
proc `+`(a, b: Dollars): Dollars {.borrow.}
var a = Dollars(20)
a = Dollars(25.0)
echo a
a = 10.Dollars * (20.Dollars + 1.Dollars)
echo a
block t9322:
type Fix = distinct string
proc `$`(f: Fix): string {.borrow.}
proc mystr(s: string) =
echo s
mystr($Fix("apr"))
|