]> Nishi Git Mirror - gwion.git/commitdiff
:bug: improve scan1
authorfennecdjay <fennecdjay@gmail.com>
Wed, 16 Nov 2022 18:32:10 +0000 (19:32 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Wed, 16 Nov 2022 18:32:10 +0000 (19:32 +0100)
src/parse/scan1.c

index 1d034d2ace694b12f4ad54948e65ad96e1f4d8b4..2d7e968513a583ba66eb883b6fba6319904edb3c 100644 (file)
@@ -456,6 +456,8 @@ ANN m_bool scan1_fptr_def(const Env env, const Fptr_Def fptr) {
 
 ANN m_bool scan1_type_def(const Env env, const Type_Def tdef) {
   if (tdef->when) CHECK_BB(scan1_exp(env, tdef->when));
+  if(tflag(tdef->type->info->parent, tflag_ref))
+    ERR_B(tdef->pos, "can't typedef a reference type");
   if (tflag(tdef->type, tflag_cdef))
     return scan1_class_def(env, tdef->type->info->cdef);
   return tdef->type->info->cdef ? scan1_cdef(env, tdef->type) : GW_OK;
@@ -512,7 +514,7 @@ ANN static m_bool scan1_stmt_return(const Env env, const Stmt_Exp stmt) {
     ERR_B(stmt_self(stmt)->pos,
           _("'return' statement found outside function definition"))
   if (env->scope->depth == 1) env->func->memoize = 1;
-  if(stmt->val) scan1_exp(env, stmt->val);
+  if(stmt->val) CHECK_BB(scan1_exp(env, stmt->val));
   return GW_OK;
 }