Merge: Contract: Change mpropdef driving
[nit.git] / src / frontend / check_annotation.nit
index 36244f6..9dc9cfd 100644 (file)
@@ -40,7 +40,7 @@ private class CheckAnnotationPhase
        do
                # Get the mmodule
                var mmodule = nmodule.mmodule
-               assert mmodule != null
+               if mmodule == null then return
                self.mmodule = mmodule
 
                # If no decl block then quit
@@ -61,7 +61,7 @@ private class CheckAnnotationPhase
 
                        for m in super_mmodules do
                                if declared_annotations[m].has(name) then
-                                       modelbuilder.warning(annot, "multiple-annotation-declarations", "Warning: an annotation `{name}` is already declared in module `{m}`")
+                                       modelbuilder.warning(annot, "multiple-annotation-declarations", "Warning: an annotation `{name}` is already declared in module `{m}`.")
                                        break label
                                end
                        end
@@ -76,28 +76,45 @@ private class CheckAnnotationPhase
        var primtives_annotations_list = """
 new_annotation
 
+conditional
+
 deprecated
 fixed
 lazy
 noinit
 readonly
 writable
+optional
 autoinit
 noautoinit
+lateinit
 nosuper
 old_style_init
 abstract
 intern
 extern
 no_warning
+generated
 
 auto_inspect
 
 pkgconfig
 cflags
 ldflags
+light_ffi
 
 platform
+
+test
+before
+before_all
+after
+after_all
+example
+
+expect
+ensure
+no_contract
 """
 
        # Efficient set build from `primtives_annotations_list`
@@ -112,7 +129,7 @@ platform
                if primtives_annotations.has(name) then return
 
                var mmodule = self.mmodule
-               assert mmodule != null
+               if mmodule == null then return
 
                # Lazily build the full user-list
                var annots = user_annotations.get_or_null(mmodule)
@@ -125,7 +142,7 @@ platform
 
                if annots.has(name) then return
 
-               toolcontext.modelbuilder.warning(nat, "unknown-annotation", "Warning: unknown annotation `{name}`")
+               toolcontext.modelbuilder.warning(nat, "unknown-annotation", "Warning: unknown annotation `{name}`.")
 
                annots.add(name) # to avoid multiple errors on the same name
        end