extraData
Function parameters
Parameters
- T:type
Index into `tokens`, or null.
Types
- OptionalTokenIndex
- Index into `tokens`, or null.
- TokenOffset
- A relative token index.
- OptionalTokenOffset
- A relative token index, or null.
- full
- Fully assembled AST node information.
- ExtraIndex
- Index into `extra_data`.
Functions in this namespace
Functions
- parse
- Result should be freed with tree.deinit() when there are
- renderAlloc
- `gpa` is used for allocating the resulting formatted source code.
- errorOffset
- Returns an extra offset for column and byte offset of errors that
- legacyAsm
- To be deleted after 0.15.0 is tagged
Source
Implementation
pub fn extraData(tree: Ast, index: ExtraIndex, comptime T: type) T {
const fields = std.meta.fields(T);
var result: T = undefined;
inline for (fields, 0..) |field, i| {
@field(result, field.name) = switch (field.type) {
Node.Index,
Node.OptionalIndex,
OptionalTokenIndex,
ExtraIndex,
=> @enumFromInt(tree.extra_data[@intFromEnum(index) + i]),
TokenIndex => tree.extra_data[@intFromEnum(index) + i],
else => @compileError("unexpected field type: " ++ @typeName(field.type)),
};
}
return result;
}