redef class MMType
# The type a indirect type refers to
fun direct_type: MMType do return self
+
+ fun has_formal: Bool do return false
end
# Formal types are named indirect types
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 fun has_formal do return true
redef fun to_s do return _name.to_s
end
end
+redef class MMNullableType
+ redef fun has_formal do return self.base_type.has_formal
+end