Skip to content

Commit 93a99e8

Browse files
committed
Tweaks
1 parent 8fc9699 commit 93a99e8

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

mypyc/codegen/emitfunc.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -816,15 +816,20 @@ def visit_get_element_ptr(self, op: GetElementPtr) -> None:
816816
)
817817

818818
def visit_set_element(self, op: SetElement) -> None:
819-
# TODO: do properly
820819
dest = self.reg(op)
821820
item = self.reg(op.item)
822821
field = op.field
823822
if isinstance(op.src, Undef):
823+
# First assignment to an undefined struct is trivial.
824824
self.emit_line(f"{dest}.{field} = {item};")
825825
else:
826+
# In the general case create a copy of the struct with a single
827+
# item modified.
828+
#
829+
# TODO: Can we do better if only a subset of fields are initialized?
830+
# TODO: Make this less verbose in the common case
831+
# TODO: Support tuples (or use RStruct for tuples)?
826832
src = self.reg(op.src)
827-
# TODO: Support tuples (or use RStruct for tuples)
828833
src_type = op.src.type
829834
assert isinstance(src_type, RStruct), src_type
830835
init_items = []

mypyc/ir/ops.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ def __init__(self, value: bytes, line: int = -1) -> None:
245245
self.line = line
246246

247247

248+
@final
248249
class Undef(Value):
249250
"""An undefined value.
250251

0 commit comments

Comments
 (0)