This wont compile
socket.close rescue nil if socket.is_a?(TCPSocket)
This will:
if socket.is_a?(TCPSocket)
socket.close rescue nil
end
The first one returns:
undefined method 'close' for Nil (compile-time type is (TCPSocket | Nil)) (did you mean 'clone'?)
socket.close rescue nil if socket.is_a?(TCPSocket)
For reference, this works:
(socket.close rescue nil) if socket.is_a?(TCPSocket)
It's being parsed as
socket.close rescue (nil if socket.is_a?(TCPSocket))
Most helpful comment
For reference, this works:
It's being parsed as