diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-11 16:33:37 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-07-11 18:47:29 +0300 |
| commit | 3ceb27c8401df17e5a7f522d68104da79501b5b6 (patch) | |
| tree | 0d44ceba53ed381488abec59232d4368b8f9ac4c /src | |
| parent | 3e2e6c108a4306ed890b3034e2ad47c8d4caf2f7 (diff) | |
| download | zig-3ceb27c8401df17e5a7f522d68104da79501b5b6.tar.gz zig-3ceb27c8401df17e5a7f522d68104da79501b5b6.zip | |
Sema: better explanation why opaque types require comptime
Diffstat (limited to 'src')
| -rw-r--r-- | src/Sema.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 0e7c1c5937..953336ee39 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18098,10 +18098,12 @@ fn explainWhyTypeIsComptime( .NoReturn, .Undefined, .Null, - .Opaque, - .Optional, => return, + .Opaque => { + try mod.errNoteNonLazy(src_loc, msg, "opaque type '{}' has undefined size", .{ty.fmt(sema.mod)}); + }, + .Array, .Vector => { try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.elemType()); }, @@ -18124,6 +18126,10 @@ fn explainWhyTypeIsComptime( try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.elemType()); }, + .Optional => { + var buf: Type.Payload.ElemType = undefined; + try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.optionalChild(&buf)); + }, .ErrorUnion => { try sema.explainWhyTypeIsComptime(block, src, msg, src_loc, ty.errorUnionPayload()); }, |
