model: Add `can_customize_isa` and `can_init` attributes to class kinds
authorJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Mon, 29 May 2017 15:44:06 +0000 (11:44 -0400)
committerJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 13 Jun 2017 20:13:28 +0000 (16:13 -0400)
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>

src/doc/model_ext.nit
src/model/model.nit

index 6f2f8b1..5870e72 100644 (file)
@@ -117,4 +117,4 @@ end
 fun package_visibility: MVisibility do return once new MVisibility("package", 2)
 
 # A class kind with no equivalent semantic in Nit.
-fun raw_kind(s: String): MClassKind do return new MClassKind(s, false)
+fun raw_kind(s: String): MClassKind do return new MClassKind(s, false, false, false)
index a920aef..11592d7 100644 (file)
@@ -2581,6 +2581,12 @@ end
 class MClassKind
        redef var to_s
 
+       # Can a class of kind `self` define a membership predicate?
+       var can_customize_isa: Bool
+
+       # Can a class of kind `self` define a constructor?
+       var can_init: Bool
+
        # Is a constructor required?
        var need_init: Bool
 
@@ -2606,15 +2612,15 @@ class MClassKind
 end
 
 # The class kind `abstract`
-fun abstract_kind: MClassKind do return once new MClassKind("abstract class", true)
+fun abstract_kind: MClassKind do return once new MClassKind("abstract class", false, true, true)
 # The class kind `concrete`
-fun concrete_kind: MClassKind do return once new MClassKind("class", true)
+fun concrete_kind: MClassKind do return once new MClassKind("class", false, true, true)
 # The class kind `interface`
-fun interface_kind: MClassKind do return once new MClassKind("interface", false)
+fun interface_kind: MClassKind do return once new MClassKind("interface", false, true, false)
 # The class kind `enum`
-fun enum_kind: MClassKind do return once new MClassKind("enum", false)
+fun enum_kind: MClassKind do return once new MClassKind("enum", false, true, false)
 # The class kind `extern`
-fun extern_kind: MClassKind do return once new MClassKind("extern class", false)
+fun extern_kind: MClassKind do return once new MClassKind("extern class", false, true, false)
 
 # A standalone pre-constructed model used to test various model-related methods.
 #