diff --git a/src/protocol/tests/parser_inference.rs b/src/protocol/tests/parser_inference.rs index a3eecc0b65a4ddd0e140b9942a34c4967c498e20..6855fa19d14c0253ac287c308363f9cb46b5c279 100644 --- a/src/protocol/tests/parser_inference.rs +++ b/src/protocol/tests/parser_inference.rs @@ -351,6 +351,25 @@ fn test_failed_polymorph_inference() { .assert_msg_has(2, "inferred it to 'byte'"); }); + // Cannot really test literal inference error, but this comes close + Tester::new_single_source_expect_err( + "enum literal inference mismatch", + " + enum Uninteresting{ Variant } + int fix_t(Uninteresting arg) { return 0; } + int call() { + auto a = Uninteresting::Variant; + fix_t(a); + fix_t(a); + return 4; + } + " + ).error(|e| { e + .assert_num(2) + .assert_msg_has(0, "the type 'Uninteresting'") + .assert_msg_has(1, "type 'Uninteresting'"); + }); + Tester::new_single_source_expect_err( "field access inference mismatch", " @@ -372,7 +391,7 @@ fn test_failed_polymorph_inference() { // TODO: Needs better error messages anyway, but this failed before Tester::new_single_source_expect_err( - "by nested field access", + "nested field access inference mismatch", " struct Node{ T1 l, T2 r } Node construct(T1 l, T2 r) { return Node{ l: l, r: r }; }