// Regression (issue 0056): a parameterised-protocol (`Into`) impl living in a
// module reached through more than one import path must register exactly once.
//
//   main ─┬─ issue-0056/mid_a ─┐
//         └─ issue-0056/mid_b ─┴─ issue-0056/common  (holds `impl Into(Wrapped) for s64`)
//
// Impl blocks are anonymous (no `declName`), so before the fix the diamond
// dedup in imports.zig appended the cached node once per path and the second
// registration tripped: `duplicate impl 'Into' for source 's64'`. Now the flat
// decl list also dedups by node identity, so this builds and prints 7.
#import "modules/std.sx";
#import "issue-0056/mid_a.sx";
#import "issue-0056/mid_b.sx";

main :: () -> s32 {
    w : Wrapped = xx 7;
    print("{}\n", w.v);
    0;
}
