Fix SocketBox state separation issue - method call clone state loss
Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
This commit is contained in:
26
test_direct_clone.nyash
Normal file
26
test_direct_clone.nyash
Normal file
@ -0,0 +1,26 @@
|
||||
# Isolate the Arc sharing issue
|
||||
static box Main {
|
||||
init { console }
|
||||
|
||||
main() {
|
||||
me.console = new ConsoleBox()
|
||||
me.console.log("🔬 Direct Clone Test")
|
||||
|
||||
# Create socket and bind
|
||||
local socket1 = new SocketBox()
|
||||
local bindResult = socket1.bind("127.0.0.1", 19777)
|
||||
me.console.log("✅ Bind result: " + bindResult.toString())
|
||||
|
||||
# Clone the socket manually
|
||||
local socket2 = socket1
|
||||
|
||||
# Check if clone has the same state
|
||||
local isServer1 = socket1.isServer()
|
||||
local isServer2 = socket2.isServer()
|
||||
|
||||
me.console.log("🔍 socket1.isServer(): " + isServer1.toString())
|
||||
me.console.log("🔍 socket2.isServer(): " + isServer2.toString())
|
||||
|
||||
return "DIRECT_CLONE_TEST"
|
||||
}
|
||||
}
|
||||
29
test_field_arc_sharing.nyash
Normal file
29
test_field_arc_sharing.nyash
Normal file
@ -0,0 +1,29 @@
|
||||
# Test Arc sharing for field access
|
||||
static box Main {
|
||||
init { console, server }
|
||||
|
||||
main() {
|
||||
me.console = new ConsoleBox()
|
||||
me.console.log("🔬 Field Access Arc Sharing Test")
|
||||
|
||||
# Store socket in field
|
||||
me.server = new SocketBox()
|
||||
me.console.log("✅ Created me.server")
|
||||
|
||||
# Test 1: Multiple field accesses
|
||||
local str1 = me.server.toString()
|
||||
me.console.log("📊 First field access: " + str1)
|
||||
|
||||
local str2 = me.server.toString()
|
||||
me.console.log("📊 Second field access: " + str2)
|
||||
|
||||
# Test 2: State change via field access
|
||||
local bindResult = me.server.bind("127.0.0.1", 19888)
|
||||
me.console.log("✅ Bind via field access: " + bindResult.toString())
|
||||
|
||||
local isServer = me.server.isServer()
|
||||
me.console.log("🔍 isServer via field access: " + isServer.toString())
|
||||
|
||||
return "FIELD_ACCESS_ARC_TEST"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user