1+ #  -----------------------------------------------------------------------
2+ #  This file is part of MoonScript
3+ # 
4+ #  MoonSript is free software: you can redistribute it and/or modify
5+ #  it under the terms of the GNU General Public License as published by
6+ #  the Free Software Foundation, either version 3 of the License, or
7+ #  (at your option) any later version.
8+ # 
9+ #  MoonSript is distributed in the hope that it will be useful,
10+ #  but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12+ #  GNU General Public License for more details.
13+ # 
14+ #  You should have received a copy of the GNU General Public License
15+ #  along with MoonSript.  If not, see <https://www.gnu.org/licenses/>.
16+ # 
17+ #  Copyright (C) 2025 Krisna Pranav, MoonScript Developers
18+ #  -----------------------------------------------------------------------
19+ 
20+ module  MoonScript 
21+     class  TypeChecker 
22+       def  check (node : Ast ::CaseBranch , condition : Checkable ) : Checkable 
23+         type  = 
24+           node.pattern.try do  |item |
25+             variables = 
26+               destructure(item, condition)
27+   
28+             variables.each do  |var |
29+               scope.add(node, var[0 ], var[2 ])
30+             end 
31+   
32+             resolve(node.expression)
33+           end  ||  resolve(node.expression)
34+   
35+         if  node.expression.is_a?(Array (Ast ::CssDefinition ))
36+           VOID 
37+         else 
38+           type .as(Checkable )
39+         end 
40+       end 
41+     end 
42+ end 
0 commit comments