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