diff --git a/artiq/compiler/transforms/inferencer.py b/artiq/compiler/transforms/inferencer.py index f72f01127..7d6d065b7 100644 --- a/artiq/compiler/transforms/inferencer.py +++ b/artiq/compiler/transforms/inferencer.py @@ -305,6 +305,7 @@ class Inferencer(algorithm.Visitor): def visit_IfExpT(self, node): self.generic_visit(node) + self._unify(node.test.type, builtins.TBool(), node.test.loc, None) self._unify(node.body.type, node.orelse.type, node.body.loc, node.orelse.loc) self._unify(node.type, node.body.type, diff --git a/artiq/test/lit/inferencer/if_expr.py b/artiq/test/lit/inferencer/if_expr.py new file mode 100644 index 000000000..d955bc736 --- /dev/null +++ b/artiq/test/lit/inferencer/if_expr.py @@ -0,0 +1,6 @@ +# RUN: %python -m artiq.compiler.testbench.inferencer %s >%t +# RUN: OutputCheck %s --file-to-check=%t + +# CHECK-L: def foo(val:bool)->numpy.int?: +def foo(val): + return 1 if val else 0