| 1 | // The series of i?_test.v files, do test different edge cases for |
| 2 | // interface table generation. The differences may seem very minor |
| 3 | // (placement of the interface declaration, whether or not there are |
| 4 | // helper methods, etc), but PLEASE do NOT be tempted to merge them in |
| 5 | // a single _test.v file. Debugging interface code generation issues |
| 6 | // is *much easier* when the _test.v files are very short and focused. |
| 7 | struct Point { |
| 8 | x i8 |
| 9 | y i8 |
| 10 | } |
| 11 | |
| 12 | fn (p Point) draw() string { |
| 13 | return 'Point(${p.x},${p.y})' |
| 14 | } |
| 15 | |
| 16 | fn to_string(d Drawer) { |
| 17 | println(d.draw()) |
| 18 | } |
| 19 | |
| 20 | interface Drawer { |
| 21 | draw() string |
| 22 | } |
| 23 | |
| 24 | fn test_to_string_can_be_called() { |
| 25 | p := Point{ |
| 26 | x: 2 |
| 27 | y: 3 |
| 28 | } |
| 29 | to_string(p) |
| 30 | assert true |
| 31 | } |
| 32 | |