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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! > Test while let
//! > test_runner_name
test_expr_semantics(expect_diagnostics: false)
//! > function_body
let a = MyEnum::A(9);
//! > expr_code
while let MyEnum::A(_x) | MyEnum::B(_x) = a {
break;
}
//! > module_code
enum MyEnum {
A: felt252,
B: felt252,
}
//! > expected_semantics
While(
ExprWhile {
condition: Let(
Var(
LocalVarId(test::a),
),
[
EnumVariant(
PatternEnumVariant {
variant: MyEnum::A,
inner_pattern: Some(
Variable(
_x,
),
),
ty: test::MyEnum,
},
),
EnumVariant(
PatternEnumVariant {
variant: MyEnum::B,
inner_pattern: Some(
Variable(
_x,
),
),
ty: test::MyEnum,
},
),
],
),
body: Block(
ExprBlock {
statements: [
Break(
StatementBreak {
expr_option: None,
},
),
],
tail: None,
ty: (),
},
),
ty: (),
},
)
//! > expected_diagnostics