summaryrefslogtreecommitdiff
path: root/test/matchptr.myr
blob: 9dc236784d44095e64d4e11966025274c4562c5a (plain)
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
use std

type loop = struct
	l	: loop#
	val	: int
;;

const main = {
	var x : std.option(std.option(int)#)
	var y : loop
	var ok

	x = `std.Some &(`std.Some 123)
	match x
	| `std.Some &(`std.None):	std.put("failed\n")
	| `std.Some &(`std.Some 666):	std.put("failed\n")
	| `std.Some &(`std.Some 123):	ok = true
	| _:	std.put("failed\n")
	;;

	y.val=666
	match &y
	| &[.val=777]:	std.put("failed\n")
	| &[.val=123]:	ok = ok && true
	| &[.val=999]:	std.put("failed\n")
	| _:
	;;

	if ok
		std.put("worked\n")
	else
		std.put("failed\n")
	;;
}