end
# Check class conformity
- var mmbv1b = new ClassVerifierVisitor(tc, self)
+ var mmbv1c = new ClassVerifierVisitor(tc, self)
for c in classes do
- c.accept_class_visitor(mmbv1b)
+ c.accept_class_visitor(mmbv1c)
end
tc.check_errors
if s.arity != isig.arity then
v.error(self, "Redef error: {prop.local_class}::{prop} redefines {ip.local_class}::{ip} with {isig.arity} parameter(s).")
else
- for i in [0..s.arity[ do
- if s[i] != isig[i] then
- v.error(self, "Redef error: Expected {isig[i]} (as in {ip.local_class}::{ip}), got {s[i]} in {prop.local_class}::{prop}.")
+ for j in [0..s.arity[ do
+ if s[j] != isig[j] then
+ v.error(self, "Redef error: Expected {isig[j]} (as in {ip.local_class}::{ip}), got {s[j]} in {prop.local_class}::{prop}.")
end
end
end
do
super
_position = v.signature_builder.params.length
- _variable = new ParamVariable(n_id.to_symbol, self)
+ _variable = new ParamVariable(n_id.to_symbol, n_id)
v.signature_builder.params.add(self)
v.signature_builder.untyped_params.add(self)
if n_type != null then
# Add the finalizer to the closure signature
var finalize_sig = new MMSignature(new Array[MMType], null, v.module.type_any) # FIXME should be no receiver
- var finalizer_clos = new MMClosure(finalize_sig, false, true)
+ var finalizer_clos = new MMClosure(once ("break".to_symbol), finalize_sig, false, true)
sig.closures.add(finalizer_clos)
- var clos = new MMClosure(sig, n_kwbreak != null, n_expr != null)
+ var name = n_id.to_symbol
+ var clos = new MMClosure(name, sig, n_kwbreak != null, n_expr != null)
+ for c in old_signature_builder.closure_decls do
+ if c.n_id.to_symbol == name then
+ v.error(n_id, "A closure '!{name}' already defined at {c.n_id.location.relative_to(n_id.location)}.")
+ return
+ end
+ end
v.signature_builder = old_signature_builder
_position = old_signature_builder.closure_decls.length
old_signature_builder.closure_decls.add(self)
- _variable = new ClosureVariable(n_id.to_symbol, self, clos)
+ _variable = new ClosureVariable(n_id.to_symbol, n_id, clos)
end
end