The types of forward references are checked that they match with other
uses, but they do not check they match with the definition.
func @forward_reference_type_check() -> (i8) { br ^bb2 ^bb1: return %1 : i8 ^bb2: %1 = "bar"() : () -> (f32) br ^bb1 }
Would be parsed and the use site of '%1' would be silently changed to
'f32'.
This commit adds a test for this case, and a check during parsing for
the types to match.
nit: previously used here with type