X-Git-Url: http://nitlanguage.org diff --git a/src/metamodel/type_formal.nit b/src/metamodel/type_formal.nit index fcbcb87..e214218 100644 --- a/src/metamodel/type_formal.nit +++ b/src/metamodel/type_formal.nit @@ -22,33 +22,30 @@ import inheritance redef class MMType # The type a indirect type refers to - meth direct_type: MMType do return self + fun direct_type: MMType do return self end # Formal types are named indirect types class MMTypeFormal special MMType - redef meth is_valid do return _bound != null + redef fun is_valid do return _bound != null and _bound.is_valid # The name of the type - readable attr _name: Symbol + readable var _name: Symbol # The type refered - meth bound: MMType - do - assert is_valid - return _bound - end - attr _bound: MMType + fun bound: MMType do return _bound.as(not null) + var _bound: nullable MMType - redef meth <(t) do return t != null and (t == self or t.is_supertype(_bound)) - redef meth is_supertype(t) do return _bound.is_supertype(t) - redef meth direct_type do return _bound.direct_type - redef meth local_class do return _bound.local_class + redef fun <(t) do return t == self or t.is_supertype(bound) + redef fun is_supertype(t) do return _bound.is_supertype(t) + redef fun is_nullable do return _bound.is_nullable + redef fun direct_type do return _bound.direct_type + redef fun local_class do return _bound.local_class - redef meth to_s do return _name.to_s + redef fun to_s do return _name.to_s - protected init(name: Symbol, bound: MMType) + protected init(name: Symbol, bound: nullable MMType) do _name = name _bound = bound