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