Example #1
0
    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]
Example #2
0
    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]
Example #3
0
    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)
Example #4
0
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)])
Example #5
0
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)])
Example #6
0
def assert_parses(input, *output):
    assert repr(list(parser.parse(input))) == repr(list(output))