]> Nishi Git Mirror - gwion.git/commitdiff
:fire: handle multiple passes, even better
authorfennecdjay <fennecdjay@gmail.com>
Mon, 12 Feb 2024 23:50:00 +0000 (00:50 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Mon, 12 Feb 2024 23:50:00 +0000 (00:50 +0100)
src/pass.c

index fdde35a557ed614aa0d4e62b3a9548f621d462b4..1fb31961e5595f86ba34caf58402e91bd6b6b805 100644 (file)
 #define N_SCANPASS 4
 
 static m_bool typecheck_ast(const Env env, Ast *ast) {
-  env->scope->poison = false; // move me
-  scan0_ast(env, ast);
-  if(env->scope->poison)env->context->error = true;
-  scan1_ast(env, ast);
-  if(env->scope->poison)env->context->error = true;
-  scan2_ast(env, ast);
-  if(env->scope->poison)env->context->error = true;
-    CHECK_b(check_ast(env, ast));
-  if(env->scope->poison)env->context->error = true;
+  if(!scan0_ast(env, ast))
+    env->context->error = true;
+  if(!scan1_ast(env, ast))
+    env->context->error = true;
+  if(!scan2_ast(env, ast))
+    env->context->error = true;
+  if(!check_ast(env, ast))
+    env->context->error = true;
 //  CHECK_b(traverse_ast(env, ast));
 //  if(env->scope->poison)env->context->error = true;
   if(env->context->error)return GW_ERROR;