tiny.chant.parse.state.typedef
Defined in parse.state.
API (3)
Actions
Public operations.
Source
Source: lib/chant/src/parse/state/root.zig:10
zig
pub const typedef = @import("typedef.zig");Source: lib/chant/src/parse/state/typedef.zig
zig
const std = @import("std");const ast = @import("../../ast/root.zig");const chant = @import("../../root.zig");const types = @import("types.zig");const Error = @import("../root.zig").Error;const Token = chant.token.Token;const Parser = types.Parser;pub fn isName(parser: *const Parser, name: []const u8) bool { return parser.typedefs.contains(name);}pub fn lookup(parser: *const Parser, name: []const u8) ?*const ast.Type { return parser.typedefs.get(name);}pub fn register(parser: *Parser, name: []const u8, resolved: *const ast.Type) Error!void { try parser.typedefs.put(parser.arena, name, resolved);}test "typedef owns registered names" { var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena_state.deinit(); const arena = arena_state.allocator(); const tokens = [_]Token{ .{ .kind = .eof, .text = "", .file = "test.c", .line = 1, .column = 1 }, }; var parser = try @import("test.zig").initParser(arena, &tokens); try register(&parser, "size_t", &ast.types.ulong_type); try std.testing.expect(isName(&parser, "size_t")); try std.testing.expect(lookup(&parser, "size_t").? == &ast.types.ulong_type);}Audit
| Definitions | 4 |
|---|---|
| Public names | 4 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |