aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-07-11 16:33:37 +0300
committerVeikka Tuominen <git@vexu.eu>2022-07-11 18:47:29 +0300
commit3ceb27c8401df17e5a7f522d68104da79501b5b6 (patch)
tree0d44ceba53ed381488abec59232d4368b8f9ac4c /src
parent3e2e6c108a4306ed890b3034e2ad47c8d4caf2f7 (diff)
downloadzig-3ceb27c8401df17e5a7f522d68104da79501b5b6.tar.gz
zig-3ceb27c8401df17e5a7f522d68104da79501b5b6.zip
Sema: better explanation why opaque types require comptime
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig10
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());
},