2016-05-06 34 views
5

Il seguente codice ha una sintassi non valida:Perché non viene rilevato questo errore di sintassi Ruby?

# bad_code.rb 
def foo 
    next 
end 

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

Tuttavia, l'esecuzione ruby -c bad_code.rb non rileva alcun problema:

$ ruby -c bad_code.rb 
Syntax OK 

Eppure ruby -c si suppone che sia per il controllo della sintassi:

-c controlla solo la sintassi

Perché non rileva questo errore?

rubocop bad_code.rb anche non rileva questo:

$ rubocop bad_code.rb 
Inspecting 1 file 
. 

1 file inspected, no offenses detected 

ho eseguito questo su Ruby 2.1.10.

risposta

5

E 'sintatticamente corretto, ma quando l'interprete ruby ​​cerca di produrre codice per esso, riconosce che non v'è alcun obiettivo per il next