Function tokensToSpan [src]

Prototype

pub fn tokensToSpan(tree: *const Ast, start: Ast.TokenIndex, end: Ast.TokenIndex, main: Ast.TokenIndex) Span

Parameters

tree: *const Aststart: Ast.TokenIndexend: Ast.TokenIndexmain: Ast.TokenIndex

Source

pub fn tokensToSpan(tree: *const Ast, start: Ast.TokenIndex, end: Ast.TokenIndex, main: Ast.TokenIndex) Span { var start_tok = start; var end_tok = end; if (tree.tokensOnSameLine(start, end)) { // do nothing } else if (tree.tokensOnSameLine(start, main)) { end_tok = main; } else if (tree.tokensOnSameLine(main, end)) { start_tok = main; } else { start_tok = main; end_tok = main; } const start_off = tree.tokenStart(start_tok); const end_off = tree.tokenStart(end_tok) + @as(u32, @intCast(tree.tokenSlice(end_tok).len)); return Span{ .start = start_off, .end = end_off, .main = tree.tokenStart(main) }; }