aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-04-01 11:58:55 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-04-01 11:58:55 -0700
commit50bcfb8c906be67a044ff4bef857a8d6d615de71 (patch)
tree1ab1bd3d8bba948a44bbcbaf15860803f75c1221 /src/Sema.zig
parent59035ae3e9d2de2d95036ff522fb926a3bd27b3c (diff)
downloadzig-50bcfb8c906be67a044ff4bef857a8d6d615de71.tar.gz
zig-50bcfb8c906be67a044ff4bef857a8d6d615de71.zip
stage2: implement struct init syntax with ptr result loc
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 876016df8c..bb1daf1121 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -326,6 +326,10 @@ pub fn analyzeBody(
try sema.zirResolveInferredAlloc(block, inst);
continue;
},
+ .validate_struct_init_ptr => {
+ try sema.zirValidateStructInitPtr(block, inst);
+ continue;
+ },
// Special case instructions to handle comptime control flow.
.repeat_inline => {
@@ -694,6 +698,18 @@ fn zirResolveInferredAlloc(sema: *Sema, block: *Scope.Block, inst: zir.Inst.Inde
ptr.tag = .alloc;
}
+fn zirValidateStructInitPtr(sema: *Sema, block: *Scope.Block, inst: zir.Inst.Index) InnerError!void {
+ const tracy = trace(@src());
+ defer tracy.end();
+
+ const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
+ const src = inst_data.src();
+ const extra = sema.code.extraData(zir.Inst.Block, inst_data.payload_index);
+ const instrs = sema.code.extra[extra.end..][0..extra.data.body_len];
+
+ return sema.mod.fail(&block.base, src, "TODO implement zirValidateStructInitPtr", .{});
+}
+
fn zirStoreToBlockPtr(sema: *Sema, block: *Scope.Block, inst: zir.Inst.Index) InnerError!void {
const tracy = trace(@src());
defer tracy.end();