summary refs log tree commit diff stats
path: root/tests/concepts/t976.nim
blob: cc0bbdc594f34418e0472fbe4ef302de58bb12fa (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
28
29
30
31
32
import macros

type
  int1 = distinct int
  int2 = distinct int

  int1g = concept x
    x is int1

  int2g = concept x
    x is int2

proc take[T: int1g](value: int1) =
  when T is int2:
    static: error("killed in take(int1)")

proc take[T: int2g](vale: int2) =
  when T is int1:
    static: error("killed in take(int2)")

var i1: int1 = 1.int1
var i2: int2 = 2.int2

take[int1](i1)
take[int2](i2)

template reject(e) =
  static: assert(not compiles(e))

reject take[string](i2)
reject take[int1](i2)