From a9ec28ab7c9526c3dfa477e3460a4c68326ad8d3 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 30 Mar 2017 18:42:06 -0700 Subject: [PATCH] Add mypy types for gen_settings.py. --- lib/cretonne/meta/cdsl/predicates.py | 2 ++ lib/cretonne/meta/cdsl/settings.py | 10 ++++++++++ lib/cretonne/meta/gen_settings.py | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/lib/cretonne/meta/cdsl/predicates.py b/lib/cretonne/meta/cdsl/predicates.py index 4cfe8fffb5..8ba4c8eb41 100644 --- a/lib/cretonne/meta/cdsl/predicates.py +++ b/lib/cretonne/meta/cdsl/predicates.py @@ -202,6 +202,8 @@ class FieldPredicate(object): self.field = field self.function = function self.args = args + # All PredNode members must have a name field. This will never be set. + self.name = None # type: str def __str__(self): # type: () -> str diff --git a/lib/cretonne/meta/cdsl/settings.py b/lib/cretonne/meta/cdsl/settings.py index ea50afa44b..d9404060dd 100644 --- a/lib/cretonne/meta/cdsl/settings.py +++ b/lib/cretonne/meta/cdsl/settings.py @@ -26,6 +26,9 @@ class Setting(object): self.__doc__ = doc # Offset of byte in settings vector containing this setting. self.byte_offset = None # type: int + # Index into the generated DESCRIPTORS table. + self.descriptor_index = None # type: int + self.group = SettingGroup.append(self) def __str__(self): @@ -40,6 +43,10 @@ class Setting(object): """ return self.group + def default_byte(self): + # type: () -> int + raise NotImplementedError("default_byte is an abstract method") + class BoolSetting(Setting): """ @@ -154,6 +161,9 @@ class SettingGroup(object): # Maps predicate -> number. self.predicate_number = OrderedDict() # type: OrderedDict[PredNode, int] # noqa + # Fully qualified Rust module name. See gen_settings.py. + self.qual_mod = None # type: str + self.open() def open(self): diff --git a/lib/cretonne/meta/gen_settings.py b/lib/cretonne/meta/gen_settings.py index 6429333d28..847a72399d 100644 --- a/lib/cretonne/meta/gen_settings.py +++ b/lib/cretonne/meta/gen_settings.py @@ -9,8 +9,18 @@ from cdsl import camel_case from cdsl.settings import BoolSetting, NumSetting, EnumSetting from base import settings +try: + from typing import Sequence, Set, Tuple, List, TYPE_CHECKING # noqa + if TYPE_CHECKING: + from cdsl.isa import TargetISA # noqa + from cdsl.settings import Setting, SettingGroup # noqa + from cdsl.predicates import Predicate, PredContext # noqa +except ImportError: + pass + def gen_enum_types(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Emit enum types for any enum settings. """ @@ -27,6 +37,7 @@ def gen_enum_types(sgrp, fmt): def gen_getter(setting, sgrp, fmt): + # type: (Setting, SettingGroup, srcgen.Formatter) -> None """ Emit a getter function for `setting`. """ @@ -57,6 +68,7 @@ def gen_getter(setting, sgrp, fmt): def gen_pred_getter(pred, sgrp, fmt): + # type: (Predicate, SettingGroup, srcgen.Formatter) -> None """ Emit a getter for a pre-computed predicate. """ @@ -69,6 +81,7 @@ def gen_pred_getter(pred, sgrp, fmt): def gen_getters(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Emit getter functions for all the settings in fmt. """ @@ -87,6 +100,7 @@ def gen_getters(sgrp, fmt): def gen_descriptors(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Generate the DESCRIPTORS and ENUMERATORS tables. """ @@ -125,6 +139,7 @@ def gen_descriptors(sgrp, fmt): fmt.line('"{}",'.format(txt)) def hash_setting(s): + # type: (Setting) -> int return constant_hash.simple_hash(s.name) hash_table = constant_hash.compute_quadratic(sgrp.settings, hash_setting) @@ -140,6 +155,7 @@ def gen_descriptors(sgrp, fmt): def gen_template(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Emit a Template constant. """ @@ -164,6 +180,7 @@ def gen_template(sgrp, fmt): def gen_display(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Generate the Display impl for Flags. """ @@ -182,6 +199,7 @@ def gen_display(sgrp, fmt): def gen_constructor(sgrp, parent, fmt): + # type: (SettingGroup, PredContext, srcgen.Formatter) -> None """ Generate a Flags constructor. """ @@ -235,6 +253,7 @@ def gen_constructor(sgrp, parent, fmt): def gen_group(sgrp, fmt): + # type: (SettingGroup, srcgen.Formatter) -> None """ Generate a Flags struct representing `sgrp`. """ @@ -252,6 +271,7 @@ def gen_group(sgrp, fmt): def generate(isas, out_dir): + # type: (Sequence[TargetISA], str) -> None # Generate shared settings. fmt = srcgen.Formatter() settings.group.qual_mod = 'settings'