// #failed: resolve
// #error: unknown argument to a procedure call, couldn't match it with any of the declared arguments
// #error: unknown argument to a procedure call, couldn't match it with any of the declared arguments
// #error: unknown argument to a procedure call, couldn't match it with any of the declared arguments
// #error: mixing named and positional arguments is illegal
// #error: mixing named and positional arguments is illegal

// #error: invalid argument count passed in to procedure call
// #error: invalid argument count passed in to procedure call
// #error: invalid argument count passed in to procedure call
// #error: invalid argument count passed in to procedure call
// #error: unknown argument to a procedure call, couldn't match it with any of the declared arguments

// #error: cannot assign void expression to a variable

default_args :: proc(a: int = 10, b: int = 10): int {
    return a + b;
}

no_default :: proc(a: int @unused, b: int @unused) {

}

main :: proc(): int {
    def0 := default_args(1,2,3);
    def1 := default_args(c = 10);
    def2 := default_args(1, a = 1, b = 2);
    def3 := default_args(a = 1, 2);
    def4 := default_args(b = 1, 2);

    no_default();
    no_default(1);
    no_default(a = 1);
    no_default(b = 1);
    no_default(a = 2, c = 1);

    assign_void := no_default(1, 2);

    return 0;
}

