修正了种子编译器的错误
This commit is contained in:
52
Test/G7/App/main.py
Normal file
52
Test/G7/App/main.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import t
|
||||
import stdio
|
||||
import testcheck
|
||||
import stdlib
|
||||
import memhub
|
||||
from conflict_node import Value
|
||||
|
||||
# ============================================================
|
||||
# 关键冲突点:全局变量名 'Value' 与类名 'Value' 相同
|
||||
#
|
||||
# LlvmGenerator 预处理扫描会将 'Value' 注册为 IsVariable=True
|
||||
# 覆盖 SymbolTable 中的类条目。
|
||||
# 之后 _get_or_create_struct('Value') 发现 IsVariable=True,
|
||||
# 返回 _TypedPointerType 而非 IdentifiedStructType,
|
||||
# 导致 _TryLoadStructFromStub 中 set_body 被跳过。
|
||||
# ============================================================
|
||||
Value: t.CPtr = None
|
||||
|
||||
|
||||
def test_value_struct_fields():
|
||||
"""验证 Value struct 有 6 个字段(Next + 5 自有)"""
|
||||
testcheck.section("Value struct field access (6 fields expected)")
|
||||
arena: bytes = stdlib.malloc(4096)
|
||||
if arena is None:
|
||||
testcheck.check(False, "malloc arena", "FAIL")
|
||||
return
|
||||
pool: memhub.MemBuddy | t.CPtr = memhub.MemBuddy(arena, 4096)
|
||||
node: Value | t.CPtr = pool.alloc(48)
|
||||
if node is None:
|
||||
testcheck.check(False, "alloc Value", "FAIL")
|
||||
return
|
||||
# 写入字段 0 (Next, 继承自 GSListNode)
|
||||
node.Next = None
|
||||
# 写入字段 1-5 (自有字段)
|
||||
node.Ty = None
|
||||
node.Name = None
|
||||
node.IsConst = 1
|
||||
node.IntVal = 42
|
||||
node.FloatVal = 3.14
|
||||
# 读取验证
|
||||
v: t.CInt = node.IntVal
|
||||
testcheck.check(v == 42, "Value.IntVal = 42", "expect 42")
|
||||
f: t.CDouble = node.FloatVal
|
||||
testcheck.check(f > 3.0 and f < 4.0, "Value.FloatVal = 3.14", "expect ~3.14")
|
||||
c: t.CInt = node.IsConst
|
||||
testcheck.check(c == 1, "Value.IsConst = 1", "expect 1")
|
||||
|
||||
|
||||
def main() -> t.CInt:
|
||||
testcheck.begin("G7: Minimal repro - class name 'Value' conflicts with variable")
|
||||
test_value_struct_fields()
|
||||
return testcheck.end()
|
||||
Reference in New Issue
Block a user