Files
hakorune/tests/development/test_diamond_problem.hako

48 lines
1.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Diamond Problem菱形継承問題テスト
print("=== Diamond Problem Test ===")
# 中間層
box Middle from StringBox {
init { middle_data }
birth(content) {
from StringBox.birth(content)
me.middle_data = "middle"
print("Middle.birth called")
}
override toString() {
print("Middle.toString called")
return "Middle[" + from StringBox.toString() + "]"
}
}
# 多重委譲(問題のあるパターン)
box Diamond from Middle, StringBox {
init { diamond_data }
birth(content) {
from Middle.birth(content)
# from StringBox.birth(content) # これも必要?
me.diamond_data = "diamond"
print("Diamond.birth called")
}
override toString() {
print("Diamond.toString called")
# どちらも StringBox.toString() を呼ぶ
local a = from Middle.toString() # Middle -> StringBox
local b = from StringBox.toString() # 直接 StringBox
return "Diamond[" + a + " | " + b + "]"
}
}
# テスト実行
print("\n--- Creating diamond instance ---")
local diamond = new Diamond("test")
print("\n--- Calling toString ---")
print(diamond.toString())
print("\n=== Test completed ===")