Skip to content

Commit

Permalink
feat: Immutability by default
Browse files Browse the repository at this point in the history
closes #139
  • Loading branch information
giann committed Dec 19, 2024
1 parent eacfc9f commit 2798df0
Show file tree
Hide file tree
Showing 20 changed files with 1,271 additions and 585 deletions.
140 changes: 121 additions & 19 deletions src/Codegen.zig

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions src/FFI.zig
Original file line number Diff line number Diff line change
Expand Up @@ -509,24 +509,24 @@ fn unionContainer(self: *Self, name: []const u8, container: Ast.full.ContainerDe
},
);

const foreign_def = o.ObjForeignContainer.ContainerDef{
.location = self.state.?.source,
.name = try self.gc.copyString(name),
// FIXME
.qualified_name = try self.gc.copyString(qualified_name.items),
.zig_type = zig_type,
.buzz_type = buzz_fields,
.fields = get_set_fields,
};

const type_def = o.ObjTypeDef{
.def_type = .ForeignContainer,
.resolved_type = .{ .ForeignContainer = foreign_def },
};

const zdef = try self.gc.allocator.create(Zdef);
zdef.* = .{
.type_def = try self.gc.type_registry.getTypeDef(type_def),
.type_def = try self.gc.type_registry.getTypeDef(
.{
.def_type = .ForeignContainer,
.resolved_type = .{
.ForeignContainer = .{
.location = self.state.?.source,
.name = try self.gc.copyString(name),
// FIXME
.qualified_name = try self.gc.copyString(qualified_name.items),
.zig_type = zig_type,
.buzz_type = buzz_fields,
.fields = get_set_fields,
},
},
},
),
.zig_type = zig_type,
.name = name,
};
Expand Down
10 changes: 5 additions & 5 deletions src/Jit.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1879,7 +1879,7 @@ fn generateCall(self: *Self, node: Ast.Node.Index) Error!?m.MIR_op_t {
),
.ObjectInstance => instance: {
const field = type_defs[node_components[components.callee].Dot.callee].?
.resolved_type.?.ObjectInstance
.resolved_type.?.ObjectInstance.of
.resolved_type.?.Object
.fields.get(member_lexeme).?;

Expand Down Expand Up @@ -3127,7 +3127,7 @@ fn generateList(self: *Self, node: Ast.Node.Index) Error!?m.MIR_op_t {
new_list,
&[_]m.MIR_op_t{
m.MIR_new_reg_op(self.ctx, self.state.?.vm_reg.?),
m.MIR_new_uint_op(self.ctx, type_def.?.resolved_type.?.List.item_type.toValue().val),
m.MIR_new_uint_op(self.ctx, type_def.?.toValue().val),
},
);

Expand Down Expand Up @@ -3387,7 +3387,7 @@ fn generateDot(self: *Self, node: Ast.Node.Index) Error!?m.MIR_op_t {
(try self.generateNode(components.callee)).?,
m.MIR_new_uint_op(
self.ctx,
callee_type.resolved_type.?.ObjectInstance
callee_type.resolved_type.?.ObjectInstance.of
.resolved_type.?.Object.fields
.get(member_lexeme).?.index,
),
Expand All @@ -3400,7 +3400,7 @@ fn generateDot(self: *Self, node: Ast.Node.Index) Error!?m.MIR_op_t {
},
else => {
const field = if (callee_type.def_type == .ObjectInstance)
callee_type.resolved_type.?.ObjectInstance
callee_type.resolved_type.?.ObjectInstance.of
.resolved_type.?.Object.fields
.get(member_lexeme)
else
Expand Down Expand Up @@ -4102,7 +4102,7 @@ fn generateObjectInit(self: *Self, node: Ast.Node.Index) Error!?m.MIR_op_t {
instance,
m.MIR_new_uint_op(
self.ctx,
type_def.?.resolved_type.?.ObjectInstance
type_def.?.resolved_type.?.ObjectInstance.of
.resolved_type.?.Object.fields
.get(lexemes[property.name]).?.index,
),
Expand Down
Loading

0 comments on commit 2798df0

Please sign in to comment.