@@ -20,7 +20,11 @@ def test_simple_make_tuple_tuple_get():
20
20
tuple_of_size_2 = im .make_tuple ("first" , "second" )
21
21
testee = im .make_tuple (im .tuple_get (0 , tuple_of_size_2 ), im .tuple_get (1 , tuple_of_size_2 ))
22
22
23
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET )
23
+ actual = CollapseTuple .apply (
24
+ testee ,
25
+ remove_letified_make_tuple_elements = False ,
26
+ flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET ,
27
+ )
24
28
25
29
expected = tuple_of_size_2
26
30
assert actual == expected
@@ -32,7 +36,11 @@ def test_nested_make_tuple_tuple_get():
32
36
im .tuple_get (0 , tup_of_size2_from_lambda ), im .tuple_get (1 , tup_of_size2_from_lambda )
33
37
)
34
38
35
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET )
39
+ actual = CollapseTuple .apply (
40
+ testee ,
41
+ remove_letified_make_tuple_elements = False ,
42
+ flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET ,
43
+ )
36
44
37
45
assert actual == tup_of_size2_from_lambda
38
46
@@ -42,21 +50,33 @@ def test_different_tuples_make_tuple_tuple_get():
42
50
t1 = im .make_tuple ("foo1" , "bar1" )
43
51
testee = im .make_tuple (im .tuple_get (0 , t0 ), im .tuple_get (1 , t1 ))
44
52
45
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET )
53
+ actual = CollapseTuple .apply (
54
+ testee ,
55
+ remove_letified_make_tuple_elements = False ,
56
+ flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET ,
57
+ )
46
58
47
59
assert actual == testee # did nothing
48
60
49
61
50
62
def test_incompatible_order_make_tuple_tuple_get ():
51
63
tuple_of_size_2 = im .make_tuple ("first" , "second" )
52
64
testee = im .make_tuple (im .tuple_get (1 , tuple_of_size_2 ), im .tuple_get (0 , tuple_of_size_2 ))
53
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET )
65
+ actual = CollapseTuple .apply (
66
+ testee ,
67
+ remove_letified_make_tuple_elements = False ,
68
+ flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET ,
69
+ )
54
70
assert actual == testee # did nothing
55
71
56
72
57
73
def test_incompatible_size_make_tuple_tuple_get ():
58
74
testee = im .make_tuple (im .tuple_get (0 , im .make_tuple ("first" , "second" )))
59
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET )
75
+ actual = CollapseTuple .apply (
76
+ testee ,
77
+ remove_letified_make_tuple_elements = False ,
78
+ flags = CollapseTuple .Flag .COLLAPSE_MAKE_TUPLE_TUPLE_GET ,
79
+ )
60
80
assert actual == testee # did nothing
61
81
62
82
@@ -71,14 +91,22 @@ def test_merged_with_smaller_outer_size_make_tuple_tuple_get():
71
91
def test_simple_tuple_get_make_tuple ():
72
92
expected = im .ref ("bar" )
73
93
testee = im .tuple_get (1 , im .make_tuple ("foo" , expected ))
74
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .COLLAPSE_TUPLE_GET_MAKE_TUPLE )
94
+ actual = CollapseTuple .apply (
95
+ testee ,
96
+ remove_letified_make_tuple_elements = False ,
97
+ flags = CollapseTuple .Flag .COLLAPSE_TUPLE_GET_MAKE_TUPLE ,
98
+ )
75
99
assert expected == actual
76
100
77
101
78
102
def test_propagate_tuple_get ():
79
103
expected = im .let (("el1" , 1 ), ("el2" , 2 ))(im .tuple_get (0 , im .make_tuple ("el1" , "el2" )))
80
104
testee = im .tuple_get (0 , im .let (("el1" , 1 ), ("el2" , 2 ))(im .make_tuple ("el1" , "el2" )))
81
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .PROPAGATE_TUPLE_GET )
105
+ actual = CollapseTuple .apply (
106
+ testee ,
107
+ remove_letified_make_tuple_elements = False ,
108
+ flags = CollapseTuple .Flag .PROPAGATE_TUPLE_GET ,
109
+ )
82
110
assert expected == actual
83
111
84
112
@@ -89,23 +117,35 @@ def test_letify_make_tuple_elements():
89
117
im .make_tuple ("_tuple_el_1" , "_tuple_el_2" )
90
118
)
91
119
92
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS )
120
+ actual = CollapseTuple .apply (
121
+ testee ,
122
+ remove_letified_make_tuple_elements = False ,
123
+ flags = CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS ,
124
+ )
93
125
assert actual == expected
94
126
95
127
96
128
def test_letify_make_tuple_with_trivial_elements ():
97
129
testee = im .let (("a" , 1 ), ("b" , 2 ))(im .make_tuple ("a" , "b" ))
98
130
expected = testee # did nothing
99
131
100
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS )
132
+ actual = CollapseTuple .apply (
133
+ testee ,
134
+ remove_letified_make_tuple_elements = False ,
135
+ flags = CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS ,
136
+ )
101
137
assert actual == expected
102
138
103
139
104
140
def test_inline_trivial_make_tuple ():
105
141
testee = im .let ("tup" , im .make_tuple ("a" , "b" ))("tup" )
106
142
expected = im .make_tuple ("a" , "b" )
107
143
108
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .INLINE_TRIVIAL_MAKE_TUPLE )
144
+ actual = CollapseTuple .apply (
145
+ testee ,
146
+ remove_letified_make_tuple_elements = False ,
147
+ flags = CollapseTuple .Flag .INLINE_TRIVIAL_MAKE_TUPLE ,
148
+ )
109
149
assert actual == expected
110
150
111
151
@@ -114,7 +154,11 @@ def test_propagate_to_if_on_tuples():
114
154
expected = im .if_ (
115
155
"cond" , im .tuple_get (0 , im .make_tuple (1 , 2 )), im .tuple_get (0 , im .make_tuple (3 , 4 ))
116
156
)
117
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .PROPAGATE_TO_IF_ON_TUPLES )
157
+ actual = CollapseTuple .apply (
158
+ testee ,
159
+ remove_letified_make_tuple_elements = False ,
160
+ flags = CollapseTuple .Flag .PROPAGATE_TO_IF_ON_TUPLES ,
161
+ )
118
162
assert actual == expected
119
163
120
164
@@ -127,28 +171,28 @@ def test_propagate_to_if_on_tuples_with_let():
127
171
)
128
172
actual = CollapseTuple .apply (
129
173
testee ,
174
+ remove_letified_make_tuple_elements = True ,
130
175
flags = CollapseTuple .Flag .PROPAGATE_TO_IF_ON_TUPLES
131
- | CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS
132
- | CollapseTuple .Flag .REMOVE_LETIFIED_MAKE_TUPLE_ELEMENTS ,
176
+ | CollapseTuple .Flag .LETIFY_MAKE_TUPLE_ELEMENTS ,
133
177
)
134
178
assert actual == expected
135
179
136
180
137
181
def test_propagate_nested_lift ():
138
182
testee = im .let ("a" , im .let ("b" , 1 )("a_val" ))("a" )
139
183
expected = im .let ("b" , 1 )(im .let ("a" , "a_val" )("a" ))
140
- actual = CollapseTuple .apply (testee , flags = CollapseTuple .Flag .PROPAGATE_NESTED_LET )
184
+ actual = CollapseTuple .apply (
185
+ testee ,
186
+ remove_letified_make_tuple_elements = False ,
187
+ flags = CollapseTuple .Flag .PROPAGATE_NESTED_LET ,
188
+ )
141
189
assert actual == expected
142
190
143
191
144
- def test_collapse_complicated_ ():
145
- # TODO: fuse with test_propagate_to_if_on_tuples_with_let
192
+ def test_if_on_tuples_with_let ():
146
193
testee = im .let ("val" , im .if_ ("cond" , im .make_tuple (1 , 2 ), im .make_tuple (3 , 4 )))(
147
194
im .tuple_get (0 , "val" )
148
195
)
149
196
expected = im .if_ ("cond" , 1 , 3 )
150
- actual = CollapseTuple .apply (
151
- testee ,
152
- # flags=CollapseTuple.Flag.PROPAGATE_TO_IF_ON_TUPLES
153
- )
197
+ actual = CollapseTuple .apply (testee , remove_letified_make_tuple_elements = False )
154
198
assert actual == expected
0 commit comments