// A by-reference loop capture (`for xs (*m)`) binds `m` to a `*T`.
// Passing it where a `T` value is expected used to slip through to the
// LLVM verifier ("Call parameter type does not match function signature").
// The compiler now reports it at the call site with a fix-it: write `m.*`.

#import "modules/std.sx";

Move :: struct { flag: i64; }

take :: (m: Move) -> i64 { return m.flag; }

main :: () -> i32 {
    moves : [2]Move = .[ Move.{ flag = 1 }, Move.{ flag = 2 } ];
    for moves (*m) {
        take(m);
    }
    return 0;
}
