modelize: improve message in case of inherited autoinit conflict
authorJean Privat <jean@pryen.org>
Mon, 13 Jul 2015 19:32:58 +0000 (15:32 -0400)
committerJean Privat <jean@pryen.org>
Mon, 13 Jul 2015 19:32:58 +0000 (15:32 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/modelize/modelize_property.nit

index 1afce19..be862c6 100644 (file)
@@ -305,7 +305,12 @@ redef class ModelBuilder
                                        var i = 0
                                        for p in spd.initializers do
                                                if p != longest.initializers[i] then
-                                                       self.error(nclassdef, "Error: conflict for inherited inits {spd}({spd.initializers.join(", ")}) and {longest}({longest.initializers.join(", ")})")
+                                                       var proposal = new ArraySet[MProperty]
+                                                       for spd2 in spropdefs do
+                                                               proposal.add_all spd2.initializers
+                                                       end
+                                                       proposal.add_all initializers
+                                                       self.error(nclassdef, "Error: cannot generate automatic init for class {mclassdef.mclass}. Conflict in the order in inherited initializers {spd}({spd.initializers.join(", ")}) and {longest}({longest.initializers.join(", ")}). Use `autoinit` to order initializers. eg `autoinit {proposal.join(", ")}`")
                                                        # TODO: invalidate the initializer to avoid more errors
                                                        return
                                                end