子类型关系
如果对象 a 继承自 b, a 是 b 的类型。 这种了类型关系扩展到 var, ref, ptr :
- proc isSubtype(a, b: PType): bool =
- if a.kind == b.kind:
- case a.kind
- of object:
- var aa = a.baseType
- while aa != nil and aa != b: aa = aa.baseType
- result = aa == b
- of var, ref, ptr:
- result = isSubtype(a.baseType, b.baseType)