var superclass: nullable MMLocalClass = null # This most specific non-mixin superclass (if any)
if supers.length > 1 then
var superclass: nullable MMLocalClass = null # This most specific non-mixin superclass (if any)
if supers.length > 1 then
- v.error(nodes.first, "Error: Explicit constructor required in {self} since multiple inheritance of constructor is forbiden. Conflicting classes are {supers.join(", ")}. Costructors are {super_constructors.join(", ")}.")
+ v.error(node, "Error: Explicit constructor required in {self} since multiple inheritance of constructor is forbiden. Conflicting classes are {supers.join(", ")}. Costructors are {super_constructors.join(", ")}.")
# Information about a signature currently build
private class SignatureBuilder
# Current visited parameter types
# Information about a signature currently build
private class SignatureBuilder
# Current visited parameter types
private fun accept_class_builder(v: ClassBuilderVisitor) do accept_abs_syntax_visitor(v)
private fun accept_class_specialization_builder(v: ClassSpecializationBuilderVisitor) do accept_abs_syntax_visitor(v)
private fun accept_class_ancestor_builder(v: ClassAncestorBuilder) do accept_abs_syntax_visitor(v)
private fun accept_class_builder(v: ClassBuilderVisitor) do accept_abs_syntax_visitor(v)
private fun accept_class_specialization_builder(v: ClassSpecializationBuilderVisitor) do accept_abs_syntax_visitor(v)
private fun accept_class_ancestor_builder(v: ClassAncestorBuilder) do accept_abs_syntax_visitor(v)
# Import super-modules
var module_names_to_import = new Array[Symbol]
var module_visibility = new HashMap[Symbol, Int]
# Import super-modules
var module_names_to_import = new Array[Symbol]
var module_visibility = new HashMap[Symbol, Int]
# Imported module name (or null)
fun module_name: nullable Symbol is abstract
# Visibility level (intrude/public/private)
fun visibility_level: Int is abstract
end
# Imported module name (or null)
fun module_name: nullable Symbol is abstract
# Visibility level (intrude/public/private)
fun visibility_level: Int is abstract
end
redef fun local_class: MMSrcLocalClass do return _local_class.as(not null)
var _local_class: nullable MMSrcLocalClass
redef fun local_class: MMSrcLocalClass do return _local_class.as(not null)
var _local_class: nullable MMSrcLocalClass
var local_classes = mod.src_local_classes
if (local_classes.has_key(name)) then
local_class = local_classes[name]
var local_classes = mod.src_local_classes
if (local_classes.has_key(name)) then
local_class = local_classes[name]
else
local_class = new MMSrcLocalClass(mod, name, self, arity)
local_classes[name] = local_class
else
local_class = new MMSrcLocalClass(mod, name, self, arity)
local_classes[name] = local_class
fun is_interface: Bool do return false
fun is_universal: Bool do return false
fun is_abstract: Bool do return false
fun is_interface: Bool do return false
fun is_universal: Bool do return false
fun is_abstract: Bool do return false
# Process and check properties of the property.
# * Distinguish inits and methods
# * Inherit or check visibility.
# Process and check properties of the property.
# * Distinguish inits and methods
# * Inherit or check visibility.
- redef fun check_visibility(v, p)
+ # Check that visibilities of types in the signature are compatible with the visibility of the property.
+ fun check_visibility(v: AbsSyntaxVisitor, p: MMLocalProperty)
redef readable var _position: Int = 0
redef fun variable: ParamVariable do return _variable.as(not null)
redef readable var _position: Int = 0
redef fun variable: ParamVariable do return _variable.as(not null)
- redef fun check_visibility(v, p)
+ # Check that visibilities of types in the signature are compatible with the visibility of the property.
+ private fun check_visibility(v: AbsSyntaxVisitor, p: MMLocalProperty)
redef fun accept_class_builder(v) do end
redef fun accept_property_builder(v) do end
redef fun accept_property_verifier(v) do end
redef fun accept_class_builder(v) do end
redef fun accept_property_builder(v) do end
redef fun accept_property_verifier(v) do end