v2 / vlib / v / slow_tests / valgrind / autofree_match_test.v
40 lines · 35 sloc · 582 bytes · 3d60410b605d001e54f280070d5f952da9de1112
Raw
1// vtest vflags: -autofree
2// vtest build: !sanitize-address-gcc && !sanitize-address-clang
3
4type Tree = Empty | Node
5
6struct Empty {}
7
8struct Node {
9 value int
10 left Tree
11 right Tree
12}
13
14fn (tree Tree) delete(x int) Tree {
15 return match tree {
16 Empty {
17 tree
18 }
19 Node {
20 if tree.left !is Empty && tree.right !is Empty {
21 if x < tree.value {
22 Node{
23 ...tree
24 left: tree.left.delete(x)
25 }
26 } else {
27 tree
28 }
29 } else {
30 tree
31 }
32 }
33 }
34}
35
36fn test_autofree_match() {
37 mut tree := Tree(Empty{})
38 tree = tree.delete(5)
39 assert tree is Empty
40}
41