]> Nishi Git Mirror - gwion.git/commitdiff
:fire: move const gen func
authorfennecdjay <fennecdjay@gmail.com>
Wed, 7 Feb 2024 20:09:17 +0000 (21:09 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Wed, 7 Feb 2024 20:09:17 +0000 (21:09 +0100)
src/parse/check.c
src/parse/template.c

index 3291536fdaf6834d4567abef507a92798b17d49d..0ed1c40871f0bebcd603ecc90550e5a0d306b628 100644 (file)
@@ -1871,21 +1871,6 @@ ANN static void fdef_const_generic_value(const Env env, const Type owner, const
   v->from->owner_class = owner;
 }
 
-ANN m_bool const_generic_typecheck(const Env env, const Specialized *spec, const TmplArg *targ) {
-  CHECK_OB(check_exp(env, targ->d.exp));
-  // check implicits?
-  const Type target = known_type(env, spec->td);
-  if(isa(targ->d.exp->type, target) < 0) {
-    char msg[256];
-    tcol_snprintf(msg, 255, "expected {G+}%s{0}", target->name);
-    gwerr_basic("invalid type for const generic argument", msg, NULL, env->name, spec->tag.loc, 0);
-    tcol_snprintf(msg, 255, "got {G+}%s{0}", targ->d.exp->type->name);
-    gwerr_secondary(msg, env->name, targ->d.exp->loc);
-    return GW_ERROR;
-  }
-  return GW_OK;
-}
-
 ANN static m_bool check_fdef_const_generic(const Env env, const Func_Def fdef) {
   const Tmpl *tmpl = fdef->base->tmpl;
   if(tmplarg_ntypes(tmpl->call) == tmpl->call->len) return GW_OK;
index a3aeb904661783bc2ec240fb589941215678b806..f7cbe38139bb735de226906c0f5c69619a296bbc 100644 (file)
@@ -101,6 +101,21 @@ else      if(spec->tag.sym == targ->d.td->tag.sym) {
   }
 }
 
+ANN m_bool const_generic_typecheck(const Env env, const Specialized *spec, const TmplArg *targ) {
+  CHECK_OB(check_exp(env, targ->d.exp));
+  // check implicits?
+  const Type target = known_type(env, spec->td);
+  if(isa(targ->d.exp->type, target) < 0) {
+    char msg[256];
+    tcol_snprintf(msg, 255, "expected {G+}%s{0}", target->name);
+    gwerr_basic("invalid type for const generic argument", msg, NULL, env->name, spec->tag.loc, 0);
+    tcol_snprintf(msg, 255, "got {G+}%s{0}", targ->d.exp->type->name);
+    gwerr_secondary(msg, env->name, targ->d.exp->loc);
+    return GW_ERROR;
+  }
+  return GW_OK;
+}
+
 ANN m_bool template_push_types(const Env env, const Tmpl *tmpl) {
   nspc_push_type(env->gwion->mp, env->curr);
   if (tmpl->call) check_call(env, tmpl);