summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEarlopain <14981592+Earlopain@users.noreply.github.com>2026-01-12 14:36:13 +0100
committergit <svn-admin@ruby-lang.org>2026-01-12 16:13:08 +0000
commita1ba9f5733711a7665b57977d78940e07ff281a5 (patch)
treef72b674176a0c32de959c72d28bec34d0166e1f7
parentf34297604f2b43bcec7f57b1f0ac1e2813ce58e3 (diff)
[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
-rw-r--r--lib/prism/prism.gemspec12
-rw-r--r--lib/prism/translation.rb10
-rw-r--r--lib/prism/translation/parser33.rb13
-rw-r--r--lib/prism/translation/parser34.rb13
-rw-r--r--lib/prism/translation/parser35.rb8
-rw-r--r--lib/prism/translation/parser40.rb13
-rw-r--r--lib/prism/translation/parser41.rb13
-rw-r--r--lib/prism/translation/parser_versions.rb36
-rw-r--r--test/prism/ruby/parser_test.rb2
9 files changed, 43 insertions, 77 deletions
diff --git a/lib/prism/prism.gemspec b/lib/prism/prism.gemspec
index a45e0d93e7..6a3bed32d8 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 89c70ee420..57b57135bc 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 0a59669465..0000000000
--- 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 566a23fadb..0000000000
--- 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 52eeeb6c8c..0000000000
--- 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 2ec7445882..0000000000
--- 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 ed81906400..0000000000
--- 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 0000000000..720c7d548c
--- /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 df290a6a8e..55c12cab6f 100644
--- a/test/prism/ruby/parser_test.rb
+++ b/test/prism/ruby/parser_test.rb
@@ -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.