nmodules.add(nmodule)
self.mmodule2nmodule[mmodule] = nmodule
+ if decl != null then
+ var ndoc = decl.n_doc
+ if ndoc != null then mmodule.mdoc = ndoc.to_mdoc
+ end
+
return mmodule
end
redef class APrivateVisibility
redef fun mvisibility do return private_visibility
end
+
+redef class ADoc
+ private var mdoc_cache: nullable MDoc
+ fun to_mdoc: MDoc
+ do
+ var res = mdoc_cache
+ if res != null then return res
+ res = new MDoc
+ for c in n_comment do
+ var text = c.text
+ if text.length < 2 then
+ res.content.add ""
+ continue
+ end
+ assert text.chars[0] == '#'
+ if text.chars[1] == ' ' then
+ text = text.substring_from(2) # eat starting `#` and space
+ else
+ text = text.substring_from(1) # eat atarting `#` only
+ end
+ if text.chars.last == '\n' then text = text.substring(0, text.length-1) # drop \n
+ res.content.add(text)
+ end
+ mdoc_cache = res
+ return res
+ end
+end
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
mclassdef.propdef_names.add(mpropdef.mproperty.name)
+ set_doc(mpropdef)
+
self.mpropdef = mpropdef
modelbuilder.mpropdef2npropdef[mpropdef] = self
if mpropdef.is_intro then
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
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
var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
self.mwritepropdef = mwritepropdef
modelbuilder.mpropdef2npropdef[mwritepropdef] = self
+ mwritepropdef.mdoc = mpropdef.mdoc
end
else
# New attribute style
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)
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
var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
self.mwritepropdef = mwritepropdef
modelbuilder.mpropdef2npropdef[mwritepropdef] = self
+ mwritepropdef.mdoc = mpropdef.mdoc
end
end
var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location)
self.mpropdef = mpropdef
+ set_doc(mpropdef)
end
redef fun build_signature(modelbuilder, nclassdef)