summary refs log tree commit diff stats
path: root/tests/concepts/tgraph.nim
blob: 985f04a61595511f4f013c8eeb19397c84c3c9fb (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
33
34
# bug #3452
import math

type
  Node* = concept n
    `==`(n, n) is bool

  Graph1* = concept g
    type N = Node
    distance(g, N, N) is float

  Graph2 = concept g
    distance(g, Node, Node) is float

  Graph3 = concept g
    var x: Node
    distance(g, x, x) is float

  XY* = tuple[x, y: int]

  MyGraph* = object
    points: seq[XY]

static:
  assert XY is Node

proc distance*( g: MyGraph, a, b: XY): float =
  sqrt( pow(float(a.x - b.x), 2) + pow(float(a.y - b.y), 2) )

static:
  assert MyGraph is Graph1
  assert MyGraph is Graph2
  assert MyGraph is Graph3