Rename REAMDE to README.md
[nit.git] / src / annotation.nit
index f5d2447..73c9985 100644 (file)
@@ -30,33 +30,13 @@ redef class Prod
                var res = get_annotations(name)
                if res.is_empty then return null
                if res.length > 1 then
-                       modelbuilder.error(res[1], "Error: multiple annotation `{name}`. A previous one is defined line {res[0].location.line_start}")
+                       modelbuilder.error(res[1], "Syntax Error: multiple `{name}`. A previous one is defined line {res[0].location.line_start}.")
                end
                return res.first
        end
-
-       # Return all its annotations of a given name in the order of their declaration
-       # Retun an empty array if no such an annotation.
-       fun get_annotations(name: String): Array[AAnnotation]
-       do
-               var res = new Array[AAnnotation]
-               var nas = n_annotations
-               if nas == null then return res
-               for na in nas.n_items do
-                       if na.name != name then continue
-                       res.add(na)
-               end
-               return res
-       end
 end
 
 redef class AAnnotation
-       # The name of the annotation
-       fun name: String
-       do
-               return n_atid.n_id.text
-       end
-
        # Get the single argument of `self` as a `String`.
        # Raise error and return null on any inconsistency.
        fun arg_as_string(modelbuilder: ModelBuilder): nullable String
@@ -67,7 +47,7 @@ redef class AAnnotation
                        if arg != null then return arg
                end
 
-               modelbuilder.error(self, "Annotation error: \"{name}\" expects a single String as argument.")
+               modelbuilder.error(self, "Syntax Error: `{name}` expects a single String as argument.")
                return null
        end
 
@@ -81,7 +61,7 @@ redef class AAnnotation
                        if arg != null then return arg
                end
 
-               modelbuilder.error(self, "Annotation error: \"{name}\" expects a single Int as argument.")
+               modelbuilder.error(self, "Syntax Error: `{name}` expects a single Int as argument.")
                return null
        end
 
@@ -95,7 +75,7 @@ redef class AAnnotation
                        if arg != null then return arg
                end
 
-               modelbuilder.error(self, "Annotation error: \"{name}\" expects a single identifier as argument.")
+               modelbuilder.error(self, "Syntax Error: `{name}` expects a single identifier as argument.")
                return null
        end
 end
@@ -107,8 +87,8 @@ redef class ModelBuilder
        do
                var annotations = new Array[AAnnotation]
                for mmod in mmodule.in_importation.greaters do
-                       if not mmodule2nmodule.keys.has(mmod) then continue
-                       var amod = mmodule2nmodule[mmod]
+                       var amod = mmodule2node(mmod)
+                       if amod == null then continue
                        var module_decl = amod.n_moduledecl
                        if module_decl == null then continue
                        var aas = module_decl.get_annotations(name)
@@ -121,8 +101,8 @@ redef class ModelBuilder
        # Obviously, if there is no ast associated to `mmodule`, then nothing is returned.
        fun get_mmodule_annotation(name: String, mmodule: MModule): nullable AAnnotation
        do
-               if not mmodule2nmodule.keys.has(mmodule) then return null
-               var amod = mmodule2nmodule[mmodule]
+               var amod = mmodule2node(mmodule)
+               if amod == null then return null
                var module_decl = amod.n_moduledecl
                if module_decl == null then return null
                var res = module_decl.get_single_annotation(name, self)
@@ -162,7 +142,7 @@ redef class ModelBuilder
                        for annot in annotations do locs.add(annot.location)
 
                        toolcontext.error(mmodule.location,
-                               "Priority conflict on annotation {name}, it has been defined in: {locs.join(", ")}")
+                               "Error: priority conflict on annotation `{name}`, it has been defined in: {locs.join(", ")}.")
                end
                return annotations.first
        end