Fix nested components - render functions now return i32
Changes: - Component render functions return i32 (root element) instead of void - Nested components (yield SomeComponent()) now work correctly - Added main() entry point that calls top-level component and sets root - Updated runtime to call main() instead of render_ComponentName() Note: Active state in ternary expressions still needs reactive updates This commit fixes the nested component rendering issue All tests passing (51 passed, 2 skipped) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
adf95f424d
commit
b0e38db22c
26 files changed
+2310
-1222
No files matched your search
@@ -57,7 +57,7 @@ def Button(label):
|
||||
llvm_ir = generate_llvm_ir(ir)
|
||||
|
||||
# Should generate render function with parameter
|
||||
assert "define void @render_Button(i32 %label)" in llvm_ir
|
||||
assert "define i32 @render_Button(i32 %label)" in llvm_ir
|
||||
|
||||
|
||||
def test_parse_yield_component_with_args():
|
||||
@@ -111,8 +111,8 @@ def Parent():
|
||||
components = parse_component(source)
|
||||
llvm_ir = generate_llvm_ir(components)
|
||||
|
||||
# Should call render_Child with argument
|
||||
assert "call void @render_Child(i32 42)" in llvm_ir
|
||||
# Should call render_Child with argument and capture return value
|
||||
assert "call i32 @render_Child(i32 42)" in llvm_ir
|
||||
|
||||
|
||||
def test_component_with_default_param():
|
||||
@@ -180,7 +180,7 @@ def Counter(initial_count):
|
||||
llvm_ir = generate_llvm_ir(ir)
|
||||
|
||||
# Should accept parameter
|
||||
assert "define void @render_Counter(i32 %initial_count)" in llvm_ir
|
||||
assert "define i32 @render_Counter(i32 %initial_count)" in llvm_ir
|
||||
|
||||
# Signal should be initialized with parameter value
|
||||
# This will require storing the param value to the signal global
|
||||
Reference in new issue
Block a user