From a1ba9f5733711a7665b57977d78940e07ff281a5 Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Mon, 12 Jan 2026 14:36:13 +0100 Subject: [PATCH] [ruby/prism] Use one file for versioned `parser` classes One per version seems excessive. Do note that `rubocop-ast` used to require individual parser files. I wouldn't consider that to be part of the API since everything is autoloaded. From a GitHub code search, I didn't find anyone else doing it like that. https://github.com/ruby/prism/commit/458f622c34 --- lib/prism/prism.gemspec | 12 ++------ lib/prism/translation.rb | 10 +++---- lib/prism/translation/parser33.rb | 13 --------- lib/prism/translation/parser34.rb | 13 --------- lib/prism/translation/parser35.rb | 8 ------ lib/prism/translation/parser40.rb | 13 --------- lib/prism/translation/parser41.rb | 13 --------- lib/prism/translation/parser_versions.rb | 36 ++++++++++++++++++++++++ test/prism/ruby/parser_test.rb | 2 -- 9 files changed, 43 insertions(+), 77 deletions(-) delete mode 100644 lib/prism/translation/parser33.rb delete mode 100644 lib/prism/translation/parser34.rb delete mode 100644 lib/prism/translation/parser35.rb delete mode 100644 lib/prism/translation/parser40.rb delete mode 100644 lib/prism/translation/parser41.rb create mode 100644 lib/prism/translation/parser_versions.rb diff --git a/lib/prism/prism.gemspec b/lib/prism/prism.gemspec index a45e0d93e78cd5..6a3bed32d8bd7c 100644 --- a/lib/prism/prism.gemspec +++ b/lib/prism/prism.gemspec @@ -99,11 +99,7 @@ Gem::Specification.new do |spec| "lib/prism/translation.rb", "lib/prism/translation/parser.rb", "lib/prism/translation/parser_current.rb", - "lib/prism/translation/parser33.rb", - "lib/prism/translation/parser34.rb", - "lib/prism/translation/parser35.rb", - "lib/prism/translation/parser40.rb", - "lib/prism/translation/parser41.rb", + "lib/prism/translation/parser_versions.rb", "lib/prism/translation/parser/builder.rb", "lib/prism/translation/parser/compiler.rb", "lib/prism/translation/parser/lexer.rb", @@ -123,11 +119,7 @@ Gem::Specification.new do |spec| "rbi/prism/reflection.rbi", "rbi/prism/string_query.rbi", "rbi/prism/translation/parser.rbi", - "rbi/prism/translation/parser33.rbi", - "rbi/prism/translation/parser34.rbi", - "rbi/prism/translation/parser35.rbi", - "rbi/prism/translation/parser40.rbi", - "rbi/prism/translation/parser41.rbi", + "rbi/prism/translation/parser_versions.rbi", "rbi/prism/translation/ripper.rbi", "rbi/prism/visitor.rbi", "sig/prism.rbs", diff --git a/lib/prism/translation.rb b/lib/prism/translation.rb index 89c70ee420130f..57b57135bcc1f2 100644 --- a/lib/prism/translation.rb +++ b/lib/prism/translation.rb @@ -7,11 +7,11 @@ module Prism module Translation # steep:ignore autoload :Parser, "prism/translation/parser" autoload :ParserCurrent, "prism/translation/parser_current" - autoload :Parser33, "prism/translation/parser33" - autoload :Parser34, "prism/translation/parser34" - autoload :Parser35, "prism/translation/parser35" - autoload :Parser40, "prism/translation/parser40" - autoload :Parser41, "prism/translation/parser41" + autoload :Parser33, "prism/translation/parser_versions" + autoload :Parser34, "prism/translation/parser_versions" + autoload :Parser35, "prism/translation/parser_versions" + autoload :Parser40, "prism/translation/parser_versions" + autoload :Parser41, "prism/translation/parser_versions" autoload :Ripper, "prism/translation/ripper" autoload :RubyParser, "prism/translation/ruby_parser" end diff --git a/lib/prism/translation/parser33.rb b/lib/prism/translation/parser33.rb deleted file mode 100644 index 0a596694655a47..00000000000000 --- a/lib/prism/translation/parser33.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true -# :markup: markdown - -module Prism - module Translation - # This class is the entry-point for Ruby 3.3 of `Prism::Translation::Parser`. - class Parser33 < Parser - def version # :nodoc: - 33 - end - end - end -end diff --git a/lib/prism/translation/parser34.rb b/lib/prism/translation/parser34.rb deleted file mode 100644 index 566a23fadbfc6c..00000000000000 --- a/lib/prism/translation/parser34.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true -# :markup: markdown - -module Prism - module Translation - # This class is the entry-point for Ruby 3.4 of `Prism::Translation::Parser`. - class Parser34 < Parser - def version # :nodoc: - 34 - end - end - end -end diff --git a/lib/prism/translation/parser35.rb b/lib/prism/translation/parser35.rb deleted file mode 100644 index 52eeeb6c8c4d75..00000000000000 --- a/lib/prism/translation/parser35.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true -# :markup: markdown - -module Prism - module Translation - Parser35 = Parser40 # :nodoc: - end -end diff --git a/lib/prism/translation/parser40.rb b/lib/prism/translation/parser40.rb deleted file mode 100644 index 2ec7445882ce36..00000000000000 --- a/lib/prism/translation/parser40.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true -# :markup: markdown - -module Prism - module Translation - # This class is the entry-point for Ruby 4.0 of `Prism::Translation::Parser`. - class Parser40 < Parser - def version # :nodoc: - 40 - end - end - end -end diff --git a/lib/prism/translation/parser41.rb b/lib/prism/translation/parser41.rb deleted file mode 100644 index ed819064004606..00000000000000 --- a/lib/prism/translation/parser41.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true -# :markup: markdown - -module Prism - module Translation - # This class is the entry-point for Ruby 4.1 of `Prism::Translation::Parser`. - class Parser41 < Parser - def version # :nodoc: - 41 - end - end - end -end diff --git a/lib/prism/translation/parser_versions.rb b/lib/prism/translation/parser_versions.rb new file mode 100644 index 00000000000000..720c7d548cbdc8 --- /dev/null +++ b/lib/prism/translation/parser_versions.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true +# :markup: markdown + +module Prism + module Translation + # This class is the entry-point for Ruby 3.3 of `Prism::Translation::Parser`. + class Parser33 < Parser + def version # :nodoc: + 33 + end + end + + # This class is the entry-point for Ruby 3.4 of `Prism::Translation::Parser`. + class Parser34 < Parser + def version # :nodoc: + 34 + end + end + + # This class is the entry-point for Ruby 4.0 of `Prism::Translation::Parser`. + class Parser40 < Parser + def version # :nodoc: + 40 + end + end + + Parser35 = Parser40 # :nodoc: + + # This class is the entry-point for Ruby 4.1 of `Prism::Translation::Parser`. + class Parser41 < Parser + def version # :nodoc: + 41 + end + end + end +end diff --git a/test/prism/ruby/parser_test.rb b/test/prism/ruby/parser_test.rb index df290a6a8e2035..55c12cab6f12f6 100644 --- a/test/prism/ruby/parser_test.rb +++ b/test/prism/ruby/parser_test.rb @@ -5,8 +5,6 @@ begin verbose, $VERBOSE = $VERBOSE, nil require "parser/ruby33" - require "prism/translation/parser33" - require "prism/translation/parser34" rescue LoadError # In CRuby's CI, we're not going to test against the parser gem because we # don't want to have to install it. So in this case we'll just skip this test.