summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/prism/prism.gemspec1
-rw-r--r--lib/prism/translation.rb1
-rw-r--r--lib/prism/translation/parser_current.rb21
3 files changed, 23 insertions, 0 deletions
diff --git a/lib/prism/prism.gemspec b/lib/prism/prism.gemspec
index e602be9f0f..8c064e31b3 100644
--- a/lib/prism/prism.gemspec
+++ b/lib/prism/prism.gemspec
@@ -96,6 +96,7 @@ Gem::Specification.new do |spec|
"lib/prism/string_query.rb",
"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",
diff --git a/lib/prism/translation.rb b/lib/prism/translation.rb
index f5044b9e38..511c80febc 100644
--- a/lib/prism/translation.rb
+++ b/lib/prism/translation.rb
@@ -5,6 +5,7 @@ module Prism
# syntax trees.
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"
diff --git a/lib/prism/translation/parser_current.rb b/lib/prism/translation/parser_current.rb
new file mode 100644
index 0000000000..b5a9484666
--- /dev/null
+++ b/lib/prism/translation/parser_current.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+# typed: ignore
+
+module Prism
+ module Translation
+ case RUBY_VERSION
+ when /^3\.3\./
+ ParserCurrent = Parser33
+ when /^3\.4\./
+ ParserCurrent = Parser34
+ when /^3\.5\./
+ ParserCurrent = Parser35
+ else
+ # Keep this in sync with released Ruby.
+ parser = Parser34
+ warn "warning: `Prism::Translation::Current` is loading #{parser.name}, " \
+ "but you are running #{RUBY_VERSION.to_f}."
+ ParserCurrent = parser
+ end
+ end
+end