You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With the block signatures, the loop has a declared result type, in this case void so the validation can easily use that, it does not need to propagate unreachable types. This seems consistent with (i32.add (f32.neg (unreachable))) being a type error too, here f32.neg has a declared type which is used even though it's result is unreachable.
@sunfishcode, acknowledged. Block signatures notwithstanding, the interpreter still implements the don't-type-check-dead-code semantics, which is why I didn't find these when I adapted the tests. Not skipping dead code is gonna be a separate change.
The block-sigs branch has this testcase in loop.wast:
The end of the function is unreachable, so implementations shouldn't be required to issue a type error here, by my understanding of the rules.
The text was updated successfully, but these errors were encountered: