if not c.kind.need_init then continue
st = st.anchor_to(mmodule, mclassdef.bound_mtype)
var candidate = self.try_get_mproperty_by_name2(nclassdef, mmodule, st, "init").as(nullable MMethod)
- if candidate != null and candidate.intro.msignature.arity == 0 then
- combine.add(candidate)
- continue
+ if candidate != null then
+ if candidate.intro.msignature != null then
+ if candidate.intro.msignature.arity == 0 then
+ combine.add(candidate)
+ continue
+ end
+ end
end
var inhc2 = c.inherit_init_from
if inhc2 == null then inhc2 = c
set_doc(mpropdef)
var nreadable = self.n_readable
- if nreadable != null then
- var readname = name.substring_from(1)
- var mreadprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, readname).as(nullable MMethod)
- if mreadprop == null then
- var mvisibility = new_property_visibility(modelbuilder, mclassdef, nreadable.n_visibility)
- mreadprop = new MMethod(mclassdef, readname, mvisibility)
- if not self.check_redef_keyword(modelbuilder, mclassdef, nreadable.n_kwredef, false, mreadprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, mclassdef, nreadable.n_kwredef, true, mreadprop) then return
- check_redef_property_visibility(modelbuilder, nreadable.n_visibility, mreadprop)
- end
- mclassdef.mprop2npropdef[mreadprop] = self
-
- var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
- self.mreadpropdef = mreadpropdef
- modelbuilder.mpropdef2npropdef[mreadpropdef] = self
- mreadpropdef.mdoc = mpropdef.mdoc
- end
-
+ if nreadable != null then modelbuilder.error(nreadable, "Error: old-style getter no more supported")
var nwritable = self.n_writable
- if nwritable != null then
- var writename = name.substring_from(1) + "="
- var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, writename).as(nullable MMethod)
- if mwriteprop == null then
- var mvisibility = new_property_visibility(modelbuilder, mclassdef, nwritable.n_visibility)
- mwriteprop = new MMethod(mclassdef, writename, mvisibility)
- if not self.check_redef_keyword(modelbuilder, mclassdef, nwritable.n_kwredef, false, mwriteprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, mclassdef, nwritable.n_kwredef, true, mwriteprop) then return
- check_redef_property_visibility(modelbuilder, nwritable.n_visibility, mwriteprop)
- end
- mclassdef.mprop2npropdef[mwriteprop] = self
-
- var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
- self.mwritepropdef = mwritepropdef
- modelbuilder.mpropdef2npropdef[mwritepropdef] = self
- mwritepropdef.mdoc = mpropdef.mdoc
- end
+ if nwritable != null then modelbuilder.error(nwritable, "Error: old-style setter no more supported")
else
# New attribute style
var nid2 = self.n_id2.as(not null)
mwriteprop = new MMethod(mclassdef, writename, mvisibility)
if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, false, mwriteprop) then return
else
- if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, true, mwriteprop) then return
+ if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef or else n_kwredef, true, mwriteprop) then return
if nwritable != null then
check_redef_property_visibility(modelbuilder, nwritable.n_visibility, mwriteprop)
end
for i in [0..mysignature.arity[ do
var myt = mysignature.mparameters[i].mtype
var prt = msignature.mparameters[i].mtype
- if not myt.is_subtype(mmodule, mclassdef.bound_mtype, prt) and
+ if not myt.is_subtype(mmodule, mclassdef.bound_mtype, prt) or
not prt.is_subtype(mmodule, mclassdef.bound_mtype, myt) then
var node: ANode
if nsig != null then node = nsig else node = self