Skip to content

Commit 9d8cdb8

Browse files
jacobly0Vexu
authored andcommitted
Sema: fix function paramater count mismatch note
expected type 'fn() void', found 'fn(i32) void' function with 0 parameters cannot cast into a function with 0 parameters => expected type 'fn() void', found 'fn(i32) void' function with 1 parameters cannot cast into a function with 0 parameters
1 parent db5562d commit 9d8cdb8

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/Sema.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24312,7 +24312,7 @@ fn coerceInMemoryAllowedFns(
2431224312

2431324313
if (dest_info.param_types.len != src_info.param_types.len) {
2431424314
return InMemoryCoercionResult{ .fn_param_count = .{
24315-
.actual = dest_info.param_types.len,
24315+
.actual = src_info.param_types.len,
2431624316
.wanted = dest_info.param_types.len,
2431724317
} };
2431824318
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
fn f(_: i32) void {}
2+
export fn wrong_param_count() void {
3+
_ = @as(fn () void, f);
4+
}
5+
export fn wrong_param_type() void {
6+
_ = @as(fn (f32) void, f);
7+
}
8+
export fn wrong_return_type() void {
9+
_ = @as(fn () i32, f);
10+
}
11+
12+
// error
13+
// backend=stage2,llvm
14+
// target=native
15+
//
16+
// :3:25: error: expected type 'fn() void', found 'fn(i32) void'
17+
// :3:25: note: function with 1 parameters cannot cast into a function with 0 parameters
18+
// :6:28: error: expected type 'fn(f32) void', found 'fn(i32) void'
19+
// :6:28: note: parameter 0 'i32' cannot cast into 'f32'
20+
// :9:24: error: expected type 'fn() i32', found 'fn(i32) void'
21+
// :9:24: note: return type 'void' cannot cast into return type 'i32'

0 commit comments

Comments
 (0)