feat: lower typed programs and interpret IR
This commit is contained in:
@@ -51,6 +51,14 @@ render_function proc(
|
||||
try append_text(renderer, ast.source_text(tree, ast.node_span(tree, expression)))
|
||||
try append_text(renderer, "\n")
|
||||
}
|
||||
.return_stmt: {
|
||||
try append_text(renderer, " return")
|
||||
if (ast.return_stmt(tree, statement).value) |value| {
|
||||
try append_text(renderer, " ")
|
||||
try append_text(renderer, ast.source_text(tree, ast.node_span(tree, value)))
|
||||
}
|
||||
try append_text(renderer, "\n")
|
||||
}
|
||||
.invalid: try append_text(renderer, " invalid statement\n")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
import "@std/mem"
|
||||
import "@std/testing"
|
||||
import "@source/ast"
|
||||
|
||||
renders_semantic_debug_view test {
|
||||
builder := ast.init_builder(mem.c_allocator, "value :: 42")
|
||||
defer ast.deinit_builder(&builder)
|
||||
value :: try ast.add_literal(&builder, .int, ast.Span{ start = 9, end = 11 })
|
||||
declaration :: try ast.add_statement_decl(
|
||||
&builder,
|
||||
ast.Span{ start = 0, end = 11 },
|
||||
ast.Span{ start = 0, end = 5 },
|
||||
null,
|
||||
.constant,
|
||||
value,
|
||||
)
|
||||
declarations [1]ast.NodeId :: [declaration]
|
||||
package :: try ast.add_package(&builder, ast.Span{ start = 0, end = 11 }, declarations[..])
|
||||
tree := ast.finish(&builder, package)
|
||||
defer ast.deinit(&tree)
|
||||
renderer := init(mem.c_allocator)
|
||||
defer deinit(&renderer)
|
||||
|
||||
try render(&renderer, &tree)
|
||||
|
||||
try testing.expect(mem.eql(u8, "package\n declaration value\n", renderer.bytes.items))
|
||||
}
|
||||
Reference in New Issue
Block a user