+ redef fun accept_class_verifier(v)
+ do
+ super
+ var glob = _local_class.global
+ for c in _local_class.cshe.direct_greaters do
+ var cg = c.global
+ if glob.is_interface then
+ if cg.is_enum then
+ v.error(self, "Special error: Interface {name} try to specialise enum class {c.name}.")
+ else if not cg.is_interface then
+ v.error(self, "Special error: Interface {name} try to specialise class {c.name}.")
+ end
+ else if glob.is_enum then
+ if not cg.is_interface and not cg.is_enum then
+ v.error(self, "Special error: Enum class {name} try to specialise class {c.name}.")
+ end
+ else
+ if cg.is_enum then
+ v.error(self, "Special error: Class {name} try to specialise enum class {c.name}.")
+ end
+ end
+
+ end
+ end
+
+ redef fun accept_abs_syntax_visitor(v)
+ do
+ v.local_class = _local_class
+ super
+ v.local_class = null
+ end
+end
+
+redef class AClasskind
+ fun is_interface: Bool do return false
+ fun is_enum: Bool do return false
+ fun is_abstract: Bool do return false
+end
+
+redef class AInterfaceClasskind
+ redef fun is_interface do return true
+end
+redef class AEnumClasskind
+ redef fun is_enum do return true
+end
+redef class AAbstractClasskind
+ redef fun is_abstract do return true
+end
+
+redef class AStdClassdef
+ redef fun name
+ do
+ return n_id.to_symbol
+ end
+ redef fun arity
+ do
+ return n_formaldefs.length
+ end
+
+ redef fun visibility_level