✓
Passing This code compiles and runs correctly.
Code
const std = @import("std");
const ast = @import("ast");
const Program = ast.Program;
const Item = ast.Item;
~[keyword|comptime|transform]pub tor sample-transform {
item: *const Item,
program: *const Program,
allocator: std.mem.Allocator
} -> SiteResult
~[norun]pub tor sample-impl {}
~proc sample-transform|zig {
// Deriving flow from item
const flow = if (item.* == .flow)
&item.flow
else
return .{};
const segments = allocator.alloc([]const u8, 1) catch unreachable;
segments[0] = "sample-impl";
var new_inv = flow.inv().*;
new_inv.path = ast.DottedPath{
.segments = segments,
.module_qualifier = "input"
};
new_inv.annotations = &[_][]const u8{ "@pass_ran(\"transform\")" };
const transformed_flow = ast.Flow{
.body = ast.rootSite(new_inv, flow.body.continuations, flow.location),
.inline_body = " // lowered\n",
.location = flow.location,
.module = flow.module,
};
return .{ .replacement = .{ .flow = transformed_flow } };
}
~sample-transform()
Flows
flow ~sample-transform click a branch to expand · @labels scroll to their anchor
sample-transform
Test Configuration
MUST_RUN