Why isn’t this code unreachable?

Static analysis can only do so much, and it will only mark code as unreachable if it can prove that a value cannot be changed. In your code, what happens inside Bar is out of the scope of the method flow and can’t be statically reasoned about. What if Bar‘s constructor launches a thread that sets the value of type back to B? The compiler can’t know about it, because, again, the internals of Bar aren’t scoped to the method.

If your code was checking the value of a local variable, then the compiler could know if there was no way for it to change. But that’s not the case here.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)