modelizey: continue processing broken redef virtual type
authorJean Privat <jean@pryen.org>
Wed, 28 Oct 2015 16:03:33 +0000 (12:03 -0400)
committerJean Privat <jean@pryen.org>
Thu, 29 Oct 2015 12:36:27 +0000 (08:36 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/modelize/modelize_property.nit

index b0c0f60..e4ae1c5 100644 (file)
@@ -1582,22 +1582,23 @@ redef class ATypePropdef
                                modelbuilder.warning(n_id, "bad-type-name", "Warning: lowercase in the virtual type `{name}`.")
                                break
                        end
-                       if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, false, mprop) then return
                else
-                       if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, true, mprop) then return
                        assert mprop isa MVirtualTypeProp
                        check_redef_property_visibility(modelbuilder, self.n_visibility, mprop)
                end
-               mclassdef.mprop2npropdef[mprop] = self
 
                var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location)
                self.mpropdef = mpropdef
-               modelbuilder.mpropdef2npropdef[mpropdef] = self
                if mpropdef.is_intro then
                        modelbuilder.toolcontext.info("{mpropdef} introduces new type {mprop.full_name}", 4)
                else
                        modelbuilder.toolcontext.info("{mpropdef} redefines type {mprop.full_name}", 4)
                end
+               if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, not mpropdef.is_intro, mprop) then
+                       mpropdef.is_broken =true
+               end
+               mclassdef.mprop2npropdef[mprop] = self
+               modelbuilder.mpropdef2npropdef[mpropdef] = self
                set_doc(mpropdef, modelbuilder)
 
                var atfixed = get_single_annotation("fixed", modelbuilder)