1/* { dg-do run } */
2
3type Struct = struct { int i; string j; };
4
5fun foo2 = (any a) void:
6  {
7   if (a isa int<32>)
8     print "an int32";
9   else if (a isa uint<7>)
10     print "an uint7";
11   else if (a isa uint<64>[])
12     print "an uint64 array";
13   else
14     print "unknown";
15   print "\n";
16  }
17
18/* { dg-command { foo2 (10) } } */
19/* { dg-output "an int32" } */
20
21/* { dg-command { foo2 (666) } } */
22/* { dg-output "\nan int32" } */
23
24/* { dg-command { foo2 (10 as uint<7>) } } */
25/* { dg-output "\nan uint7" } */
26
27/* { dg-command { foo2 ([1UL, 2UL]) } } */
28/* { dg-output "\nan uint64 array" } */
29
30/* { dg-command { foo2 (Struct {i=10, j="foo"}) } } */
31/* { dg-output "\nunknown" } */
32