modelbuilder: promote `get_mclass_by_name` from typing
authorJean Privat <jean@pryen.org>
Fri, 3 Apr 2015 02:36:57 +0000 (09:36 +0700)
committerJean Privat <jean@pryen.org>
Fri, 3 Apr 2015 06:09:35 +0000 (13:09 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

src/modelbuilder_base.nit
src/semantize/typing.nit

index f01fbd8..93423df 100644 (file)
@@ -81,6 +81,16 @@ class ModelBuilder
                return res
        end
 
+       # Like `try_get_mclass_by_name` but display an error message when the class is not found
+       fun get_mclass_by_name(node: ANode, mmodule: MModule, name: String): nullable MClass
+       do
+               var mclass = try_get_mclass_by_name(node, mmodule, name)
+               if mclass == null then
+                       error(node, "Type Error: missing primitive class `{name}'.")
+               end
+               return mclass
+       end
+
        # Return a property named `name` on the type `mtype` visible in the module `mmodule`.
        # Visibility in modules is correctly handled.
        # Protected properties are returned (it is up to the caller to check and reject protected properties).
index 6a6d943..43e8ccb 100644 (file)
@@ -246,10 +246,7 @@ private class TypeVisitor
 
        fun get_mclass(node: ANode, name: String): nullable MClass
        do
-               var mclass = modelbuilder.try_get_mclass_by_name(node, mmodule, name)
-               if mclass == null then
-                       self.modelbuilder.error(node, "Type Error: missing primitive class `{name}'.")
-               end
+               var mclass = modelbuilder.get_mclass_by_name(node, mmodule, name)
                return mclass
        end