X-Git-Url: http://nitlanguage.org diff --git a/src/semantize/typing.nit b/src/semantize/typing.nit index 6727d02..a46f632 100644 --- a/src/semantize/typing.nit +++ b/src/semantize/typing.nit @@ -1875,6 +1875,7 @@ redef class ANewExpr end self.recvtype = recvtype + var kind = recvtype.mclass.kind var name: String var nid = self.n_id @@ -1883,11 +1884,24 @@ redef class ANewExpr else name = "new" end + if name == "intern" then + if kind != concrete_kind then + v.error(self, "Type Error: Cannot instantiate {kind} {recvtype}.") + return + end + if n_args.n_exprs.not_empty then + v.error(n_args, "Type Error: the intern constructor expects no arguments.") + return + end + # Our job is done + self.mtype = recvtype + return + end + var callsite = v.get_method(self, recvtype, name, false) if callsite == null then return if not callsite.mproperty.is_new then - var kind = recvtype.mclass.kind if kind != concrete_kind then v.error(self, "Type Error: Cannot instantiate {kind} {recvtype}.") return