Skip to main content

resolve_layout

Function resolve_layout 

Source
pub fn resolve_layout(tokens: Vec<Token>) -> Vec<Token>
Expand description

Resolve indentation-sensitive layout: insert virtual VLBrace/VRBrace/ VSemi tokens per the offside rule so the parser never inspects columns.

Input is the raw lexer token stream; the output preserves every input token in order and interleaves the virtual layout tokens. This is a total function over any token slice — it never panics, even on unbalanced or truncated input (stray brackets and unclosed blocks are tolerated, not rejected).

use daml_parser::lexer::lex;
use daml_parser::layout::resolve_layout;

let lexed = lex("module M where\nfoo = 1\n");
let laid_out = resolve_layout(lexed.tokens);
assert!(laid_out.len() >= 1);