Wire up reactive signal updates to conditionals
Critical change that makes conditionals reactive: - Added signal_conditional_deps map to track dependencies - Added _extract_signals_from_expr() to find signals in expressions - Populate dependency map during _collect_conditionals() - Replace TODO comments in signal setters with reevaluate calls How it works: 1. During collection, analyze if/match test/subject expressions 2. Extract all signal names referenced in conditions 3. Build map: signal_name -> [conditional_ids that use it] 4. When signal is updated (assign/augassign), call reevaluate for each dependent conditional Example: set_tab_0() now: store i32 0, i32* @signal_Tabs_tab_index call void @reevaluate_conditional_4() call void @reevaluate_conditional_5() call void @reevaluate_conditional_6() call void @reevaluate_conditional_7() This makes tabs fully interactive! 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
3540c44abb
commit
ac7726df46
4 files changed
+74
-10
No files matched your search
+24
-6
@@ -121,7 +121,10 @@ entry:
|
||||
define void @set_setting_0() {
|
||||
entry:
|
||||
store i32 0, i32* @signal_VerticalTabs_setting_tab
|
||||
; TODO: Update DOM nodes bound to setting_tab
|
||||
call void @reevaluate_conditional_0()
|
||||
call void @reevaluate_conditional_1()
|
||||
call void @reevaluate_conditional_2()
|
||||
call void @reevaluate_conditional_3()
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -129,7 +132,10 @@ entry:
|
||||
define void @set_setting_1() {
|
||||
entry:
|
||||
store i32 1, i32* @signal_VerticalTabs_setting_tab
|
||||
; TODO: Update DOM nodes bound to setting_tab
|
||||
call void @reevaluate_conditional_0()
|
||||
call void @reevaluate_conditional_1()
|
||||
call void @reevaluate_conditional_2()
|
||||
call void @reevaluate_conditional_3()
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -137,7 +143,10 @@ entry:
|
||||
define void @set_setting_2() {
|
||||
entry:
|
||||
store i32 2, i32* @signal_VerticalTabs_setting_tab
|
||||
; TODO: Update DOM nodes bound to setting_tab
|
||||
call void @reevaluate_conditional_0()
|
||||
call void @reevaluate_conditional_1()
|
||||
call void @reevaluate_conditional_2()
|
||||
call void @reevaluate_conditional_3()
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -609,7 +618,10 @@ entry:
|
||||
define void @set_tab_0() {
|
||||
entry:
|
||||
store i32 0, i32* @signal_Tabs_tab_index
|
||||
; TODO: Update DOM nodes bound to tab_index
|
||||
call void @reevaluate_conditional_4()
|
||||
call void @reevaluate_conditional_5()
|
||||
call void @reevaluate_conditional_6()
|
||||
call void @reevaluate_conditional_7()
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -617,7 +629,10 @@ entry:
|
||||
define void @set_tab_1() {
|
||||
entry:
|
||||
store i32 1, i32* @signal_Tabs_tab_index
|
||||
; TODO: Update DOM nodes bound to tab_index
|
||||
call void @reevaluate_conditional_4()
|
||||
call void @reevaluate_conditional_5()
|
||||
call void @reevaluate_conditional_6()
|
||||
call void @reevaluate_conditional_7()
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -625,7 +640,10 @@ entry:
|
||||
define void @set_tab_2() {
|
||||
entry:
|
||||
store i32 2, i32* @signal_Tabs_tab_index
|
||||
; TODO: Update DOM nodes bound to tab_index
|
||||
call void @reevaluate_conditional_4()
|
||||
call void @reevaluate_conditional_5()
|
||||
call void @reevaluate_conditional_6()
|
||||
call void @reevaluate_conditional_7()
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user