modelbuilder: generalize mpropdef to APropdef
authorJean Privat <jean@pryen.org>
Thu, 25 Jul 2013 17:55:00 +0000 (13:55 -0400)
committerJean Privat <jean@pryen.org>
Thu, 25 Jul 2013 17:56:31 +0000 (13:56 -0400)
and create a virtual type MPROPDEF to link AST and model hierarchies

Signed-off-by: Jean Privat <jean@pryen.org>

src/modelize_property.nit

index 931551b..38fad98 100644 (file)
@@ -195,6 +195,12 @@ private class TextCollectorVisitor
 end
 
 redef class APropdef
+       # The associated main model entity
+       type MPROPDEF: MPropDef
+
+       # The associated propdef once build by a `ModelBuilder'
+       var mpropdef: nullable MPROPDEF writable
+
        private fun build_property(modelbuilder: ModelBuilder, nclassdef: AClassdef)
        do
        end
@@ -327,8 +333,7 @@ redef class ASignature
 end
 
 redef class AMethPropdef
-       # The associated MMethodDef once build by a `ModelBuilder'
-       var mpropdef: nullable MMethodDef
+       redef type MPROPDEF: MMethodDef
 
        # The associated super init if any
        var super_init: nullable MMethod
@@ -529,12 +534,12 @@ redef class AMethPropdef
 end
 
 redef class AAttrPropdef
-       # The associated MAttributeDef once build by a `ModelBuilder'
-       var mpropdef: nullable MAttributeDef
+       redef type MPROPDEF: MAttributeDef
+
        # The associated getter (read accessor) if any
-       var mreadpropdef: nullable MMethodDef
+       var mreadpropdef: nullable MMethodDef writable
        # The associated setter (write accessor) if any
-       var mwritepropdef: nullable MMethodDef
+       var mwritepropdef: nullable MMethodDef writable
        redef fun build_property(modelbuilder, nclassdef)
        do
                var mclassdef = nclassdef.mclassdef.as(not null)
@@ -816,8 +821,8 @@ redef class AAttrPropdef
 end
 
 redef class ATypePropdef
-       # The associated MVirtualTypeDef once build by a `ModelBuilder'
-       var mpropdef: nullable MVirtualTypeDef
+       redef type MPROPDEF: MVirtualTypeDef
+
        redef fun build_property(modelbuilder, nclassdef)
        do
                var mclassdef = nclassdef.mclassdef.as(not null)