]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve pattern match scoping
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Wed, 15 Jul 2020 21:37:18 +0000 (23:37 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Wed, 15 Jul 2020 21:37:18 +0000 (23:37 +0200)
src/parse/check.c

index 40506c40906fc81f20bde043df3e44c77a4bcce8..e904d781f4bf816a3733d847c5517c6518138207 100644 (file)
@@ -1246,8 +1246,6 @@ ANN static m_bool case_loop(const Env env, const Stmt_Match stmt) {
 }
 
 ANN static m_bool _check_stmt_match(const Env env, const Stmt_Match stmt) {
-  if(stmt->where)
-    CHECK_BB(check_stmt(env, stmt->where))
   CHECK_OB(check_exp(env, stmt->cond))
   MATCH_INI(env->scope)
   const m_bool ret = case_loop(env, stmt);
@@ -1255,10 +1253,16 @@ ANN static m_bool _check_stmt_match(const Env env, const Stmt_Match stmt) {
   return ret;
 }
 
-ANN static m_bool check_stmt_match(const Env env, const Stmt_Match stmt) {
+ANN static inline m_bool handle_where(const Env env, const Stmt_Match stmt) {
+  if(stmt->where)
+    CHECK_BB(check_stmt(env, stmt->where))
   RET_NSPC(_check_stmt_match(env, stmt))
 }
 
+ANN static m_bool check_stmt_match(const Env env, const Stmt_Match stmt) {
+  RET_NSPC(handle_where(env, stmt))
+}
+
 #define check_stmt_while check_stmt_flow
 #define check_stmt_until check_stmt_flow
 #define check_stmt_pp    dummy_func