From d9e7438c5b3f5e6e16c4196fa6917613cefaf687 Mon Sep 17 00:00:00 2001 From: Fred Snyder Date: Tue, 24 Dec 2019 01:58:28 -0500 Subject: [PATCH] ApiMap#get_methods always includes Kernel methods. --- lib/solargraph/api_map.rb | 1 + spec/type_checker_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/solargraph/api_map.rb b/lib/solargraph/api_map.rb index 1aa222dac..bdc4b224d 100755 --- a/lib/solargraph/api_map.rb +++ b/lib/solargraph/api_map.rb @@ -311,6 +311,7 @@ def get_methods fqns, scope: :instance, visibility: [:public], deep: true result.concat inner_get_methods('Kernel', :instance, visibility, deep, skip) else result.concat inner_get_methods(fqns, scope, visibility, deep, skip) + result.concat get_methods('Kernel', scope: :instance, visibility: [:public], deep: true) if deep && fqns != 'Kernel' end resolved = resolve_method_aliases(result, visibility) cache.set_methods(fqns, scope, visibility, deep, resolved) diff --git a/spec/type_checker_spec.rb b/spec/type_checker_spec.rb index 68bb6b75d..19e4e083a 100644 --- a/spec/type_checker_spec.rb +++ b/spec/type_checker_spec.rb @@ -486,4 +486,15 @@ def bar bool )) expect(checker.strict_type_problems).to be_one end + + it 'resolves Kernel methods in instance scopes' do + checker = Solargraph::TypeChecker.load_string(%( + class Foo + def bar + raise 'oops' + end + end + )) + expect(checker.strict_type_problems).to be_empty + end end