X-Git-Url: http://nitlanguage.org diff --git a/src/modelize_property.nit b/src/modelize_property.nit index d946c12..1245af5 100644 --- a/src/modelize_property.nit +++ b/src/modelize_property.nit @@ -162,6 +162,12 @@ redef class MClassDef private var propdef_names = new HashSet[String] end +redef class MPropDef + # Does the MPropDef contains a call to super or a call of a super-constructor? + # Subsequent phases of the frontend (esp. typing) set it if required + var has_supercall: Bool writable = false +end + redef class AClassdef var build_properties_is_done: Bool = false # The list of super-constructor to call at the start of the free constructor @@ -232,6 +238,12 @@ redef class APropdef return mvisibility end + private fun set_doc(mpropdef: MPropDef) + do + var ndoc = self.n_doc + if ndoc != null then mpropdef.mdoc = ndoc.to_mdoc + end + private fun check_redef_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility, mprop: MProperty) do if nvisibility == null then return @@ -410,6 +422,8 @@ redef class AMethPropdef mclassdef.propdef_names.add(mpropdef.mproperty.name) + set_doc(mpropdef) + self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self if mpropdef.is_intro then @@ -588,6 +602,7 @@ redef class AAttrPropdef var mpropdef = new MAttributeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self + set_doc(mpropdef) var nreadable = self.n_readable if nreadable != null then @@ -606,6 +621,7 @@ redef class AAttrPropdef var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef modelbuilder.mpropdef2npropdef[mreadpropdef] = self + mreadpropdef.mdoc = mpropdef.mdoc end var nwritable = self.n_writable @@ -625,6 +641,7 @@ redef class AAttrPropdef var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef modelbuilder.mpropdef2npropdef[mwritepropdef] = self + mwritepropdef.mdoc = mpropdef.mdoc end else # New attribute style @@ -633,6 +650,7 @@ redef class AAttrPropdef var mpropdef = new MAttributeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self + set_doc(mpropdef) var readname = name var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod) @@ -649,6 +667,7 @@ redef class AAttrPropdef var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef modelbuilder.mpropdef2npropdef[mreadpropdef] = self + mreadpropdef.mdoc = mpropdef.mdoc var writename = name + "=" var nwritable = self.n_writable @@ -675,6 +694,7 @@ redef class AAttrPropdef var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef modelbuilder.mpropdef2npropdef[mwritepropdef] = self + mwritepropdef.mdoc = mpropdef.mdoc end end @@ -863,6 +883,7 @@ redef class ATypePropdef var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef + set_doc(mpropdef) end redef fun build_signature(modelbuilder, nclassdef) @@ -882,6 +903,9 @@ redef class ATypePropdef redef fun check_signature(modelbuilder, nclassdef) do + var mpropdef = self.mpropdef + if mpropdef == null then return # Error thus skiped + var bound = self.mpropdef.bound # Fast case: the bound is not a formal type