Files
honey/source/ast/ast.test.hon
T

35 lines
1.3 KiB
Plaintext

import "@std/mem"
import "@std/testing"
exposes_typed_declaration_views test {
builder := init_builder(mem.c_allocator, "value :: 42")
defer deinit_builder(&builder)
value_name :: Span{ start = 0, end = 5 }
value :: try add_literal(&builder, .int, Span{ start = 9, end = 11 })
declaration :: try add_statement_decl(
&builder,
Span{ start = 0, end = 11 },
value_name,
null,
.constant,
value,
)
declarations [1]NodeId := [declaration]
package :: try add_package(&builder, Span{ start = 0, end = 11 }, declarations[..])
tree := finish(&builder, package)
defer deinit(&tree)
try testing.expect_equal(1, package_decl_count(&tree))
decl :: package_decl(&tree, 0)
try testing.expect_equal(DeclKind.statement, decl_kind(&tree, decl))
statement :: statement_decl(&tree, decl)
try testing.expect_equal(value_name.start, statement.name.start)
try testing.expect_equal(value_name.end, statement.name.end)
try testing.expect_equal(Mutability.constant, statement.mutability)
try testing.expect_equal(null, statement.type)
try testing.expect_equal(ExprKind.literal_int, expr_kind(&tree, statement.initializer))
try testing.expect_equal("value", source_text(&tree, statement.name))
}