Add mypy types for gen_settings.py.
This commit is contained in:
@@ -202,6 +202,8 @@ class FieldPredicate(object):
|
|||||||
self.field = field
|
self.field = field
|
||||||
self.function = function
|
self.function = function
|
||||||
self.args = args
|
self.args = args
|
||||||
|
# All PredNode members must have a name field. This will never be set.
|
||||||
|
self.name = None # type: str
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
# type: () -> str
|
# type: () -> str
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ class Setting(object):
|
|||||||
self.__doc__ = doc
|
self.__doc__ = doc
|
||||||
# Offset of byte in settings vector containing this setting.
|
# Offset of byte in settings vector containing this setting.
|
||||||
self.byte_offset = None # type: int
|
self.byte_offset = None # type: int
|
||||||
|
# Index into the generated DESCRIPTORS table.
|
||||||
|
self.descriptor_index = None # type: int
|
||||||
|
|
||||||
self.group = SettingGroup.append(self)
|
self.group = SettingGroup.append(self)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -40,6 +43,10 @@ class Setting(object):
|
|||||||
"""
|
"""
|
||||||
return self.group
|
return self.group
|
||||||
|
|
||||||
|
def default_byte(self):
|
||||||
|
# type: () -> int
|
||||||
|
raise NotImplementedError("default_byte is an abstract method")
|
||||||
|
|
||||||
|
|
||||||
class BoolSetting(Setting):
|
class BoolSetting(Setting):
|
||||||
"""
|
"""
|
||||||
@@ -154,6 +161,9 @@ class SettingGroup(object):
|
|||||||
# Maps predicate -> number.
|
# Maps predicate -> number.
|
||||||
self.predicate_number = OrderedDict() # type: OrderedDict[PredNode, int] # noqa
|
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()
|
self.open()
|
||||||
|
|
||||||
def open(self):
|
def open(self):
|
||||||
|
|||||||
@@ -9,8 +9,18 @@ from cdsl import camel_case
|
|||||||
from cdsl.settings import BoolSetting, NumSetting, EnumSetting
|
from cdsl.settings import BoolSetting, NumSetting, EnumSetting
|
||||||
from base import settings
|
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):
|
def gen_enum_types(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Emit enum types for any enum settings.
|
Emit enum types for any enum settings.
|
||||||
"""
|
"""
|
||||||
@@ -27,6 +37,7 @@ def gen_enum_types(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_getter(setting, sgrp, fmt):
|
def gen_getter(setting, sgrp, fmt):
|
||||||
|
# type: (Setting, SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Emit a getter function for `setting`.
|
Emit a getter function for `setting`.
|
||||||
"""
|
"""
|
||||||
@@ -57,6 +68,7 @@ def gen_getter(setting, sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_pred_getter(pred, sgrp, fmt):
|
def gen_pred_getter(pred, sgrp, fmt):
|
||||||
|
# type: (Predicate, SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Emit a getter for a pre-computed predicate.
|
Emit a getter for a pre-computed predicate.
|
||||||
"""
|
"""
|
||||||
@@ -69,6 +81,7 @@ def gen_pred_getter(pred, sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_getters(sgrp, fmt):
|
def gen_getters(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Emit getter functions for all the settings in fmt.
|
Emit getter functions for all the settings in fmt.
|
||||||
"""
|
"""
|
||||||
@@ -87,6 +100,7 @@ def gen_getters(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_descriptors(sgrp, fmt):
|
def gen_descriptors(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Generate the DESCRIPTORS and ENUMERATORS tables.
|
Generate the DESCRIPTORS and ENUMERATORS tables.
|
||||||
"""
|
"""
|
||||||
@@ -125,6 +139,7 @@ def gen_descriptors(sgrp, fmt):
|
|||||||
fmt.line('"{}",'.format(txt))
|
fmt.line('"{}",'.format(txt))
|
||||||
|
|
||||||
def hash_setting(s):
|
def hash_setting(s):
|
||||||
|
# type: (Setting) -> int
|
||||||
return constant_hash.simple_hash(s.name)
|
return constant_hash.simple_hash(s.name)
|
||||||
|
|
||||||
hash_table = constant_hash.compute_quadratic(sgrp.settings, hash_setting)
|
hash_table = constant_hash.compute_quadratic(sgrp.settings, hash_setting)
|
||||||
@@ -140,6 +155,7 @@ def gen_descriptors(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_template(sgrp, fmt):
|
def gen_template(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Emit a Template constant.
|
Emit a Template constant.
|
||||||
"""
|
"""
|
||||||
@@ -164,6 +180,7 @@ def gen_template(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_display(sgrp, fmt):
|
def gen_display(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Generate the Display impl for Flags.
|
Generate the Display impl for Flags.
|
||||||
"""
|
"""
|
||||||
@@ -182,6 +199,7 @@ def gen_display(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_constructor(sgrp, parent, fmt):
|
def gen_constructor(sgrp, parent, fmt):
|
||||||
|
# type: (SettingGroup, PredContext, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Generate a Flags constructor.
|
Generate a Flags constructor.
|
||||||
"""
|
"""
|
||||||
@@ -235,6 +253,7 @@ def gen_constructor(sgrp, parent, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def gen_group(sgrp, fmt):
|
def gen_group(sgrp, fmt):
|
||||||
|
# type: (SettingGroup, srcgen.Formatter) -> None
|
||||||
"""
|
"""
|
||||||
Generate a Flags struct representing `sgrp`.
|
Generate a Flags struct representing `sgrp`.
|
||||||
"""
|
"""
|
||||||
@@ -252,6 +271,7 @@ def gen_group(sgrp, fmt):
|
|||||||
|
|
||||||
|
|
||||||
def generate(isas, out_dir):
|
def generate(isas, out_dir):
|
||||||
|
# type: (Sequence[TargetISA], str) -> None
|
||||||
# Generate shared settings.
|
# Generate shared settings.
|
||||||
fmt = srcgen.Formatter()
|
fmt = srcgen.Formatter()
|
||||||
settings.group.qual_mod = 'settings'
|
settings.group.qual_mod = 'settings'
|
||||||
|
|||||||
Reference in New Issue
Block a user