예제 #1
0
def test_unknown_attr():
    attrs = [ast.Attribute('foobar')]
    foo_func = ast.Function(
        ast.FunctionProto('foo', [], ast.BuiltinTypes.I32, attrs))
    ap = AttrPass()
    with pytest.raises(DumbNameError):
        ap.visit(foo_func)
예제 #2
0
def test_external_attr_with_args():
    attrs = [ast.Attribute('external', args=(ast.BooleanConstant(True), ))]
    foo_func = ast.Function(
        ast.FunctionProto('foo', [], ast.BuiltinTypes.I32, attrs))
    ap = AttrPass()
    with pytest.raises(DumbTypeError):
        ap.visit(foo_func)
예제 #3
0
def test_external_attr_has_body():
    attrs = [ast.Attribute('external')]
    foo_func = ast.Function(
        ast.FunctionProto('foo', [], ast.BuiltinTypes.I32, attrs),
        ast.Block([ast.Return()]))
    ap = AttrPass()
    with pytest.raises(DumbTypeError):
        ap.visit(foo_func)
예제 #4
0
def transform_ast(ast):
    passes = [TypePass(),
              LoopPass(),
              DeadCodePass(),
              AttrPass(),
              MainFuncPass()]
    for _pass in passes:
        _pass.visit(ast)
    return ast
예제 #5
0
def test_no_attrs_has_body():
    foo_func = ast.Function(ast.FunctionProto('foo', [], ast.BuiltinTypes.I32),
                            ast.Block([ast.Return()]))
    ap = AttrPass()
    ap.visit(foo_func)
예제 #6
0
def test_external_attr_no_body():
    attrs = [ast.Attribute('external')]
    foo_func = ast.Function(
        ast.FunctionProto('foo', [], ast.BuiltinTypes.I32, attrs))
    ap = AttrPass()
    ap.visit(foo_func)
예제 #7
0
def test_no_attrs_no_body():
    foo_func = ast.Function(ast.FunctionProto('foo', [], ast.BuiltinTypes.I32))
    ap = AttrPass()
    with pytest.raises(DumbTypeError):
        ap.visit(foo_func)