@@ -135,7 +135,7 @@ def resolver(a: ValueType):
135135@type_resolver (_registry , ["py_ir.tuple_unpack" ])
136136def resolver (a : ValueType ):
137137 check_is_tuple (a )
138- return get_type_param (a , "elements" )
138+ return unpack_seq ( get_type_param (a , "elements" ) )
139139
140140
141141@type_resolver (_registry , ["py_ir.getitem" ])
@@ -220,18 +220,27 @@ def getitem_typing(dims: ValueType, index: ValueType):
220220 res_dims = create_seq ()
221221 indices_len = get_seq_size (indices )
222222 i = 0
223- drop_count = 0
223+ dim_idx = 0
224224 while i < indices_len :
225- if is_same (get_seq_element (indices , i ), NoneTyp ):
225+ elem = get_seq_element (indices , i )
226+ if is_same (elem , NoneTyp ):
226227 res_dims = append_seq (res_dims , 1 )
228+ elif is_same (get_type_name (elem ), "Slice" ):
229+ lower = get_type_param (elem , "lower" )
230+ # TODO: check for literals
231+ if is_same (lower , NoneTyp ):
232+ lower = 0
233+
234+ upper = get_type_param (elem , "upper" )
235+ if is_same (upper , NoneTyp ):
236+ upper = get_seq_element (dims , dim_idx )
237+
238+ # size = upper - lower TODO
239+ res_dims = append_seq (res_dims , upper )
240+ dim_idx += 1
227241 else :
228- drop_count += 1
229- i += 1
242+ dim_idx += 1
230243
231- dims_count = get_seq_size (dims )
232- i = drop_count
233- while i < dims_count :
234- res_dims = append_seq (res_dims , get_seq_element (dims , i ))
235244 i += 1
236245
237246 return res_dims
@@ -264,14 +273,6 @@ def resolver(target: ValueType):
264273 return make_type ("Tuple" , elements = dims )
265274
266275
267- @type_resolver (_registry , ["py_ir.getitem" ])
268- def resolver (target : ValueType , index : ValueType ):
269- check_is_tensor (target )
270- return make_type (
271- "Tensor" , dims = getitem_typing (get_type_param (target , "dims" ), index )
272- )
273-
274-
275276@type_resolver (_registry , ["py_ir.binop" ])
276277def resolver (lhs : ValueType , rhs : ValueType ):
277278 # TODO: broadcasting
0 commit comments