summary refs log tree commit diff stats
path: root/tests/template/tpattern_with_converter.nim
blob: e0632552bf54f7c280c2c9c873a634747a1d508a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
discard """
  output: 10.0
"""

type
  MyFloat = object
    val: float

converter to_myfloat*(x: float): MyFloat {.inline.} =
  MyFloat(val: x)

proc `+`(x1, x2: MyFloat): MyFloat =
  MyFloat(val: x1.val + x2.val)

proc `*`(x1, x2: MyFloat): MyFloat =
    MyFloat(val: x1.val * x2.val)

template optMul{`*`(a, 2.0)}(a: MyFloat): MyFloat =
  a + a

func floatMyFloat(x: MyFloat): MyFloat =
  result = x * 2.0

func floatDouble(x: float): float =
  result = x * 2.0

echo floatDouble(5)