From 98ecebd85b6a659940ac765e8c77d7c267cbe2d6 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 30 Mar 2017 19:52:06 -0700 Subject: [PATCH] Add a mypy.ini file and enable some more warnings. Also require all Python functions to have a type declaration. --- lib/cretonne/meta/build.py | 2 +- lib/cretonne/meta/cdsl/typevar.py | 2 +- lib/cretonne/meta/gen_encoding.py | 14 ++++++++------ lib/cretonne/meta/mypy.ini | 5 +++++ 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 lib/cretonne/meta/mypy.ini diff --git a/lib/cretonne/meta/build.py b/lib/cretonne/meta/build.py index 08ba14a358..a94b9ce706 100644 --- a/lib/cretonne/meta/build.py +++ b/lib/cretonne/meta/build.py @@ -18,7 +18,7 @@ parser = argparse.ArgumentParser(description='Generate sources for Cretonne.') parser.add_argument('--out-dir', help='set output directory') args = parser.parse_args() -out_dir = args.out_dir # type: ignore +out_dir = args.out_dir isas = isa.all_isas() diff --git a/lib/cretonne/meta/cdsl/typevar.py b/lib/cretonne/meta/cdsl/typevar.py index 84d099657c..2c5141d78c 100644 --- a/lib/cretonne/meta/cdsl/typevar.py +++ b/lib/cretonne/meta/cdsl/typevar.py @@ -60,7 +60,7 @@ def decode_interval(intv, full_range, default=None): """ if isinstance(intv, tuple): # mypy buig here: 'builtins.None' object is not iterable - lo, hi = intv # type: ignore + lo, hi = intv assert is_power_of_two(lo) assert is_power_of_two(hi) assert lo <= hi diff --git a/lib/cretonne/meta/gen_encoding.py b/lib/cretonne/meta/gen_encoding.py index 6ee10eb632..e78d8942dc 100644 --- a/lib/cretonne/meta/gen_encoding.py +++ b/lib/cretonne/meta/gen_encoding.py @@ -289,9 +289,10 @@ class Level2Table(object): Append the hash table to `level2_hashtables` and record the offset. """ - hash_table = compute_quadratic( - self.lists.values(), - lambda enclist: enclist.inst.number) + def hash_func(enclist): + # type: (EncList) -> int + return enclist.inst.number + hash_table = compute_quadratic(self.lists.values(), hash_func) self.hash_table_offset = len(level2_hashtables) self.hash_table_len = len(hash_table) @@ -402,9 +403,10 @@ def emit_level1_hashtable(cpumode, level1, offt, fmt): """ Emit a level 1 hash table for `cpumode`. """ - hash_table = compute_quadratic( - level1.tables.values(), - lambda level2: level2.ty.number) + def hash_func(level2): + # type: (Level2Table) -> int + return level2.ty.number + hash_table = compute_quadratic(level1.tables.values(), hash_func) with fmt.indented( 'pub static LEVEL1_{}: [Level1Entry<{}>; {}] = [' diff --git a/lib/cretonne/meta/mypy.ini b/lib/cretonne/meta/mypy.ini new file mode 100644 index 0000000000..ca7f5e4c00 --- /dev/null +++ b/lib/cretonne/meta/mypy.ini @@ -0,0 +1,5 @@ +[mypy] +python_version = 2.7 +disallow_untyped_defs = True +warn_unused_ignores = True +warn_return_any = True