[前][次][番号順一覧][スレッド一覧]

ruby-changes:73360

From: Imir <ko1@a...>
Date: Thu, 1 Sep 2022 19:47:50 +0900 (JST)
Subject: [ruby-changes:73360] f67ab7f30c (master): [ruby/did_you_mean] Fixed correction duplicates in VariableNameChecker

https://git.ruby-lang.org/ruby.git/commit/?id=f67ab7f30c

From f67ab7f30c837ce4b9c2ae39d7c189413fac6dff Mon Sep 17 00:00:00 2001
From: Imir Kiyamov <makketagg@g...>
Date: Fri, 20 May 2022 16:32:11 +0300
Subject: [ruby/did_you_mean] Fixed correction duplicates in
 VariableNameChecker

https://github.com/ruby/did_you_mean/commit/c3fc412f6f
---
 .../name_error_checkers/variable_name_checker.rb             |  2 +-
 test/did_you_mean/spell_checking/test_variable_name_check.rb | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb b/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
index 36d00349c6..9a6e04fe64 100644
--- a/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
+++ b/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
@@ -79,7 +79,7 @@ module DidYouMean https://github.com/ruby/ruby/blob/trunk/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb#L79
     def corrections
       @corrections ||= SpellChecker
                      .new(dictionary: (RB_RESERVED_WORDS + lvar_names + method_names + ivar_names + cvar_names))
-                     .correct(name) - NAMES_TO_EXCLUDE[@name]
+                     .correct(name).uniq - NAMES_TO_EXCLUDE[@name]
     end
   end
 end
diff --git a/test/did_you_mean/spell_checking/test_variable_name_check.rb b/test/did_you_mean/spell_checking/test_variable_name_check.rb
index 9d8b86eb5b..0350b62660 100644
--- a/test/did_you_mean/spell_checking/test_variable_name_check.rb
+++ b/test/did_you_mean/spell_checking/test_variable_name_check.rb
@@ -137,4 +137,16 @@ class VariableNameCheckTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/did_you_mean/spell_checking/test_variable_name_check.rb#L137
     error = assert_raise(NameError){ foo }
     assert_empty error.corrections
   end
+
+  def test_exclude_duplicates_with_same_name
+    error = assert_raise(NameError) do
+      eval(<<~RUBY, binding, __FILE__, __LINE__)
+        bar = 1
+        def bar;end
+        zar
+      RUBY
+    end
+
+    assert_correction [:bar], error.corrections
+  end
 end
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]