From fb5dcfc0be13634e059f23a25a523867204bc4f4 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Fri, 20 Feb 2015 12:38:58 +0700 Subject: [PATCH] modelize: add class annotation `noautoinit` to clear the list of initializers Signed-off-by: Jean Privat --- src/modelize/modelize_property.nit | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/modelize/modelize_property.nit b/src/modelize/modelize_property.nit index 83acc62..ba62b6e 100644 --- a/src/modelize/modelize_property.nit +++ b/src/modelize/modelize_property.nit @@ -224,11 +224,20 @@ redef class ModelBuilder # Look at the autoinit class-annotation var autoinit = nclassdef.get_single_annotation("autoinit", self) + var noautoinit = nclassdef.get_single_annotation("noautoinit", self) if autoinit != null then # Just throws the collected initializers mparameters.clear initializers.clear + if noautoinit != null then + error(autoinit, "Error: `autoinit` and `noautoinit` are incompatible.") + end + + if autoinit.n_args.is_empty then + error(autoinit, "Syntax error: `autoinit` expects method identifiers, use `noautoinit` to clear all autoinits.") + end + # Get and check each argument for narg in autoinit.n_args do var id = narg.as_id @@ -264,6 +273,13 @@ redef class ModelBuilder abort end end + else if noautoinit != null then + if initializers.is_empty then + warning(noautoinit, "useless-noautoinit", "Warning: the list of autoinit is already empty.") + end + # Just clear initializers + mparameters.clear + initializers.clear else # Search the longest-one and checks for conflict var longest = spropdefs.first -- 1.7.9.5