зеркало из https://github.com/github/ruby.git
[ruby/yarp] Fixes so `bundle exec rake` can run on JRuby and TruffleRuby
https://github.com/ruby/yarp/commit/e6cea4fa08
This commit is contained in:
Родитель
958ac8d586
Коммит
3536cad902
|
@ -47,9 +47,9 @@ module YARP
|
|||
Ripper::PARSER_EVENT_TABLE.each do |event, arity|
|
||||
case event
|
||||
when /_new\z/
|
||||
alias :"on_#{event}" :_dispatch_event_new if arity == 0
|
||||
alias_method :"on_#{event}", :_dispatch_event_new if arity == 0
|
||||
when /_add\z/
|
||||
alias :"on_#{event}" :_dispatch_event_push
|
||||
alias_method :"on_#{event}", :_dispatch_event_push
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -168,7 +168,7 @@ module YARP
|
|||
def _dispatch7(_, _, _, _, _, _, _); end
|
||||
|
||||
(Ripper::SCANNER_EVENT_TABLE.merge(Ripper::PARSER_EVENT_TABLE)).each do |event, arity|
|
||||
alias :"on_#{event}" :"_dispatch#{arity}"
|
||||
alias_method :"on_#{event}", :"_dispatch#{arity}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -52,7 +52,7 @@ class CommentsTest < Test::Unit::TestCase
|
|||
def assert_comment(source, type, location)
|
||||
result = YARP.parse(source)
|
||||
assert result.errors.empty?, result.errors.map(&:message).join("\n")
|
||||
result => YARP::ParseResult[comments: [YARP::Comment[type: type]]]
|
||||
assert_equal result.comments.first.type, type
|
||||
assert_equal result.comments.first.location.start_offset, location.begin
|
||||
assert_equal result.comments.first.location.end_offset, location.end
|
||||
end
|
||||
|
|
|
@ -1097,10 +1097,11 @@ class ErrorsTest < Test::Unit::TestCase
|
|||
private
|
||||
|
||||
def assert_errors(expected, source, errors)
|
||||
assert_nil Ripper.sexp_raw(source)
|
||||
# Ripper behaves differently on JRuby/TruffleRuby, so only check this on CRuby
|
||||
assert_nil Ripper.sexp_raw(source) if RUBY_ENGINE == "ruby"
|
||||
|
||||
result = YARP.parse(source)
|
||||
result => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: [*, node]]]]
|
||||
node = result.value.statements.body.last
|
||||
|
||||
assert_equal_nodes(expected, node, compare_location: false)
|
||||
assert_equal(errors, result.errors.map { |e| [e.message, e.location.start_offset..e.location.end_offset] })
|
||||
|
@ -1113,7 +1114,6 @@ class ErrorsTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def expression(source)
|
||||
YARP.parse(source) => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: [*, node]]]]
|
||||
node
|
||||
YARP.parse(source).value.statements.body.last
|
||||
end
|
||||
end
|
||||
|
|
|
@ -753,9 +753,11 @@ module YARP
|
|||
private
|
||||
|
||||
def assert_location(kind, source, expected = 0...source.length)
|
||||
YARP.parse(source) => ParseResult[comments: [], errors: [], value: node]
|
||||
result = YARP.parse(source)
|
||||
assert_equal [], result.comments
|
||||
assert_equal [], result.errors
|
||||
|
||||
node => ProgramNode[statements: [*, node]]
|
||||
node = result.value.statements.body.last
|
||||
node = yield node if block_given?
|
||||
|
||||
assert_kind_of kind, node
|
||||
|
|
|
@ -23,7 +23,8 @@ class ParseTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_empty_string
|
||||
YARP.parse("") => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: []]]]
|
||||
result = YARP.parse("")
|
||||
assert_equal [], result.value.statements.body
|
||||
end
|
||||
|
||||
known_failures = %w[
|
||||
|
@ -107,7 +108,9 @@ class ParseTest < Test::Unit::TestCase
|
|||
|
||||
# Finally, assert that we can lex the source and get the same tokens as
|
||||
# Ripper.
|
||||
YARP.lex_compat(source) => { errors: [], value: tokens }
|
||||
lex_result = YARP.lex_compat(source)
|
||||
assert_equal [], lex_result.errors
|
||||
tokens = lex_result.value
|
||||
|
||||
begin
|
||||
YARP.lex_ripper(source).zip(tokens).each do |(ripper, yarp)|
|
||||
|
|
Загрузка…
Ссылка в новой задаче