parent
a658cb2bbf
commit
b90687c988
7 changed files with 34 additions and 22 deletions
|
|
@ -1255,10 +1255,16 @@ class Statement:
|
|||
def __init__(self, *, src_loc_at=0):
|
||||
self.src_loc = tracer.get_src_loc(1 + src_loc_at)
|
||||
|
||||
# TODO(nmigen-0.2): remove this
|
||||
@classmethod
|
||||
@deprecated("instead of `Statement.wrap`, use `Statement.cast`")
|
||||
def wrap(cls, obj):
|
||||
return cls.cast(obj)
|
||||
|
||||
@staticmethod
|
||||
def wrap(obj):
|
||||
def cast(obj):
|
||||
if isinstance(obj, Iterable):
|
||||
return _StatementList(sum((Statement.wrap(e) for e in obj), []))
|
||||
return _StatementList(sum((Statement.cast(e) for e in obj), []))
|
||||
else:
|
||||
if isinstance(obj, Statement):
|
||||
return _StatementList([obj])
|
||||
|
|
@ -1359,7 +1365,7 @@ class Switch(Statement):
|
|||
new_keys = (*new_keys, key)
|
||||
if not isinstance(stmts, Iterable):
|
||||
stmts = [stmts]
|
||||
self.cases[new_keys] = Statement.wrap(stmts)
|
||||
self.cases[new_keys] = Statement.cast(stmts)
|
||||
if orig_keys in case_src_locs:
|
||||
self.case_src_locs[new_keys] = case_src_locs[orig_keys]
|
||||
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
|||
self.submodules = _ModuleBuilderSubmodules(self)
|
||||
self.domains = _ModuleBuilderDomainSet(self)
|
||||
|
||||
self._statements = Statement.wrap([])
|
||||
self._statements = Statement.cast([])
|
||||
self._ctrl_context = None
|
||||
self._ctrl_stack = []
|
||||
|
||||
|
|
@ -433,7 +433,7 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
|||
while len(self._ctrl_stack) > self.domain._depth:
|
||||
self._pop_ctrl()
|
||||
|
||||
for assign in Statement.wrap(assigns):
|
||||
for assign in Statement.cast(assigns):
|
||||
if not compat_mode and not isinstance(assign, (Assign, Assert, Assume, Cover)):
|
||||
raise SyntaxError(
|
||||
"Only assignments and property checks may be appended to d.{}"
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ class Fragment:
|
|||
yield from self.domains
|
||||
|
||||
def add_statements(self, *stmts):
|
||||
self.statements += Statement.wrap(stmts)
|
||||
self.statements += Statement.cast(stmts)
|
||||
|
||||
def add_subfragment(self, subfragment, name=None):
|
||||
assert isinstance(subfragment, Fragment)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from collections import OrderedDict
|
|||
from functools import reduce
|
||||
|
||||
from .. import tracer
|
||||
from ..tools import union
|
||||
from ..tools import union, deprecated
|
||||
from .ast import *
|
||||
|
||||
|
||||
|
|
@ -19,11 +19,17 @@ DIR_FANIN = Direction.FANIN
|
|||
|
||||
class Layout:
|
||||
@staticmethod
|
||||
def wrap(obj, src_loc_at=0):
|
||||
def cast(obj, *, src_loc_at=0):
|
||||
if isinstance(obj, Layout):
|
||||
return obj
|
||||
return Layout(obj, src_loc_at=1 + src_loc_at)
|
||||
|
||||
# TODO(nmigen-0.2): remove this
|
||||
@classmethod
|
||||
@deprecated("instead of `Layout.wrap`, use `Layout.cast`")
|
||||
def wrap(cls, obj, *, src_loc_at=0):
|
||||
return cls.cast(obj, src_loc_at=1 + src_loc_at)
|
||||
|
||||
def __init__(self, fields, *, src_loc_at=0):
|
||||
self.fields = OrderedDict()
|
||||
for field in fields:
|
||||
|
|
@ -35,7 +41,7 @@ class Layout:
|
|||
name, shape = field
|
||||
direction = DIR_NONE
|
||||
if isinstance(shape, list):
|
||||
shape = Layout.wrap(shape)
|
||||
shape = Layout.cast(shape)
|
||||
else:
|
||||
name, shape, direction = field
|
||||
if not isinstance(direction, Direction):
|
||||
|
|
@ -115,7 +121,7 @@ class Record(Value):
|
|||
return b
|
||||
return "{}__{}".format(a, b)
|
||||
|
||||
self.layout = Layout.wrap(layout, src_loc_at=1 + src_loc_at)
|
||||
self.layout = Layout.cast(layout, src_loc_at=1 + src_loc_at)
|
||||
self.fields = OrderedDict()
|
||||
for field_name, field_shape, field_dir in self.layout:
|
||||
if fields is not None and field_name in fields:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue