为什么未检测到此 Ruby 语法错误?

Why isn't this Ruby syntax error detected?

以下代码语法无效:

# bad_code.rb
def foo
  next
end

$ ruby bad_code.rb 
bad_code.rb:2: Invalid next
bad_code.rb: compile error (SyntaxError)

但是,运行 ruby -c bad_code.rb 没有检测到任何问题:

$ ruby -c bad_code.rb 
Syntax OK

然而 ruby -c 应该用于检查语法:

-c check syntax only

为什么它没有检测到这个错误?

rubocop bad_code.rb 也没有检测到这个:

$ rubocop bad_code.rb 
Inspecting 1 file
.

1 file inspected, no offenses detected

我 运行 这个在 Ruby 2.1.10.

它在句法上是正确的,但是当 ruby 解释器试图为它生成代码时,它发现 next

没有目标