Sema: fix check for whether current AnalUnit is a test function

Closes #21159
This commit is contained in:
Veikka Tuominen 2024-10-24 13:34:07 +03:00 committed by GitHub
parent c563ba6b15
commit 9ffee5abed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 3 deletions

View File

@ -29836,6 +29836,7 @@ fn coerceExtra(
if (dest_ty.isGenericPoison()) return inst;
const pt = sema.pt;
const zcu = pt.zcu;
const ip = &zcu.intern_pool;
const dest_ty_src = inst_src; // TODO better source location
try dest_ty.resolveFields(pt);
const inst_ty = sema.typeOf(inst);
@ -30458,7 +30459,7 @@ fn coerceExtra(
errdefer msg.destroy(sema.gpa);
const ret_ty_src: LazySrcLoc = .{
.base_node_inst = sema.getOwnerFuncDeclInst(),
.base_node_inst = ip.getNav(zcu.funcInfo(sema.func_index).owner_nav).srcInst(ip),
.offset = .{ .node_offset_fn_type_ret_ty = 0 },
};
try sema.errNote(ret_ty_src, msg, "'noreturn' declared here", .{});
@ -30496,10 +30497,10 @@ fn coerceExtra(
// Add notes about function return type
if (opts.is_ret and
!zcu.test_functions.contains(zcu.funcInfo(sema.owner.unwrap().func).owner_nav))
!zcu.test_functions.contains(zcu.funcInfo(sema.func_index).owner_nav))
{
const ret_ty_src: LazySrcLoc = .{
.base_node_inst = sema.getOwnerFuncDeclInst(),
.base_node_inst = ip.getNav(zcu.funcInfo(sema.func_index).owner_nav).srcInst(ip),
.offset = .{ .node_offset_fn_type_ret_ty = 0 },
};
if (inst_ty.isError(zcu) and !dest_ty.isError(zcu)) {

View File

@ -0,0 +1,14 @@
fn foo() fn () void {
return struct {};
}
comptime {
_ = foo();
}
// error
// backend=stage2
// target=native
//
// :2:12: error: expected type 'fn () void', found 'type'
// :1:10: note: function return type declared here
// :5:12: note: called from here