为什么没有检测到这个Ruby语法错误?

And*_*imm 5 ruby syntax-error rubocop

以下代码的语法无效:

# bad_code.rb
def foo
  next
end

$ ruby bad_code.rb 
bad_code.rb:2: Invalid next
bad_code.rb: compile error (SyntaxError)
Run Code Online (Sandbox Code Playgroud)

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

$ ruby -c bad_code.rb 
Syntax OK
Run Code Online (Sandbox Code Playgroud)

但是ruby -c应该用于检查语法:

-c仅检查语法

为什么不检测到这个错误?

rubocop bad_code.rb 也没有发现这个:

$ rubocop bad_code.rb 
Inspecting 1 file
.

1 file inspected, no offenses detected
Run Code Online (Sandbox Code Playgroud)

我在Ruby 2.1.10上运行了这个.

Mei*_*ier 5

它在语法上是正确的,但是当ruby解释器试图为它生成代码时,它会识别出没有目标 next