Result: done
Pushed: see commit
Tests: nikaia test –both-settings –project tests/compiler 291 ok (1 new: an_extend_checks_its_element_type, NK1102); gate set 23 ok
Gate: green
Deviation: no contract form fits (std.contracts has no list|set|seq union), so items stays ? and the checker compares the element: check_core_call_on_extended (check_core_call_on.nika) walks the argument with element_walked and compares to the receiver’s T with fits; two numbers are skipped (literal rules). The new test was not run against a stashed compiler: the probe printed only “Checked” with nikaia check and a rustc error with run before the fix (seen before the edit).
Found: std method arguments in general are not type-compared by the checker (v.push(“a”) on Vec[i64] also reaches rustc, “Mismatched types” without an NK code); only integer widening is checked in check_core_call_on_given.
Needs: none (the general push/insert argument check is a possible follow-up for the architect)
Changelog: extend on a list, HashSet or BTreeSet refuses elements of the wrong type with NK1102 instead of a rustc error (#963).
Owner: none
Disk freed: none
Rs2nika: none (checker change, no move)