From 640db96e0d19f634bc6b237c57a6de57b787b901 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Fri, 10 Jun 2022 11:14:57 -0400 Subject: [PATCH] Fix up did_you_mean nastiness --- lib/syntax_tree/basic_visitor.rb | 6 +++++- test/visitor_test.rb | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/syntax_tree/basic_visitor.rb b/lib/syntax_tree/basic_visitor.rb index 1ad6a80f..9e6a84c1 100644 --- a/lib/syntax_tree/basic_visitor.rb +++ b/lib/syntax_tree/basic_visitor.rb @@ -33,7 +33,11 @@ def corrections ).correct(visit_method) end - DidYouMean.correct_error(VisitMethodError, self) + # In some setups with Ruby you can turn off DidYouMean, so we're going to + # respect that setting here. + if defined?(DidYouMean) && DidYouMean.method_defined?(:correct_error) + DidYouMean.correct_error(VisitMethodError, self) + end end class << self diff --git a/test/visitor_test.rb b/test/visitor_test.rb index 5e4f134d..27bad364 100644 --- a/test/visitor_test.rb +++ b/test/visitor_test.rb @@ -40,9 +40,18 @@ def initialize end end - def test_visit_method_correction - error = assert_raises { Visitor.visit_method(:visit_binar) } - assert_match(/visit_binary/, error.message) + if defined?(DidYouMean) && DidYouMean.method_defined?(:correct_error) + def test_visit_method_correction + error = assert_raises { Visitor.visit_method(:visit_binar) } + message = + if Exception.method_defined?(:detailed_message) + error.detailed_message + else + error.message + end + + assert_match(/visit_binary/, message) + end end end end