Example #1
0
def test_deadcode_noop():
    def prog():
        x = 1

    outp = "x = 1"

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #2
0
def test_unused_vars_closure():
    def prog():
        def a():
            return x + b()

        x = 1

        def b():
            return 1

        def c():
            return a()

        assert a() == 2

    def outp():
        def a():
            return x + b()

        x = 1

        def b():
            return 1

        assert a() == 2

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #3
0
def test_deadcode_pure_expr():
    import json

    def f():
        return 1

    def prog():
        # impure
        x = 1
        f()
        x + f()
        # pure
        x
        x + 1
        {'a': 1}
        [0][0]
        json.loads
        ((1))

    def outp():
        # impure
        x = 1
        f()
        x + f()
        # pure

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #4
0
def test_unused_vars_basic():
    def prog():
        x = 1
        assert True

    def outp():
        assert True

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
def test_clean_imports_redundant():
    def prog():
        import json
        import json

    def outp():
        import json

    run_pass_harness(prog, CleanImportsPass, outp, locals())
Example #6
0
def test_unused_vars_copy():
    def prog():
        x = 1
        y = x

    def outp():
        x = 1

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #7
0
def test_unused_vars_noop():
    def prog():
        x = 1
        assert x == 1

    def outp():
        x = 1
        assert x == 1

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #8
0
def test_deadcode_else():
    def prog():
        if False:
            x = 1
        else:
            y = 1

    outp = "y = 1"

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #9
0
def test_deadcode_try_noexcept():
    def prog():
        try:
            x = 1
        except KeyError:
            pass

    outp = "x = 1"

    run_pass_harness(prog, DeadCodePass, outp, locals())
def test_clean_imports_move_to_top():
    def prog():
        x = 1
        import json

    def outp():
        import json
        x = 1

    run_pass_harness(prog, CleanImportsPass, outp, locals())
def test_clean_imports_sort():
    def prog():
        import json
        import csv

    def outp():
        import csv
        import json

    run_pass_harness(prog, CleanImportsPass, outp, locals())
Example #12
0
def test_deadcode_try_except():
    def prog():
        try:
            raise KeyError()
        except KeyError:
            x = 1

    outp = "x = 1"

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #13
0
def test_copy_propagation_basic():
    def prog():
        x = 1
        y = x
        z = y + x

    def outp():
        x = 1
        z = x + x

    run_pass_harness(prog, CopyPropagationPass, outp, locals())
Example #14
0
def test_unused_vars_impure():
    def f():
        pass

    def prog():
        x = f()

    def outp():
        x = f()

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #15
0
def test_unused_vars_comprehension():
    def prog():
        x = 1
        z = [x + y for y in range(10)]
        assert z[0] == 1

    def outp():
        x = 1
        z = [x + y for y in range(10)]
        assert z[0] == 1

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #16
0
def test_copy_propagation_two_step():
    def prog():
        x = 1
        y = x
        z = y
        assert z == 1

    def outp():
        x = 1
        assert x == 1

    run_pass_harness(prog, CopyPropagationPass, outp, locals())
def test_clean_imports_whitespace():
    def prog():
        import json

        import csv
        x = 1

    def outp():
        import csv
        import json

        x = 1

    run_pass_harness(prog, CleanImportsPass, outp, locals(), fixpoint=True)
Example #18
0
def test_copy_propagation_noop():
    def prog():
        x = 1
        y = x
        y = y + 1
        assert y == 2

    def outp():
        x = 1
        y = x
        y = y + 1
        assert y == 2

    run_pass_harness(prog, CopyPropagationPass, outp, locals())
Example #19
0
def test_remove_suffixes_basic():
    def prog():
        x___foo = 1

        def foo___bar():
            y___foo.x___foo = 1

    def outp():
        x = 1

        def foo():
            y.x___foo = 1

    run_pass_harness(prog, RemoveSuffixesPass, outp, locals())
Example #20
0
def test_record_to_vars_basic():
    class Cls:
        pass

    def prog():
        c = Cls.__new__(Cls)
        c.x = 1
        assert c.x == 1

    def outp():
        x___c = 1
        assert x___c == 1

    run_pass_harness(prog, RecordToVarsPass, outp, locals())
Example #21
0
def test_record_to_vars_noop_2():
    class Cls:
        def foo(self):
            pass

    def prog():
        c = Cls.__new__(Cls)
        c.foo()

    def outp():
        c = Cls.__new__(Cls)
        c.foo()

    run_pass_harness(prog, RecordToVarsPass, outp, locals())
Example #22
0
def test_deadcode_for_if_never():
    def prog():
        for i in range(10):
            if False:
                x = 1
            else:
                y = 1

    outp = """
for i in range(10):
    y = 1
"""

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #23
0
def test_copy_propagation_attribute():
    class Foo:
        def __init__(self):
            self.x = 1

    def prog():
        f = Foo()
        a = f.x
        assert a == 1

    def outp():
        f = Foo()
        assert f.x == 1

    run_pass_harness(prog, CopyPropagationPass, outp, locals())
Example #24
0
def test_record_to_vars_noop():
    class Cls:
        pass

    def prog():
        c = Cls()
        c.x = 1
        assert c.x == 1

    def outp():
        c = Cls()
        c.x = 1
        assert c.x == 1

    run_pass_harness(prog, RecordToVarsPass, outp, locals())
Example #25
0
def test_unused_vars_multiple_assign():
    def prog():
        y = 1
        y = y + 1
        x = 1
        x = 2
        assert x + y == 4

    def outp():
        y = 1
        y = y + 1
        x = 2
        assert x + y == 4

    run_pass_harness(prog, UnusedVarsPass, outp, locals())
Example #26
0
def test_deadcode_for_if_sometimes():
    def prog():
        for i in range(10):
            if i % 2 == 1:
                x = 1
            else:
                y = 1

    outp = """
for i in range(10):
    if i % 2 == 1:
        x = 1
    else:
        y = 1
"""

    run_pass_harness(prog, DeadCodePass, outp, locals())
Example #27
0
def test_copy_propagation_scope():
    def prog():
        x = 1
        y = x

        def foo():
            return [y for _ in range(1)]

        def bar(y):
            return y

    def outp():
        x = 1

        def foo():
            return [x for _ in range(1)]

        def bar(y):
            return y

    run_pass_harness(prog, CopyPropagationPass, outp, locals())
Example #28
0
def test_deadcode_keep_comments():
    def prog():
        # hello world
        """don't remove me"""
        # please remove me
        if False:
            # and remove me
            x = 1
        # please keep me
        else:
            # and keep me
            x = 2

    def outp():
        # hello world
        """don't remove me"""
        # please keep me
        # and keep me
        x = 2

    run_pass_harness(prog, DeadCodePass, outp, locals())
def test_clean_imports_preserve_comments():
    def prog():
        # A
        import json

        # B
        import csv
        if True:
            # C
            import json
            pass

    def outp():
        import csv
        import json
        # A

        # B
        if True:
            # C
            pass

    run_pass_harness(prog, CleanImportsPass, outp, locals())