summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/prism/translation/parser/rubocop.rb39
1 files changed, 28 insertions, 11 deletions
diff --git a/lib/prism/translation/parser/rubocop.rb b/lib/prism/translation/parser/rubocop.rb
index 69138f74f3..c791ba74a2 100644
--- a/lib/prism/translation/parser/rubocop.rb
+++ b/lib/prism/translation/parser/rubocop.rb
@@ -20,17 +20,34 @@ module Prism
# This module gets prepended into RuboCop::AST::ProcessedSource.
module ProcessedSource
- # Redefine parser_class so that we can inject the prism parser into the
- # list of known parsers.
- def parser_class(ruby_version)
- if ruby_version == Prism::Translation::Parser::VERSION_3_3
- require "prism/translation/parser33"
- Prism::Translation::Parser33
- elsif ruby_version == Prism::Translation::Parser::VERSION_3_4
- require "prism/translation/parser34"
- Prism::Translation::Parser34
- else
- super
+ # This condition is compatible with rubocop-ast versions up to 1.30.0.
+ if RuboCop::AST::ProcessedSource.instance_method(:parser_class).arity == 1
+ # Redefine parser_class so that we can inject the prism parser into the
+ # list of known parsers.
+ def parser_class(ruby_version)
+ if ruby_version == Prism::Translation::Parser::VERSION_3_3
+ require "prism/translation/parser33"
+ Prism::Translation::Parser33
+ elsif ruby_version == Prism::Translation::Parser::VERSION_3_4
+ require "prism/translation/parser34"
+ Prism::Translation::Parser34
+ else
+ super
+ end
+ end
+ else
+ # Redefine parser_class so that we can inject the prism parser into the
+ # list of known parsers.
+ def parser_class(ruby_version, _parser_engine)
+ if ruby_version == Prism::Translation::Parser::VERSION_3_3
+ require "prism/translation/parser33"
+ Prism::Translation::Parser33
+ elsif ruby_version == Prism::Translation::Parser::VERSION_3_4
+ require "prism/translation/parser34"
+ Prism::Translation::Parser34
+ else
+ super
+ end
end
end
end