I assume that you are asking why in your code `call(nil)` will panic
at runtime. That will pass `nil` as the argument to `call`, which
takes an argument of the interface type `is`. It then tries to invoke
a method on its argument. When called with `nil`, invoking the method
fails, because there interface is `nil` and there is no method to
call. So the program crashes.
The compiler doesn't catch this because it's fine for the `call`
function to call a method on its argument, and it's fine to pass `nil`
as the argument to a function that takes a value of interface type.
It's only in combination that these fail.
If that answer doesn't make sense, perhaps you could be more specific.
For example, tell us exactly what code you think the compiler should
catch.
Ian