11.3.5
change rwlxruqkxyskwovnynwutvouvlqrwptq
commit 6cdd0dbe16e59ef432728d483e4cfadc2c4717f2
author Alpha Chen <alpha@kejadlen.dev>
date
parent xunloxyz
diff --git a/ruby/lib/lox/resolver.rb b/ruby/lib/lox/resolver.rb
index ad60f21..9143a4b 100644
--- a/ruby/lib/lox/resolver.rb
+++ b/ruby/lib/lox/resolver.rb
@@ -44,6 +44,14 @@ module Lox
       nil
     end
 
+    def visit_function(stmt)
+      declare(stmt.name)
+      define(stmt.name)
+
+      resolve_function(stmt)
+      nil
+    end
+
     private
 
     def with_block
@@ -74,5 +82,15 @@ module Lox
       @interpreter.resolve(expr, depth)
     end
 
+    def resolve_function(fn)
+      with_scope do
+        fn.params.each do |param|
+          declare(param)
+          define(param)
+        end
+        resolve(fn.body)
+      end
+    end
+
   end
 end