forked from M-Labs/artiq
compiler: Fix/test 1D array construction from generic iterables
This commit is contained in:
parent
38c17622cc
commit
cb1cadb46a
|
@ -740,6 +740,10 @@ class Inferencer(algorithm.Visitor):
|
|||
# KLUDGE: Support multidimensional arary creation if lexically
|
||||
# specified as a rectangular array of lists.
|
||||
elt, num_dims = match_rectangular_list([arg])
|
||||
if num_dims == 0:
|
||||
# Not given as a list, so just default to 1 dimension.
|
||||
elt = builtins.get_iterable_elt(arg.type)
|
||||
num_dims = 1
|
||||
self._unify(node.type,
|
||||
builtins.TArray(elt, types.TValue(num_dims)),
|
||||
node.loc, arg.loc)
|
||||
|
|
|
@ -13,6 +13,14 @@ assert len(empty_array) == 0
|
|||
assert empty_array.shape == (0,)
|
||||
assert [x * x for x in empty_array] == []
|
||||
|
||||
# Creating a list from a generic iterable always generates an 1D array, as we can't
|
||||
# check for rectangularity at compile time. (This could be changed to *assume*
|
||||
# rectangularity and insert runtime checks instead.)
|
||||
list_of_lists = [[1, 2], [3, 4]]
|
||||
array_of_lists = array(list_of_lists)
|
||||
assert array_of_lists.shape == (2,)
|
||||
assert [x for x in array_of_lists] == list_of_lists
|
||||
|
||||
matrix = array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
|
||||
assert len(matrix) == 2
|
||||
assert matrix.shape == (2, 3)
|
||||
|
|
Loading…
Reference in New Issue