if mpropdef.mproperty.is_root_init then
assert defined_init == null
defined_init = mpropdef
- else if mpropdef.mproperty.name == "init" then
+ else if mpropdef.mproperty.name == "autoinit" then
# An explicit old-style init named "init", so return
return
end
else if n_kwinit != null then
name = "init"
name_node = n_kwinit
+ if self.n_signature.n_params.not_empty or get_single_annotation("old_style_init", modelbuilder) != null then
+ name = "autoinit"
+ end
else if n_kwnew != null then
name = "new"
name_node = n_kwnew
var cname
if mproperty.is_init then
- if mproperty.name == "init" or mproperty.name == "new" then
+ if mproperty.name == "init" or mproperty.name == "new" or mproperty.name == "autoinit" then
cname = "new_{recv_mtype.mangled_cname}"
else
cname = "new_{recv_mtype.mangled_cname}_{mproperty.short_cname}"
mmodule, mtype, meth_name )
if meth == null then
- meth_name = "init"
+ meth_name = "autoinit"
meth = toolcontext.modelbuilder.try_get_mproperty_by_name2( self,
mmodule, mtype, meth_name )
end
do
var cname
if self.is_init then
- if self.name == "init" or self.name == "new" then
+ if self.name == "init" or self.name == "new" or self.name == "autoinit" then
cname = "new_{recv_mtype.mangled_cname}"
else
cname = "new_{recv_mtype.mangled_cname}_{self.short_cname}"
var mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
if name == "new" and mproperty == null then
- name = "init"
+ name = "autoinit"
mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
+ if mproperty == null then
+ name = "init"
+ mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
+ end
end
if mproperty == null then
# get the constructor
var callsite
if self isa ACrangeExpr then
- callsite = v.get_method(self, mtype, "init", false)
+ callsite = v.get_method(self, mtype, "autoinit", false)
else if self isa AOrangeExpr then
callsite = v.get_method(self, mtype, "without_last", false)
else
end
redef class AInitExpr
- redef fun property_name do return "init"
+ redef fun property_name do if n_args.n_exprs.is_empty then return "init" else return "autoinit"
redef fun property_node do return n_kwinit
redef fun compute_raw_arguments do return n_args.to_a
end