[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
This commit is contained in:
Earlopain 2026-01-12 14:36:13 +01:00 committed by git
parent f34297604f
commit a1ba9f5733
9 changed files with 43 additions and 77 deletions

View File

@ -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",

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,8 +0,0 @@
# frozen_string_literal: true
# :markup: markdown
module Prism
module Translation
Parser35 = Parser40 # :nodoc:
end
end

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -5,8 +5,6 @@ require_relative "../test_helper"
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.