Skip to content

Commit

Permalink
* Use require_relative in the Parser codebase (#1003)
Browse files Browse the repository at this point in the history
If there are many searches in the `$LOAD_PATH` in the user environment,
require will perform unnecessary searches that are not needed.
In contrast, `require_relative` is efficient because it uses a relative path.

Parser gem requires Ruby 2.0+, it is possible to use `require_relative`,
which was introduced in Ruby 1.9.
https://github.com/whitequark/parser/blob/v3.3.0.5/parser.gemspec#L27
  • Loading branch information
koic committed Mar 17, 2024
1 parent 76a704c commit 503cf61
Show file tree
Hide file tree
Showing 24 changed files with 126 additions and 126 deletions.
2 changes: 1 addition & 1 deletion lib/gauntlet_parser.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true

require 'gauntlet'
require 'parser/all'
require_relative 'parser/all'
require 'shellwords'

class ParserGauntlet < Gauntlet
Expand Down
108 changes: 54 additions & 54 deletions lib/parser.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true

if RUBY_VERSION =~ /^1\.[89]\./
require 'parser/version'
require_relative 'parser/version'
raise LoadError, <<-UNSUPPORTED_VERSION_MSG
parser v#{Parser::VERSION} cannot run on Ruby #{RUBY_VERSION}.
Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.
Expand All @@ -17,75 +17,75 @@
# @api public
#
module Parser
require 'parser/version'
require 'parser/messages'
require 'parser/deprecation'
require_relative 'parser/version'
require_relative 'parser/messages'
require_relative 'parser/deprecation'

module AST
require 'parser/ast/node'
require 'parser/ast/processor'
require 'parser/meta'
require_relative 'parser/ast/node'
require_relative 'parser/ast/processor'
require_relative 'parser/meta'
end

module Source
require 'parser/source/buffer'
require 'parser/source/range'

require 'parser/source/comment'
require 'parser/source/comment/associator'

require 'parser/source/rewriter'
require 'parser/source/rewriter/action'
require 'parser/source/tree_rewriter'
require 'parser/source/tree_rewriter/action'

require 'parser/source/map'
require 'parser/source/map/operator'
require 'parser/source/map/collection'
require 'parser/source/map/constant'
require 'parser/source/map/variable'
require 'parser/source/map/keyword'
require 'parser/source/map/definition'
require 'parser/source/map/method_definition'
require 'parser/source/map/send'
require 'parser/source/map/index'
require 'parser/source/map/condition'
require 'parser/source/map/ternary'
require 'parser/source/map/for'
require 'parser/source/map/rescue_body'
require 'parser/source/map/heredoc'
require 'parser/source/map/objc_kwarg'
require_relative 'parser/source/buffer'
require_relative 'parser/source/range'

require_relative 'parser/source/comment'
require_relative 'parser/source/comment/associator'

require_relative 'parser/source/rewriter'
require_relative 'parser/source/rewriter/action'
require_relative 'parser/source/tree_rewriter'
require_relative 'parser/source/tree_rewriter/action'

require_relative 'parser/source/map'
require_relative 'parser/source/map/operator'
require_relative 'parser/source/map/collection'
require_relative 'parser/source/map/constant'
require_relative 'parser/source/map/variable'
require_relative 'parser/source/map/keyword'
require_relative 'parser/source/map/definition'
require_relative 'parser/source/map/method_definition'
require_relative 'parser/source/map/send'
require_relative 'parser/source/map/index'
require_relative 'parser/source/map/condition'
require_relative 'parser/source/map/ternary'
require_relative 'parser/source/map/for'
require_relative 'parser/source/map/rescue_body'
require_relative 'parser/source/map/heredoc'
require_relative 'parser/source/map/objc_kwarg'
end

require 'parser/syntax_error'
require 'parser/clobbering_error'
require 'parser/unknown_encoding_in_magic_comment_error'
require 'parser/diagnostic'
require 'parser/diagnostic/engine'
require_relative 'parser/syntax_error'
require_relative 'parser/clobbering_error'
require_relative 'parser/unknown_encoding_in_magic_comment_error'
require_relative 'parser/diagnostic'
require_relative 'parser/diagnostic/engine'

require 'parser/static_environment'
require_relative 'parser/static_environment'

if RUBY_ENGINE == 'truffleruby'
require 'parser/lexer-F0'
require_relative 'parser/lexer-F0'
else
require 'parser/lexer-F1'
require_relative 'parser/lexer-F1'
end
require 'parser/lexer-strings'
require 'parser/lexer/literal'
require 'parser/lexer/stack_state'
require 'parser/lexer/dedenter'
require_relative 'parser/lexer-strings'
require_relative 'parser/lexer/literal'
require_relative 'parser/lexer/stack_state'
require_relative 'parser/lexer/dedenter'

module Builders
require 'parser/builders/default'
require_relative 'parser/builders/default'
end

require 'parser/context'
require 'parser/max_numparam_stack'
require 'parser/current_arg_stack'
require 'parser/variables_stack'
require_relative 'parser/context'
require_relative 'parser/max_numparam_stack'
require_relative 'parser/current_arg_stack'
require_relative 'parser/variables_stack'

require 'parser/base'
require_relative 'parser/base'

require 'parser/rewriter'
require 'parser/tree_rewriter'
require_relative 'parser/rewriter'
require_relative 'parser/tree_rewriter'
end
30 changes: 15 additions & 15 deletions lib/parser/all.rb
@@ -1,17 +1,17 @@
# frozen_string_literal: true

require 'parser/ruby18'
require 'parser/ruby19'
require 'parser/ruby20'
require 'parser/ruby21'
require 'parser/ruby22'
require 'parser/ruby23'
require 'parser/ruby24'
require 'parser/ruby25'
require 'parser/ruby26'
require 'parser/ruby27'
require 'parser/ruby30'
require 'parser/ruby31'
require 'parser/ruby32'
require 'parser/ruby33'
require 'parser/ruby34'
require_relative 'ruby18'
require_relative 'ruby19'
require_relative 'ruby20'
require_relative 'ruby21'
require_relative 'ruby22'
require_relative 'ruby23'
require_relative 'ruby24'
require_relative 'ruby25'
require_relative 'ruby26'
require_relative 'ruby27'
require_relative 'ruby30'
require_relative 'ruby31'
require_relative 'ruby32'
require_relative 'ruby33'
require_relative 'ruby34'
28 changes: 14 additions & 14 deletions lib/parser/current.rb
Expand Up @@ -17,7 +17,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby20', current_version
end

require 'parser/ruby20'
require_relative 'ruby20'
CurrentRuby = Ruby20

when /^2\.1\./
Expand All @@ -26,7 +26,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby21', current_version
end

require 'parser/ruby21'
require_relative 'ruby21'
CurrentRuby = Ruby21

when /^2\.2\./
Expand All @@ -35,7 +35,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby22', current_version
end

require 'parser/ruby22'
require_relative 'ruby22'
CurrentRuby = Ruby22

when /^2\.3\./
Expand All @@ -44,7 +44,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby23', current_version
end

require 'parser/ruby23'
require_relative 'ruby23'
CurrentRuby = Ruby23

when /^2\.4\./
Expand All @@ -53,7 +53,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby24', current_version
end

require 'parser/ruby24'
require_relative 'ruby24'
CurrentRuby = Ruby24

when /^2\.5\./
Expand All @@ -62,7 +62,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby25', current_version
end

require 'parser/ruby25'
require_relative 'ruby25'
CurrentRuby = Ruby25

when /^2\.6\./
Expand All @@ -71,7 +71,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby26', current_version
end

require 'parser/ruby26'
require_relative 'ruby26'
CurrentRuby = Ruby26

when /^2\.7\./
Expand All @@ -80,7 +80,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby27', current_version
end

require 'parser/ruby27'
require_relative 'ruby27'
CurrentRuby = Ruby27

when /^3\.0\./
Expand All @@ -89,7 +89,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby30', current_version
end

require 'parser/ruby30'
require_relative 'ruby30'
CurrentRuby = Ruby30

when /^3\.1\./
Expand All @@ -98,7 +98,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby31', current_version
end

require 'parser/ruby31'
require_relative 'ruby31'
CurrentRuby = Ruby31

when /^3\.2\./
Expand All @@ -107,7 +107,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby32', current_version
end

require 'parser/ruby32'
require_relative 'ruby32'
CurrentRuby = Ruby32

when /^3\.3\./
Expand All @@ -116,7 +116,7 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby33', current_version
end

require 'parser/ruby33'
require_relative 'ruby33'
CurrentRuby = Ruby33

when /^3\.4\./
Expand All @@ -125,13 +125,13 @@ def warn_syntax_deviation(feature, version)
warn_syntax_deviation 'parser/ruby34', current_version
end

require 'parser/ruby34'
require_relative 'ruby34'
CurrentRuby = Ruby34

else # :nocov:
# Keep this in sync with released Ruby.
warn_syntax_deviation 'parser/ruby33', '3.3.x'
require 'parser/ruby33'
require_relative 'ruby33'
CurrentRuby = Ruby33
end
end
2 changes: 1 addition & 1 deletion lib/parser/macruby.y
Expand Up @@ -2207,7 +2207,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby18.y
Expand Up @@ -1947,7 +1947,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby19.y
Expand Up @@ -2184,7 +2184,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby20.y
Expand Up @@ -2362,7 +2362,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby21.y
Expand Up @@ -2366,7 +2366,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby22.y
Expand Up @@ -2373,7 +2373,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby23.y
Expand Up @@ -2379,7 +2379,7 @@ end

---- header

require 'parser'
require_relative '../parser'

---- inner

Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby24.y
Expand Up @@ -2416,7 +2416,7 @@ end
---- header
require 'parser'
require_relative '../parser'
---- inner
Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby25.y
Expand Up @@ -2406,7 +2406,7 @@ end
---- header
require 'parser'
require_relative '../parser'
---- inner
Expand Down
2 changes: 1 addition & 1 deletion lib/parser/ruby26.y
Expand Up @@ -2417,7 +2417,7 @@ end
---- header
require 'parser'
require_relative '../parser'
---- inner
Expand Down

0 comments on commit 503cf61

Please sign in to comment.