diff --git a/local_tests/test_vm_simple_loop.nyash b/local_tests/test_vm_simple_loop.nyash new file mode 100644 index 00000000..ca1fb161 --- /dev/null +++ b/local_tests/test_vm_simple_loop.nyash @@ -0,0 +1,12 @@ +// 超シンプルなVMループテスト +local i = 1 +print("Before loop: i = " + i) + +// 3回だけループ +loop(i <= 3) { + print("In loop: i = " + i) + i = i + 1 + print("After increment: i = " + i) +} + +print("After loop: i = " + i) \ No newline at end of file diff --git a/local_tests/test_windows_vm.nyash b/local_tests/test_windows_vm.nyash new file mode 100644 index 00000000..6a30a87d --- /dev/null +++ b/local_tests/test_windows_vm.nyash @@ -0,0 +1,25 @@ +// Windows VM Test Program +// 超シンプルなプログラムでVMの動作確認 + +print("🎉 Hello from Nyash VM on Windows!") +print("=====================================") + +// 基本的な計算 +local x = 10 +local y = 20 +local result = x + y +print("10 + 20 = " + result) + +// ループテスト +print("\nCounting to 5:") +local i = 1 +loop(i <= 5) { + print(" Count: " + i) + i = i + 1 +} + +// Box生成テスト +local str = new StringBox("Nyash") +print("\nStringBox created: " + str) + +print("\n✅ VM test completed successfully!") \ No newline at end of file diff --git a/src/mir/builder.rs b/src/mir/builder.rs index 4178bfbe..5ffb403a 100644 --- a/src/mir/builder.rs +++ b/src/mir/builder.rs @@ -316,7 +316,15 @@ impl MirBuilder { let value_id = self.build_expression(value)?; // In SSA form, each assignment creates a new value - self.variable_map.insert(var_name, value_id); + self.variable_map.insert(var_name.clone(), value_id); + + // Generate a Store instruction to ensure VM can track the assignment + // For now, we use the variable name as a simple pointer identifier + let var_ptr = self.value_gen.next(); + self.emit_instruction(MirInstruction::Store { + value: value_id, + ptr: var_ptr, + })?; Ok(value_id) }