forked from M-Labs/artiq
1
0
Fork 0

compiler: Fix #1871 (array() breaks math functions)

GitHub: Fixes #1871.
This commit is contained in:
David Nadlinger 2022-04-21 23:43:20 +01:00 committed by Sebastien Bourdeauducq
parent ca67ae8365
commit 8786b137a3
2 changed files with 42 additions and 1 deletions

View File

@ -169,7 +169,9 @@ def fn_list():
return types.TConstructor(TList()) return types.TConstructor(TList())
def fn_array(): def fn_array():
return types.TConstructor(TArray()) # numpy.array() is actually a "magic" macro that is expanded in-place, but
# just as for builtin functions, we do not want to quote it, etc.
return types.TBuiltinFunction("array")
def fn_Exception(): def fn_Exception():
return types.TExceptionConstructor(TException("Exception")) return types.TExceptionConstructor(TException("Exception"))

View File

@ -530,3 +530,42 @@ class NumpyBoolTest(ExperimentCase):
def test_numpy_bool(self): def test_numpy_bool(self):
"""Test NumPy bools decay to ARTIQ compiler builtin bools as expected""" """Test NumPy bools decay to ARTIQ compiler builtin bools as expected"""
self.create(_NumpyBool).run() self.create(_NumpyBool).run()
class _Alignment(EnvExperiment):
def build(self):
self.setattr_device("core")
@rpc
def a_tuple(self) -> TList(TTuple([TBool, TFloat, TBool])):
return [(True, 1234.5678, True)]
@kernel
def run(self):
a, b, c = self.a_tuple()[0]
d, e, f = self.a_tuple()[0]
assert a == d
assert b == e
assert c == f
return 0
class AlignmentTest(ExperimentCase):
def test_tuple(self):
self.create(_Alignment).run()
class _NumpyQuoting(EnvExperiment):
def build(self):
self.setattr_device("core")
@kernel
def run(self):
a = np.array([10, 20])
b = np.sqrt(4.0)
class NumpyQuotingTest(ExperimentCase):
def test_issue_1871(self):
"""Ensure numpy.array() does not break NumPy math functions"""
self.create(_NumpyQuoting).run()