forked from M-Labs/artiq
transforms.artiq_ir_generator: treat builtins in 'with' syntactically.
This commit is contained in:
parent
22dab0c7cc
commit
ccc993071b
|
@ -695,9 +695,11 @@ class ARTIQIRGenerator(algorithm.Visitor):
|
|||
context_expr_node = node.items[0].context_expr
|
||||
optional_vars_node = node.items[0].optional_vars
|
||||
|
||||
if types.is_builtin(context_expr_node.type, "sequential"):
|
||||
if isinstance(context_expr_node, asttyped.NameT) and \
|
||||
context_expr_node.id == "sequential":
|
||||
self.visit(node.body)
|
||||
elif types.is_builtin(context_expr_node.type, "parallel"):
|
||||
elif isinstance(context_expr_node, asttyped.NameT) and \
|
||||
context_expr_node.id == "parallel":
|
||||
parallel = self.append(ir.Parallel([]))
|
||||
|
||||
heads, tails = [], []
|
||||
|
@ -715,6 +717,9 @@ class ARTIQIRGenerator(algorithm.Visitor):
|
|||
if not tail.is_terminated():
|
||||
tail.append(ir.Branch(self.current_block))
|
||||
|
||||
else:
|
||||
assert False
|
||||
|
||||
# Expression visitors
|
||||
# These visitors return a node in addition to mutating
|
||||
# the IR.
|
||||
|
|
|
@ -762,7 +762,11 @@ class Inferencer(algorithm.Visitor):
|
|||
self._unify(node.type, typ.find().instance,
|
||||
node.loc, None)
|
||||
else:
|
||||
assert False
|
||||
diag = diagnostic.Diagnostic("error",
|
||||
"builtin function '{name}' cannot be used in this context",
|
||||
{"name": typ.name},
|
||||
node.loc)
|
||||
self.engine.process(diag)
|
||||
|
||||
def visit_CallT(self, node):
|
||||
self.generic_visit(node)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.inferencer +diag %s >%t
|
||||
# RUN: OutputCheck %s --file-to-check=%t
|
||||
|
||||
# CHECK-L: ${LINE:+1}: error: builtin function 'sequential' cannot be used in this context
|
||||
sequential()
|
Loading…
Reference in New Issue