Add direct signal assignment in event handlers
- Handle 'assign' type statements in _emit_handler_statement() - Evaluate value expression and store to signal global - Enables patterns like: setting_tab = 0 - All tests passing (30/30)
This commit is contained in:
1 parent
74ff1e7e9f
commit
e18baf3106
4 files changed
+271
-606
No files matched your search
Binary file not shown.
@@ -161,7 +161,19 @@ class SignalLLVMIRGenerator:
|
||||
|
||||
def _emit_handler_statement(self, stmt: dict[str, Any]) -> None:
|
||||
"""Emit a statement inside an event handler."""
|
||||
if stmt["type"] == "augassign":
|
||||
if stmt["type"] == "assign":
|
||||
# Handle direct signal assignment (x = 5)
|
||||
signal_name = stmt["target"]
|
||||
if signal_name in self.signals:
|
||||
# Evaluate the value expression
|
||||
value_var = self._emit_expr(stmt["value"])
|
||||
|
||||
# Store the value
|
||||
self.lines.append(f" store i32 {value_var}, i32* {self._signal_global(signal_name)}")
|
||||
|
||||
# TODO: Trigger DOM updates
|
||||
self.lines.append(f" ; TODO: Update DOM nodes bound to {signal_name}")
|
||||
elif stmt["type"] == "augassign":
|
||||
# Handle signal updates (count += 1)
|
||||
signal_name = stmt["target"]
|
||||
if signal_name in self.signals:
|
||||
|
||||
Reference in new issue
Block a user