def result(src): exprs = list(parser.parse(src)) passes_ok = all([passmgr.visit(expr) for expr in exprs]) assert passes_ok return [cg.visit(expr) for expr in exprs]
def run(self, source, *, name=None): try: exprs = list(parser.parse(source, name=name)) except SyntaxError as exc: raise SystemExit(str(exc)) ok = all([self._pm.visit(expr) for expr in exprs]) if ok: ok = all([self._cg.visit(expr) for expr in exprs]) if not ok: self._diags.consumer.finish() raise SystemExit(1) print(self._cg.module)
def test_codegen_proto(passmgr, cg): source = ''' extern foo(bar:int) -> double ''' [expr] = parser.parse(source) passes_ok = passmgr.visit(expr) assert passes_ok code = cg.visit(expr) assert code assert isinstance(code, ir.Function) assert not code.blocks assert len(code.args) == 1 assert code.args[0].name == 'bar' assert code.function_type == ir.FunctionType(ir.DoubleType(), [ir.IntType(32)])
def assert_parses(input, *output): assert repr(list(parser.parse(input))) == repr(list(output))