From: Jean Privat Date: Mon, 2 May 2016 19:42:26 +0000 (-0400) Subject: modelbuilder: add (and use) `AQclassid::full_name` for better messages X-Git-Url: http://nitlanguage.org modelbuilder: add (and use) `AQclassid::full_name` for better messages Signed-off-by: Jean Privat --- diff --git a/src/modelbuilder_base.nit b/src/modelbuilder_base.nit index 6d78f9e..7e8f040 100644 --- a/src/modelbuilder_base.nit +++ b/src/modelbuilder_base.nit @@ -346,6 +346,7 @@ class ModelBuilder fun class_not_found(qid: AQclassid, mmodule: MModule) do var name = qid.n_id.text + var qname = qid.full_name var all_classes = model.get_mclasses_by_name(name) @@ -354,7 +355,7 @@ class ModelBuilder if not mmodule.in_importation <= c.intro_mmodule then continue if mmodule.is_visible(c.intro_mmodule, c.visibility) then continue if not qid.accept(c) then continue - error(ntype, "Error: class `{c.full_name}` not visible in module `{mmodule}`.") + error(qid, "Error: class `{c.full_name}` not visible in module `{mmodule}`.") return end @@ -368,7 +369,7 @@ class ModelBuilder hints.add "`{c.intro_mmodule.full_name}`" end if hints.not_empty then - error(ntype, "Error: class `{name}` not found in module `{mmodule}`. Maybe import {hints.join(",", " or ")}?") + error(qid, "Error: class `{qname}` not found in module `{mmodule}`. Maybe import {hints.join(",", " or ")}?") return end @@ -387,11 +388,11 @@ class ModelBuilder end end if hints.not_empty then - error(ntype, "Error: class `{name}` not found in module `{mmodule}`. Did you mean {hints.join(",", " or ")}?") + error(qid, "Error: class `{qname}` not found in module `{mmodule}`. Did you mean {hints.join(",", " or ")}?") return end - error(ntype, "Error: class `{name}` not found in module `{mmodule}`.") + error(qid, "Error: class `{name}` not found in module `{mmodule}`.") end # Return the static type associated to the node `ntype`. @@ -550,4 +551,19 @@ redef class AQclassid end return true end + + # The pretty name represented by self. + fun full_name: String + do + var res = n_id.text + var nqualified = n_qualified + if nqualified == null then return res + var ncid = nqualified.n_classid + if ncid != null then res = ncid.text + "::" + res + var nids = nqualified.n_id + if nids.not_empty then for n in nids.reverse_iterator do + res = n.text + "::" + res + end + return res + end end