fix: simple knot tests
This commit is contained in:
parent
9ca2200448
commit
cd94a43cc9
7 changed files with 75 additions and 41 deletions
|
|
@ -1410,11 +1410,11 @@ fn knotDecl(gi: *GenIr, parent_scope: *Scope, decl_node: *const Ast.Node) InnerE
|
|||
.data = .{ .payload = undefined },
|
||||
});
|
||||
|
||||
var node_index: usize = 0;
|
||||
var child_block = gi.makeSubBlock();
|
||||
defer child_block.unstack();
|
||||
|
||||
const knot_inst = try gi.makePayloadNode(.decl_knot);
|
||||
|
||||
var child_scope = parent_scope.makeChild();
|
||||
defer child_scope.deinit();
|
||||
|
||||
|
|
@ -1432,18 +1432,18 @@ fn knotDecl(gi: *GenIr, parent_scope: *Scope, decl_node: *const Ast.Node) InnerE
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
var start_index: usize = 0;
|
||||
const first_child = nested_decls_list[0];
|
||||
if (first_child.tag == .block_stmt) {
|
||||
try blockStmt(&child_block, &child_scope, first_child);
|
||||
start_index += 1;
|
||||
if (nested_decls_list.len > 0) {
|
||||
const first_child = nested_decls_list[0];
|
||||
if (first_child.tag == .block_stmt) {
|
||||
try blockStmt(&child_block, &child_scope, first_child);
|
||||
node_index += 1;
|
||||
}
|
||||
}
|
||||
|
||||
var nested_block = child_block.makeSubBlock();
|
||||
defer nested_block.unstack();
|
||||
|
||||
for (nested_decls_list[start_index..]) |nested_decl_node| {
|
||||
for (nested_decls_list[node_index..]) |nested_decl_node| {
|
||||
switch (nested_decl_node.tag) {
|
||||
.stitch_decl => try stitchDecl(&nested_block, &child_scope, nested_decl_node),
|
||||
.function_decl => try functionDecl(&nested_block, &child_scope, nested_decl_node),
|
||||
|
|
@ -1469,18 +1469,20 @@ fn file(gi: *GenIr, scope: *Scope, file_node: *const Ast.Node) InnerError!void {
|
|||
},
|
||||
});
|
||||
|
||||
var node_index: usize = 0;
|
||||
var file_scope = gi.makeSubBlock();
|
||||
defer file_scope.unstack();
|
||||
|
||||
// TODO: Make sure this is non-nullable.
|
||||
const nested_decls_list = file_node.data.list.items orelse return;
|
||||
if (nested_decls_list.len == 0) return;
|
||||
|
||||
const first_child = nested_decls_list[0];
|
||||
if (first_child.tag == .block_stmt) {
|
||||
try defaultBlock(&file_scope, scope, first_child);
|
||||
if (nested_decls_list.len > 0) {
|
||||
const first_child = nested_decls_list[0];
|
||||
if (first_child.tag == .block_stmt) {
|
||||
try defaultBlock(&file_scope, scope, first_child);
|
||||
node_index += 1;
|
||||
}
|
||||
}
|
||||
for (nested_decls_list[1..]) |child_node| {
|
||||
for (nested_decls_list[node_index..]) |child_node| {
|
||||
switch (child_node.tag) {
|
||||
.knot_decl => try knotDecl(gi, scope, child_node),
|
||||
.stitch_decl => try stitchDecl(gi, scope, child_node),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue