diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-04-21 20:42:49 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-04-21 20:42:49 -0700 |
| commit | ea00ddfe3710e386b62849fa4d275b5cbd82e28c (patch) | |
| tree | 8715072bc90faa17b4677a4b6d8bb4bd0d9f7d1b /src/Sema.zig | |
| parent | 8ee0cbe50a61cdd9495a1276a6adee9955681ecc (diff) | |
| download | zig-ea00ddfe3710e386b62849fa4d275b5cbd82e28c.tar.gz zig-ea00ddfe3710e386b62849fa4d275b5cbd82e28c.zip | |
AstGen: implement comptime locals
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index ab912f5fbe..5a40409c86 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -135,7 +135,9 @@ pub fn analyzeBody( .alloc => try sema.zirAlloc(block, inst), .alloc_inferred => try sema.zirAllocInferred(block, inst, Type.initTag(.inferred_alloc_const)), .alloc_inferred_mut => try sema.zirAllocInferred(block, inst, Type.initTag(.inferred_alloc_mut)), + .alloc_inferred_comptime => try sema.zirAllocInferredComptime(block, inst), .alloc_mut => try sema.zirAllocMut(block, inst), + .alloc_comptime => try sema.zirAllocComptime(block, inst), .array_cat => try sema.zirArrayCat(block, inst), .array_mul => try sema.zirArrayMul(block, inst), .array_type => try sema.zirArrayType(block, inst), @@ -177,7 +179,6 @@ pub fn analyzeBody( .elem_val_node => try sema.zirElemValNode(block, inst), .elem_type => try sema.zirElemType(block, inst), .enum_literal => try sema.zirEnumLiteral(block, inst), - .enum_literal_small => try sema.zirEnumLiteralSmall(block, inst), .enum_to_int => try sema.zirEnumToInt(block, inst), .int_to_enum => try sema.zirIntToEnum(block, inst), .err_union_code => try sema.zirErrUnionCode(block, inst), @@ -1130,6 +1131,18 @@ fn zirIndexablePtrLen(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) In return sema.analyzeLoad(block, src, result_ptr, result_ptr.src); } +fn zirAllocComptime(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { + const inst_data = sema.code.instructions.items(.data)[inst].un_node; + const src = inst_data.src(); + return sema.mod.fail(&block.base, src, "TODO implement Sema.zirAllocComptime", .{}); +} + +fn zirAllocInferredComptime(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { + const src_node = sema.code.instructions.items(.data)[inst].node; + const src: LazySrcLoc = .{ .node_offset = src_node }; + return sema.mod.fail(&block.base, src, "TODO implement Sema.zirAllocInferredComptime", .{}); +} + fn zirAlloc(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { const tracy = trace(@src()); defer tracy.end(); @@ -2334,19 +2347,6 @@ fn zirEnumLiteral(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerE }); } -fn zirEnumLiteralSmall(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { - const tracy = trace(@src()); - defer tracy.end(); - - const name = sema.code.instructions.items(.data)[inst].small_str.get(); - const src: LazySrcLoc = .unneeded; - const duped_name = try sema.arena.dupe(u8, name); - return sema.mod.constInst(sema.arena, src, .{ - .ty = Type.initTag(.enum_literal), - .val = try Value.Tag.enum_literal.create(sema.arena, duped_name), - }); -} - fn zirEnumToInt(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { const mod = sema.mod; const arena = sema.arena; |
