Sema: add notes about function return type

This commit is contained in:
Veikka Tuominen
2022-07-11 15:39:21 +03:00
parent c9e1360cdb
commit 20d4f7213d
16 changed files with 100 additions and 32 deletions

View File

@@ -9,3 +9,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(&foo)); }
//
// :3:30: error: expected type '*const i32', found '*const comptime_int'
// :3:30: note: pointer type child 'comptime_int' cannot cast into pointer type child 'i32'
// :3:10: note: function return type declared here

View File

@@ -21,8 +21,10 @@ export fn entry4() void {
//
// :4:12: error: expected type '[*:0]u8', found '[*:255]u8'
// :4:12: note: pointer sentinel '255' cannot cast into pointer sentinel '0'
// :3:35: note: function return type declared here
// :7:12: error: expected type '[*:0]u8', found '[*]u8'
// :7:12: note: destination pointer requires '0' sentinel
// :6:31: note: function return type declared here
// :10:35: error: expected type '[2:0]u8', found '[2:255]u8'
// :10:35: note: array sentinel '255' cannot cast into array sentinel '0'
// :14:31: error: expected type '[2:0]u8', found '[2]u8'

View File

@@ -21,3 +21,4 @@
// :8:16: error: expected type 'tmp.A', found 'tmp.B'
// :10:12: note: struct declared here
// :4:12: note: struct declared here
// :7:11: note: function return type declared here

View File

@@ -12,3 +12,4 @@ pub fn main() void {
//
// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
// :2:12: note: address space 'gs' cannot cast into address space 'generic'
// :1:34: note: function return type declared here

View File

@@ -12,3 +12,4 @@ pub fn main() void {
//
// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32'
// :2:12: note: address space 'gs' cannot cast into address space 'generic'
// :1:34: note: function return type declared here

View File

@@ -12,3 +12,4 @@ export fn entry2() void {
//
// :2:12: error: expected type '*addrspace(.fs) i32', found '*addrspace(.gs) i32'
// :2:12: note: address space 'gs' cannot cast into address space 'fs'
// :1:34: note: function return type declared here

View File

@@ -12,3 +12,4 @@ pub fn main() void {
//
// :2:13: error: expected type '*i32', found '*addrspace(.gs) i32'
// :2:13: note: address space 'gs' cannot cast into address space 'generic'
// :1:35: note: function return type declared here

View File

@@ -10,3 +10,4 @@ comptime { _ = foo; }
//
// :3:12: error: expected type '[:0]u8', found '[]u8'
// :3:12: note: destination pointer requires '0' sentinel
// :1:10: note: function return type declared here

View File

@@ -16,15 +16,17 @@ export fn quux() u32 {
}
// error
// backend=stage1
// backend=stage2
// target=native
// is_test=1
//
// tmp.zig:2:17: error: expected type 'u32', found 'error{Ohno}'
// tmp.zig:1:17: note: function cannot return an error
// tmp.zig:8:5: error: expected type 'void', found '@typeInfo(@typeInfo(@TypeOf(bar)).Fn.return_type.?).ErrorUnion.error_set'
// tmp.zig:7:17: note: function cannot return an error
// tmp.zig:11:15: error: cannot convert error union to payload type. consider using `try`, `catch`, or `if`. expected type 'u32', found '@typeInfo(@typeInfo(@TypeOf(bar)).Fn.return_type.?).ErrorUnion.error_set!u32'
// tmp.zig:10:17: note: function cannot return an error
// tmp.zig:15:14: error: cannot convert error union to payload type. consider using `try`, `catch`, or `if`. expected type 'u32', found '@typeInfo(@typeInfo(@TypeOf(bar)).Fn.return_type.?).ErrorUnion.error_set!u32'
// tmp.zig:14:5: note: cannot store an error in type 'u32'
// :2:18: error: expected type 'u32', found 'error{Ohno}'
// :1:17: note: function cannot return an error
// :8:5: error: expected type 'void', found '@typeInfo(@typeInfo(@TypeOf(tmp.bar)).Fn.return_type.?).ErrorUnion.error_set'
// :7:17: note: function cannot return an error
// :11:15: error: expected type 'u32', found '@typeInfo(@typeInfo(@TypeOf(tmp.bar)).Fn.return_type.?).ErrorUnion.error_set!u32'
// :10:17: note: function cannot return an error
// :11:15: note: cannot convert error union to payload type
// :11:15: note: consider using `try`, `catch`, or `if`
// :15:14: error: expected type 'u32', found '@typeInfo(@typeInfo(@TypeOf(tmp.bar)).Fn.return_type.?).ErrorUnion.error_set!u32'
// :15:14: note: cannot convert error union to payload type
// :15:14: note: consider using `try`, `catch`, or `if`

View File

@@ -8,3 +8,4 @@ fn something() anyerror!void { }
// target=native
//
// :2:5: error: expected type 'void', found 'anyerror'
// :1:15: note: function cannot return an error

View File

@@ -5,4 +5,5 @@ export fn entry() void { a(); }
// backend=stage2
// target=native
//
// :1:18: error: expected type 'noreturn', found 'void'
// :1:18: error: function declared 'noreturn' returns
// :1:8: note: 'noreturn' declared here

View File

@@ -8,3 +8,4 @@ export fn f() i32 {
// target=native
//
// :3:12: error: expected type 'i32', found '*const [1:0]u8'
// :1:15: note: function return type declared here