@@ -164,7 +164,7 @@ def const_range():
164164 assert const_range () == ilist .IList (range (0 , 3 ))
165165
166166
167- def test_inline_get_item ():
167+ def test_inline_get_item_integer ():
168168 items = tuple (ir .TestValue () for _ in range (2 ))
169169
170170 test_block = ir .Block (
@@ -199,6 +199,30 @@ def test_inline_get_item():
199199 assert test_block .is_equal (expected_block )
200200
201201
202+ def test_inline_getitem_slice ():
203+ values = tuple (ir .TestValue () for _ in range (6 ))
204+ test_block = ir .Block (
205+ [
206+ qreg := ilist .New (values = values ),
207+ slice_value := py .Constant (slice (2 , 5 , 1 )),
208+ py .GetItem (obj = qreg .result , index = slice_value .result ),
209+ ]
210+ )
211+ slice_value .result .hints ["const" ] = const .Value (slice (2 , 5 , 1 ))
212+
213+ rule = rewrite .Walk (ilist .rewrite .InlineGetItem ())
214+ rule .rewrite (test_block )
215+
216+ expected_block = ir .Block (
217+ [
218+ qreg := ilist .New (values = values ),
219+ slice_value := py .Constant (slice (2 , 5 , 1 )),
220+ ilist .New (values = (values [2 ], values [3 ], values [4 ])),
221+ ]
222+ )
223+ assert test_block .is_equal (expected_block )
224+
225+
202226def test_ilist_constprop ():
203227 from kirin .analysis import const
204228
0 commit comments