diff --git a/vlib/v/tests/as_cast_already_smartcast_sumtype_test.v b/vlib/v/tests/as_cast_already_smartcast_sumtype_test.v new file mode 100644 index 0000000000..e6a2a8e919 --- /dev/null +++ b/vlib/v/tests/as_cast_already_smartcast_sumtype_test.v @@ -0,0 +1,30 @@ +struct S1 { + s1 string = 'abc' +} + +struct Empty { +} + +type Sum = Empty | S1 + +fn test_as_cast_already_smartcast_sumtype() { + a := Sum(S1{}) + if a is S1 { + println('if expr: $a.s1') + assert a.s1 == 'abc' + v1 := a as S1 + println('if expr (as cast): $v1.s1') + assert v1.s1 == 'abc' + } + + match a { + S1 { + println('match expr: $a.s1') + assert a.s1 == 'abc' + v1 := a as S1 + println('match expr (as cast): $v1.s1') + assert v1.s1 == 'abc' + } + else {} + } +}