cstage rejects a binop whose two integer operands have different types (e.g. int vs i32 from len()); wwstage accepted it, miscompiling under no-implicit-promotion. Align wwstage UP: unifyarith now chases aliases and loud-rejects an integer-type mismatch, routing the ordered-comparison ops through the same path with the error message threaded on `e`. Per the user's no-implicit-promotion decision. Scope carve-outs: EQ/NEQ stay out of the reject (#34, the comparison operators keep their own widening rule) and a rune literal is exempt (#35, N_RUNELIT is still untyped at this point). Adds the 29-case test/wcc/949_intbinop_mismatch.c and its Makefile wiring.
1.6 MiB
1.6 MiB