1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/gem_prelude.rb
schneems a50df1ab0e Setup SyntaxSuggest as default gem
Adds the `syntax_suggest` syntax error display tool to Ruby through the same mechanism as `error_highlight` and `did_you_mean`. Reference ticket: https://bugs.ruby-lang.org/issues/18159

close #4845

## What is syntax_suggest?

When a syntax error is raised by requiring a file, dead_end will use a combination of indentation and lexing to identify the problem.

> Note: Previously this tool was named `dead_end`. 

## Known issues

- SyntaxSearch's approach of showing syntax errors only works through integration with `require`, `load`, `autoload`, and `require_relative` (since it monkeypatches them to detect syntax errors). It does not work with direct Ruby file invocations https://github.com/zombocom/dead_end/issues/31.
  - This causes failure in the test suite (test_expected_backtrace_location_when_inheriting_from_basic_object_and_including_kernel) and confusion when inspecting backtraces if there's a different error when trying to require a file such as measuring memory (https://github.com/zombocom/syntax_suggest/issues/124#issuecomment-1006705016).
  - Discussed fix. We previously talked about opening up `SyntaxError` to be monkeypatched in the same way that other gems hook into `NoMethodError`. This is currently not possible and requires development work. When we last talked about it at RubyKaigi Nobu expressed an ability to make such a change.
2022-08-19 10:02:24 +09:00

26 lines
522 B
Ruby

begin
require 'rubygems'
rescue LoadError => e
raise unless e.path == 'rubygems'
warn "`RubyGems' were not loaded."
end if defined?(Gem)
begin
require 'error_highlight'
rescue LoadError
warn "`error_highlight' was not loaded."
end if defined?(ErrorHighlight)
begin
require 'did_you_mean'
rescue LoadError
warn "`did_you_mean' was not loaded."
end if defined?(DidYouMean)
begin
require 'syntax_suggest/core_ext'
rescue LoadError
warn "`syntax_suggest' was not loaded."
end if defined?(SyntaxSuggest)