1752: Always wrap blocks into block expressions r=flodiebold a=matklad

This way, things like function bodies are expressions, and we don't have to single them out

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2019-09-02 19:20:24 +00:00 committed by GitHub
commit 7faec1c300
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
174 changed files with 9432 additions and 9105 deletions

View file

@ -274,7 +274,7 @@ impl AstBuilder<ast::Block> {
impl AstBuilder<ast::Expr> { impl AstBuilder<ast::Expr> {
fn from_text(text: &str) -> ast::Expr { fn from_text(text: &str) -> ast::Expr {
ast_node_from_file_text(&format!("fn f() {{ {}; }}", text)) ast_node_from_file_text(&format!("const C: () = {};", text))
} }
pub fn unit() -> ast::Expr { pub fn unit() -> ast::Expr {

View file

@ -3,7 +3,8 @@ use hir::db::HirDatabase;
use ra_syntax::{ use ra_syntax::{
ast::{self, AstNode}, ast::{self, AstNode},
SyntaxKind::{ SyntaxKind::{
BREAK_EXPR, COMMENT, LAMBDA_EXPR, LOOP_EXPR, MATCH_ARM, PATH_EXPR, RETURN_EXPR, WHITESPACE, BLOCK_EXPR, BREAK_EXPR, COMMENT, LAMBDA_EXPR, LOOP_EXPR, MATCH_ARM, PATH_EXPR, RETURN_EXPR,
WHITESPACE,
}, },
SyntaxNode, TextUnit, SyntaxNode, TextUnit,
}; };
@ -80,10 +81,12 @@ pub(crate) fn introduce_variable(mut ctx: AssistCtx<impl HirDatabase>) -> Option
/// In general that's true for any expression, but in some cases that would produce invalid code. /// In general that's true for any expression, but in some cases that would produce invalid code.
fn valid_target_expr(node: SyntaxNode) -> Option<ast::Expr> { fn valid_target_expr(node: SyntaxNode) -> Option<ast::Expr> {
match node.kind() { match node.kind() {
PATH_EXPR => None, PATH_EXPR | LOOP_EXPR => None,
BREAK_EXPR => ast::BreakExpr::cast(node).and_then(|e| e.expr()), BREAK_EXPR => ast::BreakExpr::cast(node).and_then(|e| e.expr()),
RETURN_EXPR => ast::ReturnExpr::cast(node).and_then(|e| e.expr()), RETURN_EXPR => ast::ReturnExpr::cast(node).and_then(|e| e.expr()),
LOOP_EXPR => ast::ReturnExpr::cast(node).and_then(|e| e.expr()), BLOCK_EXPR => {
ast::BlockExpr::cast(node).filter(|it| it.is_standalone()).map(ast::Expr::from)
}
_ => ast::Expr::cast(node), _ => ast::Expr::cast(node),
} }
} }

View file

@ -65,9 +65,9 @@ pub(crate) fn move_arm_cond_to_match_guard(mut ctx: AssistCtx<impl HirDatabase>)
"move condition to match guard", "move condition to match guard",
|edit| { |edit| {
edit.target(if_expr.syntax().text_range()); edit.target(if_expr.syntax().text_range());
let then_only_expr = then_block.statements().next().is_none(); let then_only_expr = then_block.block().and_then(|it| it.statements().next()).is_none();
match &then_block.expr() { match &then_block.block().and_then(|it| it.expr()) {
Some(then_expr) if then_only_expr => { Some(then_expr) if then_only_expr => {
edit.replace(if_expr.syntax().text_range(), then_expr.syntax().text()) edit.replace(if_expr.syntax().text_range(), then_expr.syntax().text())
} }

View file

@ -1,3 +1,4 @@
use format_buf::format;
use hir::db::HirDatabase; use hir::db::HirDatabase;
use ra_fmt::extract_trivial_expression; use ra_fmt::extract_trivial_expression;
use ra_syntax::{ast, AstNode}; use ra_syntax::{ast, AstNode};
@ -25,16 +26,21 @@ pub(crate) fn replace_if_let_with_match(mut ctx: AssistCtx<impl HirDatabase>) ->
ctx.build() ctx.build()
} }
fn build_match_expr(expr: ast::Expr, pat1: ast::Pat, arm1: ast::Block, arm2: ast::Block) -> String { fn build_match_expr(
expr: ast::Expr,
pat1: ast::Pat,
arm1: ast::BlockExpr,
arm2: ast::BlockExpr,
) -> String {
let mut buf = String::new(); let mut buf = String::new();
buf.push_str(&format!("match {} {{\n", expr.syntax().text())); format!(buf, "match {} {{\n", expr.syntax().text());
buf.push_str(&format!(" {} => {}\n", pat1.syntax().text(), format_arm(&arm1))); format!(buf, " {} => {}\n", pat1.syntax().text(), format_arm(&arm1));
buf.push_str(&format!(" _ => {}\n", format_arm(&arm2))); format!(buf, " _ => {}\n", format_arm(&arm2));
buf.push_str("}"); buf.push_str("}");
buf buf
} }
fn format_arm(block: &ast::Block) -> String { fn format_arm(block: &ast::BlockExpr) -> String {
match extract_trivial_expression(block) { match extract_trivial_expression(block) {
None => block.syntax().text().to_string(), None => block.syntax().text().to_string(),
Some(e) => format!("{},", e.syntax().text()), Some(e) => format!("{},", e.syntax().text()),

View file

@ -34,7 +34,8 @@ fn prev_tokens(token: SyntaxToken) -> impl Iterator<Item = SyntaxToken> {
successors(token.prev_token(), |token| token.prev_token()) successors(token.prev_token(), |token| token.prev_token())
} }
pub fn extract_trivial_expression(block: &ast::Block) -> Option<ast::Expr> { pub fn extract_trivial_expression(expr: &ast::BlockExpr) -> Option<ast::Expr> {
let block = expr.block()?;
let expr = block.expr()?; let expr = block.expr()?;
if expr.syntax().text().contains_char('\n') { if expr.syntax().text().contains_char('\n') {
return None; return None;

View file

@ -119,10 +119,10 @@ where
expr_id: crate::expr::ExprId, expr_id: crate::expr::ExprId,
) -> Option<Source<ast::Expr>> { ) -> Option<Source<ast::Expr>> {
let source_map = self.body_source_map(db); let source_map = self.body_source_map(db);
let expr_syntax = source_map.expr_syntax(expr_id)?; let expr_syntax = source_map.expr_syntax(expr_id)?.a()?;
let source = self.source(db); let source = self.source(db);
let node = expr_syntax.to_node(&source.ast.syntax()); let ast = expr_syntax.to_node(&source.ast.syntax());
ast::Expr::cast(node).map(|ast| Source { file_id: source.file_id, ast }) Some(Source { file_id: source.file_id, ast })
} }
} }

View file

@ -9,7 +9,7 @@ use ra_syntax::{
self, ArgListOwner, ArrayExprKind, LiteralKind, LoopBodyOwner, NameOwner, self, ArgListOwner, ArrayExprKind, LiteralKind, LoopBodyOwner, NameOwner,
TypeAscriptionOwner, TypeAscriptionOwner,
}, },
AstNode, AstPtr, SyntaxNodePtr, AstNode, AstPtr,
}; };
use test_utils::tested_by; use test_utils::tested_by;
@ -56,13 +56,14 @@ pub struct Body {
/// file, so that we don't recompute types whenever some whitespace is typed. /// file, so that we don't recompute types whenever some whitespace is typed.
#[derive(Default, Debug, Eq, PartialEq)] #[derive(Default, Debug, Eq, PartialEq)]
pub struct BodySourceMap { pub struct BodySourceMap {
expr_map: FxHashMap<SyntaxNodePtr, ExprId>, expr_map: FxHashMap<ExprPtr, ExprId>,
expr_map_back: ArenaMap<ExprId, SyntaxNodePtr>, expr_map_back: ArenaMap<ExprId, ExprPtr>,
pat_map: FxHashMap<PatPtr, PatId>, pat_map: FxHashMap<PatPtr, PatId>,
pat_map_back: ArenaMap<PatId, PatPtr>, pat_map_back: ArenaMap<PatId, PatPtr>,
field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>, field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>,
} }
type ExprPtr = Either<AstPtr<ast::Expr>, AstPtr<ast::RecordField>>;
type PatPtr = Either<AstPtr<ast::Pat>, AstPtr<ast::SelfParam>>; type PatPtr = Either<AstPtr<ast::Pat>, AstPtr<ast::SelfParam>>;
impl Body { impl Body {
@ -128,16 +129,12 @@ impl Index<PatId> for Body {
} }
impl BodySourceMap { impl BodySourceMap {
pub(crate) fn expr_syntax(&self, expr: ExprId) -> Option<SyntaxNodePtr> { pub(crate) fn expr_syntax(&self, expr: ExprId) -> Option<ExprPtr> {
self.expr_map_back.get(expr).cloned() self.expr_map_back.get(expr).cloned()
} }
pub(crate) fn syntax_expr(&self, ptr: SyntaxNodePtr) -> Option<ExprId> {
self.expr_map.get(&ptr).cloned()
}
pub(crate) fn node_expr(&self, node: &ast::Expr) -> Option<ExprId> { pub(crate) fn node_expr(&self, node: &ast::Expr) -> Option<ExprId> {
self.expr_map.get(&SyntaxNodePtr::new(node.syntax())).cloned() self.expr_map.get(&Either::A(AstPtr::new(node))).cloned()
} }
pub(crate) fn pat_syntax(&self, pat: PatId) -> Option<PatPtr> { pub(crate) fn pat_syntax(&self, pat: PatId) -> Option<PatPtr> {
@ -575,11 +572,12 @@ where
current_file_id: file_id, current_file_id: file_id,
} }
} }
fn alloc_expr(&mut self, expr: Expr, syntax_ptr: SyntaxNodePtr) -> ExprId { fn alloc_expr(&mut self, expr: Expr, ptr: AstPtr<ast::Expr>) -> ExprId {
let ptr = Either::A(ptr);
let id = self.exprs.alloc(expr); let id = self.exprs.alloc(expr);
if self.current_file_id == self.original_file_id { if self.current_file_id == self.original_file_id {
self.source_map.expr_map.insert(syntax_ptr, id); self.source_map.expr_map.insert(ptr, id);
self.source_map.expr_map_back.insert(id, syntax_ptr); self.source_map.expr_map_back.insert(id, ptr);
} }
id id
} }
@ -601,7 +599,7 @@ where
} }
fn collect_expr(&mut self, expr: ast::Expr) -> ExprId { fn collect_expr(&mut self, expr: ast::Expr) -> ExprId {
let syntax_ptr = SyntaxNodePtr::new(expr.syntax()); let syntax_ptr = AstPtr::new(&expr);
match expr { match expr {
ast::Expr::IfExpr(e) => { ast::Expr::IfExpr(e) => {
let then_branch = self.collect_block_opt(e.then_branch()); let then_branch = self.collect_block_opt(e.then_branch());
@ -640,10 +638,10 @@ where
self.alloc_expr(Expr::If { condition, then_branch, else_branch }, syntax_ptr) self.alloc_expr(Expr::If { condition, then_branch, else_branch }, syntax_ptr)
} }
ast::Expr::TryBlockExpr(e) => { ast::Expr::TryBlockExpr(e) => {
let body = self.collect_block_opt(e.block()); let body = self.collect_block_opt(e.body());
self.alloc_expr(Expr::TryBlock { body }, syntax_ptr) self.alloc_expr(Expr::TryBlock { body }, syntax_ptr)
} }
ast::Expr::BlockExpr(e) => self.collect_block_opt(e.block()), ast::Expr::BlockExpr(e) => self.collect_block(e),
ast::Expr::LoopExpr(e) => { ast::Expr::LoopExpr(e) => {
let body = self.collect_block_opt(e.loop_body()); let body = self.collect_block_opt(e.loop_body());
self.alloc_expr(Expr::Loop { body }, syntax_ptr) self.alloc_expr(Expr::Loop { body }, syntax_ptr)
@ -739,7 +737,7 @@ where
ast::Expr::ParenExpr(e) => { ast::Expr::ParenExpr(e) => {
let inner = self.collect_expr_opt(e.expr()); let inner = self.collect_expr_opt(e.expr());
// make the paren expr point to the inner expression as well // make the paren expr point to the inner expression as well
self.source_map.expr_map.insert(syntax_ptr, inner); self.source_map.expr_map.insert(Either::A(syntax_ptr), inner);
inner inner
} }
ast::Expr::ReturnExpr(e) => { ast::Expr::ReturnExpr(e) => {
@ -763,12 +761,9 @@ where
} else if let Some(nr) = field.name_ref() { } else if let Some(nr) = field.name_ref() {
// field shorthand // field shorthand
let id = self.exprs.alloc(Expr::Path(Path::from_name_ref(&nr))); let id = self.exprs.alloc(Expr::Path(Path::from_name_ref(&nr)));
self.source_map let ptr = Either::B(AstPtr::new(&field));
.expr_map self.source_map.expr_map.insert(ptr, id);
.insert(SyntaxNodePtr::new(nr.syntax()), id); self.source_map.expr_map_back.insert(id, ptr);
self.source_map
.expr_map_back
.insert(id, SyntaxNodePtr::new(nr.syntax()));
id id
} else { } else {
self.exprs.alloc(Expr::Missing) self.exprs.alloc(Expr::Missing)
@ -942,7 +937,12 @@ where
} }
} }
fn collect_block(&mut self, block: ast::Block) -> ExprId { fn collect_block(&mut self, expr: ast::BlockExpr) -> ExprId {
let syntax_node_ptr = AstPtr::new(&expr.clone().into());
let block = match expr.block() {
Some(block) => block,
None => return self.alloc_expr(Expr::Missing, syntax_node_ptr),
};
let statements = block let statements = block
.statements() .statements()
.map(|s| match s { .map(|s| match s {
@ -956,11 +956,11 @@ where
}) })
.collect(); .collect();
let tail = block.expr().map(|e| self.collect_expr(e)); let tail = block.expr().map(|e| self.collect_expr(e));
self.alloc_expr(Expr::Block { statements, tail }, SyntaxNodePtr::new(block.syntax())) self.alloc_expr(Expr::Block { statements, tail }, syntax_node_ptr)
} }
fn collect_block_opt(&mut self, block: Option<ast::Block>) -> ExprId { fn collect_block_opt(&mut self, expr: Option<ast::BlockExpr>) -> ExprId {
if let Some(block) = block { if let Some(block) = expr {
self.collect_block(block) self.collect_block(block)
} else { } else {
self.exprs.alloc(Expr::Missing) self.exprs.alloc(Expr::Missing)

View file

@ -172,7 +172,7 @@ fn compute_expr_scopes(expr: ExprId, body: &Body, scopes: &mut ExprScopes, scope
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use ra_db::SourceDatabase; use ra_db::SourceDatabase;
use ra_syntax::{algo::find_node_at_offset, ast, AstNode, SyntaxNodePtr}; use ra_syntax::{algo::find_node_at_offset, ast, AstNode};
use test_utils::{assert_eq_text, extract_offset}; use test_utils::{assert_eq_text, extract_offset};
use crate::{mock::MockDatabase, source_binder::SourceAnalyzer}; use crate::{mock::MockDatabase, source_binder::SourceAnalyzer};
@ -194,8 +194,7 @@ mod tests {
let analyzer = SourceAnalyzer::new(&db, file_id, marker.syntax(), None); let analyzer = SourceAnalyzer::new(&db, file_id, marker.syntax(), None);
let scopes = analyzer.scopes(); let scopes = analyzer.scopes();
let expr_id = let expr_id = analyzer.body_source_map().node_expr(&marker.into()).unwrap();
analyzer.body_source_map().syntax_expr(SyntaxNodePtr::new(marker.syntax())).unwrap();
let scope = scopes.scope_for(expr_id); let scope = scopes.scope_for(expr_id);
let actual = scopes let actual = scopes

View file

@ -1,7 +1,7 @@
use rustc_hash::FxHashSet;
use std::sync::Arc; use std::sync::Arc;
use ra_syntax::ast::{AstNode, RecordLit}; use ra_syntax::ast::{self, AstNode};
use rustc_hash::FxHashSet;
use super::{Expr, ExprId, RecordLitField}; use super::{Expr, ExprId, RecordLitField};
use crate::{ use crate::{
@ -13,7 +13,6 @@ use crate::{
ty::{ApplicationTy, InferenceResult, Ty, TypeCtor}, ty::{ApplicationTy, InferenceResult, Ty, TypeCtor},
Function, HasSource, HirDatabase, ModuleDef, Name, Path, PerNs, Resolution, Function, HasSource, HirDatabase, ModuleDef, Name, Path, PerNs, Resolution,
}; };
use ra_syntax::ast;
pub(crate) struct ExprValidator<'a, 'b: 'a> { pub(crate) struct ExprValidator<'a, 'b: 'a> {
func: Function, func: Function,
@ -84,8 +83,12 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
let source_file = parse.tree(); let source_file = parse.tree();
if let Some(field_list_node) = source_map if let Some(field_list_node) = source_map
.expr_syntax(id) .expr_syntax(id)
.and_then(|ptr| ptr.a())
.map(|ptr| ptr.to_node(source_file.syntax())) .map(|ptr| ptr.to_node(source_file.syntax()))
.and_then(RecordLit::cast) .and_then(|expr| match expr {
ast::Expr::RecordLit(it) => Some(it),
_ => None,
})
.and_then(|lit| lit.record_field_list()) .and_then(|lit| lit.record_field_list())
{ {
let field_list_ptr = AstPtr::new(&field_list_node); let field_list_ptr = AstPtr::new(&field_list_node);
@ -135,7 +138,7 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
let source_map = self.func.body_source_map(db); let source_map = self.func.body_source_map(db);
let file_id = self.func.source(db).file_id; let file_id = self.func.source(db).file_id;
if let Some(expr) = source_map.expr_syntax(id).and_then(|n| n.cast::<ast::Expr>()) { if let Some(expr) = source_map.expr_syntax(id).and_then(|n| n.a()) {
self.sink.push(MissingOkInTailExpr { file: file_id, expr }); self.sink.push(MissingOkInTailExpr { file: file_id, expr });
} }
} }

View file

@ -462,8 +462,8 @@ fn scope_for(
node: &SyntaxNode, node: &SyntaxNode,
) -> Option<ScopeId> { ) -> Option<ScopeId> {
node.ancestors() node.ancestors()
.map(|it| SyntaxNodePtr::new(&it)) .filter_map(ast::Expr::cast)
.filter_map(|ptr| source_map.syntax_expr(ptr)) .filter_map(|it| source_map.node_expr(&it))
.find_map(|it| scopes.scope_for(it)) .find_map(|it| scopes.scope_for(it))
} }
@ -475,7 +475,10 @@ fn scope_for_offset(
scopes scopes
.scope_by_expr() .scope_by_expr()
.iter() .iter()
.filter_map(|(id, scope)| Some((source_map.expr_syntax(*id)?, scope))) .filter_map(|(id, scope)| {
let ast_ptr = source_map.expr_syntax(*id)?.a()?;
Some((ast_ptr.syntax_node_ptr(), scope))
})
// find containing scope // find containing scope
.min_by_key(|(ptr, _scope)| { .min_by_key(|(ptr, _scope)| {
(!(ptr.range().start() <= offset && offset <= ptr.range().end()), ptr.range().len()) (!(ptr.range().start() <= offset && offset <= ptr.range().end()), ptr.range().len())
@ -495,7 +498,10 @@ fn adjust(
let child_scopes = scopes let child_scopes = scopes
.scope_by_expr() .scope_by_expr()
.iter() .iter()
.filter_map(|(id, scope)| Some((source_map.expr_syntax(*id)?, scope))) .filter_map(|(id, scope)| {
let ast_ptr = source_map.expr_syntax(*id)?.a()?;
Some((ast_ptr.syntax_node_ptr(), scope))
})
.map(|(ptr, scope)| (ptr.range(), scope)) .map(|(ptr, scope)| (ptr.range(), scope))
.filter(|(range, _)| range.start() <= offset && range.is_subrange(&r) && *range != r); .filter(|(range, _)| range.start() <= offset && range.is_subrange(&r) && *range != r);

View file

@ -3582,7 +3582,7 @@ fn infer(content: &str) -> String {
for (expr, ty) in inference_result.type_of_expr.iter() { for (expr, ty) in inference_result.type_of_expr.iter() {
let syntax_ptr = match body_source_map.expr_syntax(expr) { let syntax_ptr = match body_source_map.expr_syntax(expr) {
Some(sp) => sp, Some(sp) => sp.either(|it| it.syntax_node_ptr(), |it| it.syntax_node_ptr()),
None => continue, None => continue,
}; };
types.push((syntax_ptr, ty)); types.push((syntax_ptr, ty));

View file

@ -123,7 +123,7 @@ fn has_comma_after(node: &SyntaxNode) -> bool {
fn join_single_expr_block(edit: &mut TextEditBuilder, token: &SyntaxToken) -> Option<()> { fn join_single_expr_block(edit: &mut TextEditBuilder, token: &SyntaxToken) -> Option<()> {
let block = ast::Block::cast(token.parent())?; let block = ast::Block::cast(token.parent())?;
let block_expr = ast::BlockExpr::cast(block.syntax().parent()?)?; let block_expr = ast::BlockExpr::cast(block.syntax().parent()?)?;
let expr = extract_trivial_expression(&block)?; let expr = extract_trivial_expression(&block_expr)?;
let block_range = block_expr.syntax().text_range(); let block_range = block_expr.syntax().text_range();
let mut buf = expr.syntax().text().to_string(); let mut buf = expr.syntax().text().to_string();

View file

@ -116,9 +116,10 @@ SOURCE_FILE@[0; 11)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 11) BLOCK_EXPR@[9; 11)
L_CURLY@[9; 10) "{" BLOCK@[9; 11)
R_CURLY@[10; 11) "}" L_CURLY@[9; 10) "{"
R_CURLY@[10; 11) "}"
"# "#
.trim() .trim()
); );
@ -148,26 +149,27 @@ SOURCE_FILE@[0; 60)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 60) BLOCK_EXPR@[10; 60)
L_CURLY@[10; 11) "{" BLOCK@[10; 60)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
EXPR_STMT@[16; 58) WHITESPACE@[11; 16) "\n "
MACRO_CALL@[16; 57) EXPR_STMT@[16; 58)
PATH@[16; 22) MACRO_CALL@[16; 57)
PATH_SEGMENT@[16; 22) PATH@[16; 22)
NAME_REF@[16; 22) PATH_SEGMENT@[16; 22)
IDENT@[16; 22) "assert" NAME_REF@[16; 22)
EXCL@[22; 23) "!" IDENT@[16; 22) "assert"
TOKEN_TREE@[23; 57) EXCL@[22; 23) "!"
L_PAREN@[23; 24) "(" TOKEN_TREE@[23; 57)
STRING@[24; 52) "\"\n fn foo() {\n ..." L_PAREN@[23; 24) "("
COMMA@[52; 53) "," STRING@[24; 52) "\"\n fn foo() {\n ..."
WHITESPACE@[53; 54) " " COMMA@[52; 53) ","
STRING@[54; 56) "\"\"" WHITESPACE@[53; 54) " "
R_PAREN@[56; 57) ")" STRING@[54; 56) "\"\""
SEMI@[57; 58) ";" R_PAREN@[56; 57) ")"
WHITESPACE@[58; 59) "\n" SEMI@[57; 58) ";"
R_CURLY@[59; 60) "}" WHITESPACE@[58; 59) "\n"
R_CURLY@[59; 60) "}"
"# "#
.trim() .trim()
); );
@ -190,9 +192,10 @@ FN_DEF@[0; 11)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 11) BLOCK_EXPR@[9; 11)
L_CURLY@[9; 10) "{" BLOCK@[9; 11)
R_CURLY@[10; 11) "}" L_CURLY@[9; 10) "{"
R_CURLY@[10; 11) "}"
"# "#
.trim() .trim()
); );
@ -258,10 +261,11 @@ SOURCE_FILE@[0; 12)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 12) BLOCK_EXPR@[9; 12)
L_CURLY@[9; 10) "{" BLOCK@[9; 12)
WHITESPACE@[10; 11) "\n" L_CURLY@[9; 10) "{"
R_CURLY@[11; 12) "}" WHITESPACE@[10; 11) "\n"
R_CURLY@[11; 12) "}"
"# "#
.trim() .trim()
); );
@ -292,10 +296,11 @@ SOURCE_FILE@[0; 12)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 12) BLOCK_EXPR@[9; 12)
L_CURLY@[9; 10) "{" BLOCK@[9; 12)
WHITESPACE@[10; 11) "\n" L_CURLY@[9; 10) "{"
R_CURLY@[11; 12) "}" WHITESPACE@[10; 11) "\n"
R_CURLY@[11; 12) "}"
"# "#
.trim() .trim()
); );
@ -325,10 +330,11 @@ SOURCE_FILE@[0; 25)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 12) BLOCK_EXPR@[9; 12)
L_CURLY@[9; 10) "{" BLOCK@[9; 12)
WHITESPACE@[10; 11) "\n" L_CURLY@[9; 10) "{"
R_CURLY@[11; 12) "}" WHITESPACE@[10; 11) "\n"
R_CURLY@[11; 12) "}"
WHITESPACE@[12; 13) "\n" WHITESPACE@[12; 13) "\n"
FN_DEF@[13; 25) FN_DEF@[13; 25)
FN_KW@[13; 15) "fn" FN_KW@[13; 15) "fn"
@ -339,10 +345,11 @@ SOURCE_FILE@[0; 25)
L_PAREN@[19; 20) "(" L_PAREN@[19; 20) "("
R_PAREN@[20; 21) ")" R_PAREN@[20; 21) ")"
WHITESPACE@[21; 22) " " WHITESPACE@[21; 22) " "
BLOCK@[22; 25) BLOCK_EXPR@[22; 25)
L_CURLY@[22; 23) "{" BLOCK@[22; 25)
WHITESPACE@[23; 24) "\n" L_CURLY@[22; 23) "{"
R_CURLY@[24; 25) "}" WHITESPACE@[23; 24) "\n"
R_CURLY@[24; 25) "}"
"# "#
.trim() .trim()
); );

View file

@ -678,21 +678,22 @@ fn test_expr_order() {
PARAM_LIST@[5; 7) PARAM_LIST@[5; 7)
L_PAREN@[5; 6) "(" L_PAREN@[5; 6) "("
R_PAREN@[6; 7) ")" R_PAREN@[6; 7) ")"
BLOCK@[7; 15) BLOCK_EXPR@[7; 15)
L_CURLY@[7; 8) "{" BLOCK@[7; 15)
EXPR_STMT@[8; 14) L_CURLY@[7; 8) "{"
BIN_EXPR@[8; 13) EXPR_STMT@[8; 14)
BIN_EXPR@[8; 11) BIN_EXPR@[8; 13)
LITERAL@[8; 9) BIN_EXPR@[8; 11)
INT_NUMBER@[8; 9) "1" LITERAL@[8; 9)
PLUS@[9; 10) "+" INT_NUMBER@[8; 9) "1"
LITERAL@[10; 11) PLUS@[9; 10) "+"
INT_NUMBER@[10; 11) "1" LITERAL@[10; 11)
STAR@[11; 12) "*" INT_NUMBER@[10; 11) "1"
LITERAL@[12; 13) STAR@[11; 12) "*"
INT_NUMBER@[12; 13) "2" LITERAL@[12; 13)
SEMI@[13; 14) ";" INT_NUMBER@[12; 13) "2"
R_CURLY@[14; 15) "}""#, SEMI@[13; 14) ";"
R_CURLY@[14; 15) "}""#,
); );
} }

View file

@ -144,7 +144,7 @@ pub(crate) fn reparser(
parent: Option<SyntaxKind>, parent: Option<SyntaxKind>,
) -> Option<fn(&mut Parser)> { ) -> Option<fn(&mut Parser)> {
let res = match node { let res = match node {
BLOCK => expressions::block, BLOCK => expressions::naked_block,
RECORD_FIELD_DEF_LIST => items::record_field_def_list, RECORD_FIELD_DEF_LIST => items::record_field_def_list,
RECORD_FIELD_LIST => items::record_field_list, RECORD_FIELD_LIST => items::record_field_list,
ENUM_VARIANT_LIST => items::enum_variant_list, ENUM_VARIANT_LIST => items::enum_variant_list,

View file

@ -40,6 +40,11 @@ pub(crate) fn block(p: &mut Parser) {
p.error("expected a block"); p.error("expected a block");
return; return;
} }
atom::block_expr(p, None);
}
pub(crate) fn naked_block(p: &mut Parser) {
assert!(p.at(T!['{']));
let m = p.start(); let m = p.start();
p.bump(); p.bump();
expr_block_contents(p); expr_block_contents(p);

View file

@ -463,10 +463,10 @@ fn match_guard(p: &mut Parser) -> CompletedMarker {
// unsafe {}; // unsafe {};
// 'label: {}; // 'label: {};
// } // }
fn block_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker { pub(super) fn block_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
assert!(p.at(T!['{'])); assert!(p.at(T!['{']));
let m = m.unwrap_or_else(|| p.start()); let m = m.unwrap_or_else(|| p.start());
block(p); naked_block(p);
m.complete(p, BLOCK_EXPR) m.complete(p, BLOCK_EXPR)
} }

View file

@ -9,12 +9,12 @@ use crate::{
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]
pub enum ElseBranch { pub enum ElseBranch {
Block(ast::Block), Block(ast::BlockExpr),
IfExpr(ast::IfExpr), IfExpr(ast::IfExpr),
} }
impl ast::IfExpr { impl ast::IfExpr {
pub fn then_branch(&self) -> Option<ast::Block> { pub fn then_branch(&self) -> Option<ast::BlockExpr> {
self.blocks().nth(0) self.blocks().nth(0)
} }
pub fn else_branch(&self) -> Option<ElseBranch> { pub fn else_branch(&self) -> Option<ElseBranch> {
@ -28,7 +28,7 @@ impl ast::IfExpr {
Some(res) Some(res)
} }
fn blocks(&self) -> AstChildren<ast::Block> { fn blocks(&self) -> AstChildren<ast::BlockExpr> {
children(self) children(self)
} }
} }
@ -289,6 +289,26 @@ impl ast::Literal {
} }
} }
impl ast::BlockExpr {
/// false if the block is an intrinsic part of the syntax and can't be
/// replaced with arbitrary expression.
///
/// ```not_rust
/// fn foo() { not_stand_alone }
/// const FOO: () = { stand_alone };
/// ```
pub fn is_standalone(&self) -> bool {
let kind = match self.syntax().parent() {
None => return true,
Some(it) => it.kind(),
};
match kind {
FN_DEF | MATCH_ARM | IF_EXPR | WHILE_EXPR | LOOP_EXPR | TRY_BLOCK_EXPR => false,
_ => true,
}
}
}
#[test] #[test]
fn test_literal_with_attr() { fn test_literal_with_attr() {
let parse = ast::SourceFile::parse(r#"const _: &str = { #[attr] "Hello" };"#); let parse = ast::SourceFile::parse(r#"const _: &str = { #[attr] "Hello" };"#);

View file

@ -1003,7 +1003,7 @@ impl FnDef {
pub fn param_list(&self) -> Option<ParamList> { pub fn param_list(&self) -> Option<ParamList> {
AstChildren::new(&self.syntax).next() AstChildren::new(&self.syntax).next()
} }
pub fn body(&self) -> Option<Block> { pub fn body(&self) -> Option<BlockExpr> {
AstChildren::new(&self.syntax).next() AstChildren::new(&self.syntax).next()
} }
pub fn ret_type(&self) -> Option<RetType> { pub fn ret_type(&self) -> Option<RetType> {
@ -3135,7 +3135,7 @@ impl AstNode for TryBlockExpr {
} }
} }
impl TryBlockExpr { impl TryBlockExpr {
pub fn block(&self) -> Option<Block> { pub fn body(&self) -> Option<BlockExpr> {
AstChildren::new(&self.syntax).next() AstChildren::new(&self.syntax).next()
} }
} }

View file

@ -28,7 +28,7 @@ pub trait VisibilityOwner: AstNode {
} }
pub trait LoopBodyOwner: AstNode { pub trait LoopBodyOwner: AstNode {
fn loop_body(&self) -> Option<ast::Block> { fn loop_body(&self) -> Option<ast::BlockExpr> {
child_opt(self) child_opt(self)
} }
} }

View file

@ -275,7 +275,7 @@ Grammar(
"AttrsOwner", "AttrsOwner",
"DocCommentsOwner" "DocCommentsOwner"
], ],
options: [ "ParamList", ["body", "Block"], "RetType" ], options: [ "ParamList", ["body", "BlockExpr"], "RetType" ],
), ),
"RetType": (options: ["TypeRef"]), "RetType": (options: ["TypeRef"]),
"StructDef": ( "StructDef": (
@ -426,7 +426,7 @@ Grammar(
traits: ["LoopBodyOwner"], traits: ["LoopBodyOwner"],
), ),
"TryBlockExpr": ( "TryBlockExpr": (
options: ["Block"], options: [["body", "BlockExpr"]],
), ),
"ForExpr": ( "ForExpr": (
traits: ["LoopBodyOwner"], traits: ["LoopBodyOwner"],

View file

@ -203,7 +203,8 @@ fn api_walkthrough() {
assert_eq!(name.text(), "foo"); assert_eq!(name.text(), "foo");
// Let's get the `1 + 1` expression! // Let's get the `1 + 1` expression!
let block: ast::Block = func.body().unwrap(); let body: ast::BlockExpr = func.body().unwrap();
let block = body.block().unwrap();
let expr: ast::Expr = block.expr().unwrap(); let expr: ast::Expr = block.expr().unwrap();
// Enums are used to group related ast nodes together, and can be used for // Enums are used to group related ast nodes together, and can be used for

View file

@ -97,7 +97,7 @@ pub(crate) fn validate(root: &SyntaxNode) -> Vec<SyntaxError> {
for node in root.descendants() { for node in root.descendants() {
let _ = visitor_ctx(&mut errors) let _ = visitor_ctx(&mut errors)
.visit::<ast::Literal, _>(validate_literal) .visit::<ast::Literal, _>(validate_literal)
.visit::<ast::Block, _>(block::validate_block_node) .visit::<ast::BlockExpr, _>(block::validate_block_expr)
.visit::<ast::FieldExpr, _>(|it, errors| validate_numeric_name(it.name_ref(), errors)) .visit::<ast::FieldExpr, _>(|it, errors| validate_numeric_name(it.name_ref(), errors))
.visit::<ast::RecordField, _>(|it, errors| validate_numeric_name(it.name_ref(), errors)) .visit::<ast::RecordField, _>(|it, errors| validate_numeric_name(it.name_ref(), errors))
.accept(&node); .accept(&node);

View file

@ -5,18 +5,18 @@ use crate::{
SyntaxKind::*, SyntaxKind::*,
}; };
pub(crate) fn validate_block_node(node: ast::Block, errors: &mut Vec<SyntaxError>) { pub(crate) fn validate_block_expr(expr: ast::BlockExpr, errors: &mut Vec<SyntaxError>) {
if let Some(parent) = node.syntax().parent() { if let Some(parent) = expr.syntax().parent() {
match parent.kind() { match parent.kind() {
FN_DEF => return, FN_DEF | EXPR_STMT | BLOCK => return,
BLOCK_EXPR => match parent.parent().map(|v| v.kind()) {
Some(EXPR_STMT) | Some(BLOCK) => return,
_ => {}
},
_ => {} _ => {}
} }
} }
errors.extend( if let Some(block) = expr.block() {
node.attrs().map(|attr| SyntaxError::new(InvalidBlockAttr, attr.syntax().text_range())), errors.extend(
) block
.attrs()
.map(|attr| SyntaxError::new(InvalidBlockAttr, attr.syntax().text_range())),
)
}
} }

View file

@ -25,10 +25,11 @@ SOURCE_FILE@[0; 54)
L_PAREN@[25; 26) "(" L_PAREN@[25; 26) "("
R_PAREN@[26; 27) ")" R_PAREN@[26; 27) ")"
WHITESPACE@[27; 28) " " WHITESPACE@[27; 28) " "
BLOCK@[28; 31) BLOCK_EXPR@[28; 31)
L_CURLY@[28; 29) "{" BLOCK@[28; 31)
WHITESPACE@[29; 30) "\n" L_CURLY@[28; 29) "{"
R_CURLY@[30; 31) "}" WHITESPACE@[29; 30) "\n"
R_CURLY@[30; 31) "}"
WHITESPACE@[31; 34) "\n\n\n" WHITESPACE@[31; 34) "\n\n\n"
ATTR@[34; 53) ATTR@[34; 53)
POUND@[34; 35) "#" POUND@[34; 35) "#"

View file

@ -20,9 +20,10 @@ SOURCE_FILE@[0; 31)
PARAM_LIST@[23; 25) PARAM_LIST@[23; 25)
L_PAREN@[23; 24) "(" L_PAREN@[23; 24) "("
R_PAREN@[24; 25) ")" R_PAREN@[24; 25) ")"
BLOCK@[25; 27) BLOCK_EXPR@[25; 27)
L_CURLY@[25; 26) "{" BLOCK@[25; 27)
R_CURLY@[26; 27) "}" L_CURLY@[25; 26) "{"
R_CURLY@[26; 27) "}"
WHITESPACE@[27; 29) "\n\n" WHITESPACE@[27; 29) "\n\n"
ERROR@[29; 30) ERROR@[29; 30)
R_CURLY@[29; 30) "}" R_CURLY@[29; 30) "}"

View file

@ -8,10 +8,11 @@ SOURCE_FILE@[0; 95)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 12) BLOCK_EXPR@[9; 12)
L_CURLY@[9; 10) "{" BLOCK@[9; 12)
WHITESPACE@[10; 11) "\n" L_CURLY@[9; 10) "{"
R_CURLY@[11; 12) "}" WHITESPACE@[10; 11) "\n"
R_CURLY@[11; 12) "}"
WHITESPACE@[12; 14) "\n\n" WHITESPACE@[12; 14) "\n\n"
MACRO_CALL@[14; 19) MACRO_CALL@[14; 19)
PATH@[14; 17) PATH@[14; 17)
@ -32,29 +33,31 @@ SOURCE_FILE@[0; 95)
LITERAL@[29; 33) LITERAL@[29; 33)
TRUE_KW@[29; 33) "true" TRUE_KW@[29; 33) "true"
WHITESPACE@[33; 34) " " WHITESPACE@[33; 34) " "
BLOCK@[34; 51) BLOCK_EXPR@[34; 51)
L_CURLY@[34; 35) "{" BLOCK@[34; 51)
WHITESPACE@[35; 44) "\n " L_CURLY@[34; 35) "{"
LITERAL@[44; 45) WHITESPACE@[35; 44) "\n "
INT_NUMBER@[44; 45) "1" LITERAL@[44; 45)
WHITESPACE@[45; 50) "\n " INT_NUMBER@[44; 45) "1"
R_CURLY@[50; 51) "}" WHITESPACE@[45; 50) "\n "
R_CURLY@[50; 51) "}"
WHITESPACE@[51; 52) " " WHITESPACE@[51; 52) " "
ELSE_KW@[52; 56) "else" ELSE_KW@[52; 56) "else"
WHITESPACE@[56; 57) " " WHITESPACE@[56; 57) " "
BLOCK@[57; 78) BLOCK_EXPR@[57; 78)
L_CURLY@[57; 58) "{" BLOCK@[57; 78)
WHITESPACE@[58; 67) "\n " L_CURLY@[57; 58) "{"
BIN_EXPR@[67; 72) WHITESPACE@[58; 67) "\n "
LITERAL@[67; 68) BIN_EXPR@[67; 72)
INT_NUMBER@[67; 68) "2" LITERAL@[67; 68)
WHITESPACE@[68; 69) " " INT_NUMBER@[67; 68) "2"
PLUS@[69; 70) "+" WHITESPACE@[68; 69) " "
WHITESPACE@[70; 71) " " PLUS@[69; 70) "+"
LITERAL@[71; 72) WHITESPACE@[70; 71) " "
INT_NUMBER@[71; 72) "3" LITERAL@[71; 72)
WHITESPACE@[72; 77) "\n " INT_NUMBER@[71; 72) "3"
R_CURLY@[77; 78) "}" WHITESPACE@[72; 77) "\n "
R_CURLY@[77; 78) "}"
WHITESPACE@[78; 79) "\n" WHITESPACE@[78; 79) "\n"
R_CURLY@[79; 80) "}" R_CURLY@[79; 80) "}"
WHITESPACE@[80; 82) "\n\n" WHITESPACE@[80; 82) "\n\n"
@ -67,10 +70,11 @@ SOURCE_FILE@[0; 95)
L_PAREN@[88; 89) "(" L_PAREN@[88; 89) "("
R_PAREN@[89; 90) ")" R_PAREN@[89; 90) ")"
WHITESPACE@[90; 91) " " WHITESPACE@[90; 91) " "
BLOCK@[91; 94) BLOCK_EXPR@[91; 94)
L_CURLY@[91; 92) "{" BLOCK@[91; 94)
WHITESPACE@[92; 93) "\n" L_CURLY@[91; 92) "{"
R_CURLY@[93; 94) "}" WHITESPACE@[92; 93) "\n"
R_CURLY@[93; 94) "}"
WHITESPACE@[94; 95) "\n" WHITESPACE@[94; 95) "\n"
error 17: expected EXCL error 17: expected EXCL
error 19: expected SEMI error 19: expected SEMI

View file

@ -8,35 +8,36 @@ SOURCE_FILE@[0; 42)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 41) BLOCK_EXPR@[10; 41)
L_CURLY@[10; 11) "{" BLOCK@[10; 41)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
EXPR_STMT@[16; 39) WHITESPACE@[11; 16) "\n "
LAMBDA_EXPR@[16; 38) EXPR_STMT@[16; 39)
PARAM_LIST@[16; 18) LAMBDA_EXPR@[16; 38)
PIPE@[16; 17) "|" PARAM_LIST@[16; 18)
PIPE@[17; 18) "|" PIPE@[16; 17) "|"
WHITESPACE@[18; 19) " " PIPE@[17; 18) "|"
RET_TYPE@[19; 24) WHITESPACE@[18; 19) " "
THIN_ARROW@[19; 21) "->" RET_TYPE@[19; 24)
WHITESPACE@[21; 22) " " THIN_ARROW@[19; 21) "->"
TUPLE_TYPE@[22; 24) WHITESPACE@[21; 22) " "
L_PAREN@[22; 23) "(" TUPLE_TYPE@[22; 24)
R_PAREN@[23; 24) ")" L_PAREN@[22; 23) "("
WHITESPACE@[24; 25) " " R_PAREN@[23; 24) ")"
BLOCK_EXPR@[25; 38) WHITESPACE@[24; 25) " "
UNSAFE_KW@[25; 31) "unsafe" BLOCK_EXPR@[25; 38)
WHITESPACE@[31; 32) " " UNSAFE_KW@[25; 31) "unsafe"
BLOCK@[32; 38) WHITESPACE@[31; 32) " "
L_CURLY@[32; 33) "{" BLOCK@[32; 38)
WHITESPACE@[33; 34) " " L_CURLY@[32; 33) "{"
TUPLE_EXPR@[34; 36) WHITESPACE@[33; 34) " "
L_PAREN@[34; 35) "(" TUPLE_EXPR@[34; 36)
R_PAREN@[35; 36) ")" L_PAREN@[34; 35) "("
WHITESPACE@[36; 37) " " R_PAREN@[35; 36) ")"
R_CURLY@[37; 38) "}" WHITESPACE@[36; 37) " "
SEMI@[38; 39) ";" R_CURLY@[37; 38) "}"
WHITESPACE@[39; 40) "\n" SEMI@[38; 39) ";"
R_CURLY@[40; 41) "}" WHITESPACE@[39; 40) "\n"
R_CURLY@[40; 41) "}"
WHITESPACE@[41; 42) "\n" WHITESPACE@[41; 42) "\n"
error 24: expected `{` error 24: expected `{`

View file

@ -24,8 +24,9 @@ SOURCE_FILE@[0; 23)
NAME_REF@[18; 19) NAME_REF@[18; 19)
IDENT@[18; 19) "T" IDENT@[18; 19) "T"
WHITESPACE@[19; 20) " " WHITESPACE@[19; 20) " "
BLOCK@[20; 22) BLOCK_EXPR@[20; 22)
L_CURLY@[20; 21) "{" BLOCK@[20; 22)
R_CURLY@[21; 22) "}" L_CURLY@[20; 21) "{"
R_CURLY@[21; 22) "}"
WHITESPACE@[22; 23) "\n" WHITESPACE@[22; 23) "\n"
error 19: expected colon error 19: expected colon

View file

@ -8,36 +8,37 @@ SOURCE_FILE@[0; 56)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 55) BLOCK_EXPR@[9; 55)
L_CURLY@[9; 10) "{" BLOCK@[9; 55)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 38) WHITESPACE@[10; 15) "\n "
CALL_EXPR@[15; 38) EXPR_STMT@[15; 38)
PATH_EXPR@[15; 18) CALL_EXPR@[15; 38)
PATH@[15; 18) PATH_EXPR@[15; 18)
PATH_SEGMENT@[15; 18) PATH@[15; 18)
NAME_REF@[15; 18) PATH_SEGMENT@[15; 18)
IDENT@[15; 18) "foo" NAME_REF@[15; 18)
ARG_LIST@[18; 38) IDENT@[15; 18) "foo"
L_PAREN@[18; 19) "(" ARG_LIST@[18; 38)
WHITESPACE@[19; 28) "\n " L_PAREN@[18; 19) "("
LITERAL@[28; 29) WHITESPACE@[19; 28) "\n "
INT_NUMBER@[28; 29) "1" LITERAL@[28; 29)
COMMA@[29; 30) "," INT_NUMBER@[28; 29) "1"
WHITESPACE@[30; 31) " " COMMA@[29; 30) ","
LITERAL@[31; 32) WHITESPACE@[30; 31) " "
INT_NUMBER@[31; 32) "2" LITERAL@[31; 32)
WHITESPACE@[32; 37) "\n " INT_NUMBER@[31; 32) "2"
R_PAREN@[37; 38) ")" WHITESPACE@[32; 37) "\n "
WHITESPACE@[38; 43) "\n " R_PAREN@[37; 38) ")"
EXPR_STMT@[43; 53) WHITESPACE@[38; 43) "\n "
RETURN_EXPR@[43; 52) EXPR_STMT@[43; 53)
RETURN_KW@[43; 49) "return" RETURN_EXPR@[43; 52)
WHITESPACE@[49; 50) " " RETURN_KW@[43; 49) "return"
LITERAL@[50; 52) WHITESPACE@[49; 50) " "
INT_NUMBER@[50; 52) "92" LITERAL@[50; 52)
SEMI@[52; 53) ";" INT_NUMBER@[50; 52) "92"
WHITESPACE@[53; 54) "\n" SEMI@[52; 53) ";"
R_CURLY@[54; 55) "}" WHITESPACE@[53; 54) "\n"
R_CURLY@[54; 55) "}"
WHITESPACE@[55; 56) "\n" WHITESPACE@[55; 56) "\n"
error 38: expected SEMI error 38: expected SEMI

View file

@ -19,28 +19,29 @@ SOURCE_FILE@[0; 47)
IDENT@[12; 15) "i32" IDENT@[12; 15) "i32"
R_PAREN@[15; 16) ")" R_PAREN@[15; 16) ")"
WHITESPACE@[16; 17) " " WHITESPACE@[16; 17) " "
BLOCK@[17; 46) BLOCK_EXPR@[17; 46)
L_CURLY@[17; 18) "{" BLOCK@[17; 46)
WHITESPACE@[18; 23) "\n " L_CURLY@[17; 18) "{"
LET_STMT@[23; 36) WHITESPACE@[18; 23) "\n "
LET_KW@[23; 26) "let" LET_STMT@[23; 36)
WHITESPACE@[26; 27) " " LET_KW@[23; 26) "let"
BIND_PAT@[27; 30) WHITESPACE@[26; 27) " "
NAME@[27; 30) BIND_PAT@[27; 30)
IDENT@[27; 30) "bar" NAME@[27; 30)
WHITESPACE@[30; 31) " " IDENT@[27; 30) "bar"
EQ@[31; 32) "=" WHITESPACE@[30; 31) " "
WHITESPACE@[32; 33) " " EQ@[31; 32) "="
LITERAL@[33; 35) WHITESPACE@[32; 33) " "
INT_NUMBER@[33; 35) "92" LITERAL@[33; 35)
SEMI@[35; 36) ";" INT_NUMBER@[33; 35) "92"
WHITESPACE@[36; 41) "\n " SEMI@[35; 36) ";"
BIN_EXPR@[41; 44) WHITESPACE@[36; 41) "\n "
LITERAL@[41; 42) BIN_EXPR@[41; 44)
INT_NUMBER@[41; 42) "1" LITERAL@[41; 42)
WHITESPACE@[42; 43) " " INT_NUMBER@[41; 42) "1"
PLUS@[43; 44) "+" WHITESPACE@[42; 43) " "
WHITESPACE@[44; 45) "\n" PLUS@[43; 44) "+"
R_CURLY@[45; 46) "}" WHITESPACE@[44; 45) "\n"
R_CURLY@[45; 46) "}"
WHITESPACE@[46; 47) "\n" WHITESPACE@[46; 47) "\n"
error 44: expected expression error 44: expected expression

View file

@ -32,89 +32,90 @@ SOURCE_FILE@[0; 183)
NAME_REF@[39; 46) NAME_REF@[39; 46)
IDENT@[39; 46) "ScopeId" IDENT@[39; 46) "ScopeId"
WHITESPACE@[46; 47) " " WHITESPACE@[46; 47) " "
BLOCK@[47; 161) BLOCK_EXPR@[47; 161)
L_CURLY@[47; 48) "{" BLOCK@[47; 161)
WHITESPACE@[48; 57) "\n " L_CURLY@[47; 48) "{"
LET_STMT@[57; 85) WHITESPACE@[48; 57) "\n "
LET_KW@[57; 60) "let" LET_STMT@[57; 85)
WHITESPACE@[60; 61) " " LET_KW@[57; 60) "let"
BIND_PAT@[61; 64) WHITESPACE@[60; 61) " "
NAME@[61; 64) BIND_PAT@[61; 64)
IDENT@[61; 64) "res" NAME@[61; 64)
WHITESPACE@[64; 65) " " IDENT@[61; 64) "res"
EQ@[65; 66) "=" WHITESPACE@[64; 65) " "
WHITESPACE@[66; 67) " " EQ@[65; 66) "="
METHOD_CALL_EXPR@[67; 84) WHITESPACE@[66; 67) " "
FIELD_EXPR@[67; 78) METHOD_CALL_EXPR@[67; 84)
PATH_EXPR@[67; 71) FIELD_EXPR@[67; 78)
PATH@[67; 71) PATH_EXPR@[67; 71)
PATH_SEGMENT@[67; 71) PATH@[67; 71)
SELF_KW@[67; 71) "self" PATH_SEGMENT@[67; 71)
DOT@[71; 72) "." SELF_KW@[67; 71) "self"
NAME_REF@[72; 78) DOT@[71; 72) "."
IDENT@[72; 78) "scopes" NAME_REF@[72; 78)
DOT@[78; 79) "." IDENT@[72; 78) "scopes"
NAME_REF@[79; 82) DOT@[78; 79) "."
IDENT@[79; 82) "len" NAME_REF@[79; 82)
ARG_LIST@[82; 84) IDENT@[79; 82) "len"
L_PAREN@[82; 83) "(" ARG_LIST@[82; 84)
R_PAREN@[83; 84) ")" L_PAREN@[82; 83) "("
SEMI@[84; 85) ";" R_PAREN@[83; 84) ")"
WHITESPACE@[85; 94) "\n " SEMI@[84; 85) ";"
METHOD_CALL_EXPR@[94; 155) WHITESPACE@[85; 94) "\n "
FIELD_EXPR@[94; 105) METHOD_CALL_EXPR@[94; 155)
PATH_EXPR@[94; 98) FIELD_EXPR@[94; 105)
PATH@[94; 98) PATH_EXPR@[94; 98)
PATH_SEGMENT@[94; 98) PATH@[94; 98)
SELF_KW@[94; 98) "self" PATH_SEGMENT@[94; 98)
DOT@[98; 99) "." SELF_KW@[94; 98) "self"
NAME_REF@[99; 105) DOT@[98; 99) "."
IDENT@[99; 105) "scopes" NAME_REF@[99; 105)
DOT@[105; 106) "." IDENT@[99; 105) "scopes"
NAME_REF@[106; 110) DOT@[105; 106) "."
IDENT@[106; 110) "push" NAME_REF@[106; 110)
ARG_LIST@[110; 155) IDENT@[106; 110) "push"
L_PAREN@[110; 111) "(" ARG_LIST@[110; 155)
RECORD_LIT@[111; 154) L_PAREN@[110; 111) "("
PATH@[111; 120) RECORD_LIT@[111; 154)
PATH_SEGMENT@[111; 120) PATH@[111; 120)
NAME_REF@[111; 120) PATH_SEGMENT@[111; 120)
IDENT@[111; 120) "ScopeData" NAME_REF@[111; 120)
WHITESPACE@[120; 121) " " IDENT@[111; 120) "ScopeData"
RECORD_FIELD_LIST@[121; 154) WHITESPACE@[120; 121) " "
L_CURLY@[121; 122) "{" RECORD_FIELD_LIST@[121; 154)
WHITESPACE@[122; 123) " " L_CURLY@[121; 122) "{"
RECORD_FIELD@[123; 135) WHITESPACE@[122; 123) " "
NAME_REF@[123; 129) RECORD_FIELD@[123; 135)
IDENT@[123; 129) "parent" NAME_REF@[123; 129)
COLON@[129; 130) ":" IDENT@[123; 129) "parent"
WHITESPACE@[130; 131) " " COLON@[129; 130) ":"
PATH_EXPR@[131; 135) WHITESPACE@[130; 131) " "
PATH@[131; 135) PATH_EXPR@[131; 135)
PATH_SEGMENT@[131; 135) PATH@[131; 135)
NAME_REF@[131; 135) PATH_SEGMENT@[131; 135)
IDENT@[131; 135) "None" NAME_REF@[131; 135)
COMMA@[135; 136) "," IDENT@[131; 135) "None"
WHITESPACE@[136; 137) " " COMMA@[135; 136) ","
RECORD_FIELD@[137; 152) WHITESPACE@[136; 137) " "
NAME_REF@[137; 144) RECORD_FIELD@[137; 152)
IDENT@[137; 144) "entries" NAME_REF@[137; 144)
COLON@[144; 145) ":" IDENT@[137; 144) "entries"
WHITESPACE@[145; 146) " " COLON@[144; 145) ":"
MACRO_CALL@[146; 152) WHITESPACE@[145; 146) " "
PATH@[146; 149) MACRO_CALL@[146; 152)
PATH_SEGMENT@[146; 149) PATH@[146; 149)
NAME_REF@[146; 149) PATH_SEGMENT@[146; 149)
IDENT@[146; 149) "vec" NAME_REF@[146; 149)
EXCL@[149; 150) "!" IDENT@[146; 149) "vec"
TOKEN_TREE@[150; 152) EXCL@[149; 150) "!"
L_BRACK@[150; 151) "[" TOKEN_TREE@[150; 152)
R_BRACK@[151; 152) "]" L_BRACK@[150; 151) "["
WHITESPACE@[152; 153) " " R_BRACK@[151; 152) "]"
R_CURLY@[153; 154) "}" WHITESPACE@[152; 153) " "
R_PAREN@[154; 155) ")" R_CURLY@[153; 154) "}"
WHITESPACE@[155; 160) "\n " R_PAREN@[154; 155) ")"
R_CURLY@[160; 161) "}" WHITESPACE@[155; 160) "\n "
R_CURLY@[160; 161) "}"
WHITESPACE@[161; 167) "\n\n " WHITESPACE@[161; 167) "\n\n "
FN_DEF@[167; 180) FN_DEF@[167; 180)
FN_KW@[167; 169) "fn" FN_KW@[167; 169) "fn"

View file

@ -8,88 +8,92 @@ SOURCE_FILE@[0; 139)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 138) BLOCK_EXPR@[9; 138)
L_CURLY@[9; 10) "{" BLOCK@[9; 138)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 24) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 24)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
BIND_PAT@[19; 22) WHITESPACE@[18; 19) " "
NAME@[19; 22) BIND_PAT@[19; 22)
IDENT@[19; 22) "foo" NAME@[19; 22)
WHITESPACE@[22; 23) " " IDENT@[19; 22) "foo"
EQ@[23; 24) "=" WHITESPACE@[22; 23) " "
WHITESPACE@[24; 29) "\n " EQ@[23; 24) "="
LET_STMT@[29; 41) WHITESPACE@[24; 29) "\n "
LET_KW@[29; 32) "let" LET_STMT@[29; 41)
WHITESPACE@[32; 33) " " LET_KW@[29; 32) "let"
BIND_PAT@[33; 36) WHITESPACE@[32; 33) " "
NAME@[33; 36) BIND_PAT@[33; 36)
IDENT@[33; 36) "bar" NAME@[33; 36)
WHITESPACE@[36; 37) " " IDENT@[33; 36) "bar"
EQ@[37; 38) "=" WHITESPACE@[36; 37) " "
WHITESPACE@[38; 39) " " EQ@[37; 38) "="
LITERAL@[39; 40) WHITESPACE@[38; 39) " "
INT_NUMBER@[39; 40) "1" LITERAL@[39; 40)
SEMI@[40; 41) ";" INT_NUMBER@[39; 40) "1"
WHITESPACE@[41; 46) "\n " SEMI@[40; 41) ";"
LET_STMT@[46; 49) WHITESPACE@[41; 46) "\n "
LET_KW@[46; 49) "let" LET_STMT@[46; 49)
WHITESPACE@[49; 54) "\n " LET_KW@[46; 49) "let"
LET_STMT@[54; 67) WHITESPACE@[49; 54) "\n "
LET_KW@[54; 57) "let" LET_STMT@[54; 67)
WHITESPACE@[57; 58) " " LET_KW@[54; 57) "let"
BIND_PAT@[58; 61) WHITESPACE@[57; 58) " "
NAME@[58; 61) BIND_PAT@[58; 61)
IDENT@[58; 61) "baz" NAME@[58; 61)
WHITESPACE@[61; 62) " " IDENT@[58; 61) "baz"
EQ@[62; 63) "=" WHITESPACE@[61; 62) " "
WHITESPACE@[63; 64) " " EQ@[62; 63) "="
LITERAL@[64; 66) WHITESPACE@[63; 64) " "
INT_NUMBER@[64; 66) "92" LITERAL@[64; 66)
SEMI@[66; 67) ";" INT_NUMBER@[64; 66) "92"
WHITESPACE@[67; 72) "\n " SEMI@[66; 67) ";"
LET_STMT@[72; 75) WHITESPACE@[67; 72) "\n "
LET_KW@[72; 75) "let" LET_STMT@[72; 75)
WHITESPACE@[75; 80) "\n " LET_KW@[72; 75) "let"
EXPR_STMT@[80; 90) WHITESPACE@[75; 80) "\n "
IF_EXPR@[80; 90) EXPR_STMT@[80; 90)
IF_KW@[80; 82) "if" IF_EXPR@[80; 90)
WHITESPACE@[82; 83) " " IF_KW@[80; 82) "if"
CONDITION@[83; 87) WHITESPACE@[82; 83) " "
LITERAL@[83; 87) CONDITION@[83; 87)
TRUE_KW@[83; 87) "true" LITERAL@[83; 87)
WHITESPACE@[87; 88) " " TRUE_KW@[83; 87) "true"
BLOCK@[88; 90) WHITESPACE@[87; 88) " "
L_CURLY@[88; 89) "{" BLOCK_EXPR@[88; 90)
R_CURLY@[89; 90) "}" BLOCK@[88; 90)
WHITESPACE@[90; 95) "\n " L_CURLY@[88; 89) "{"
LET_STMT@[95; 98) R_CURLY@[89; 90) "}"
LET_KW@[95; 98) "let" WHITESPACE@[90; 95) "\n "
WHITESPACE@[98; 103) "\n " LET_STMT@[95; 98)
EXPR_STMT@[103; 116) LET_KW@[95; 98) "let"
WHILE_EXPR@[103; 116) WHITESPACE@[98; 103) "\n "
WHILE_KW@[103; 108) "while" EXPR_STMT@[103; 116)
WHITESPACE@[108; 109) " " WHILE_EXPR@[103; 116)
CONDITION@[109; 113) WHILE_KW@[103; 108) "while"
LITERAL@[109; 113) WHITESPACE@[108; 109) " "
TRUE_KW@[109; 113) "true" CONDITION@[109; 113)
WHITESPACE@[113; 114) " " LITERAL@[109; 113)
BLOCK@[114; 116) TRUE_KW@[109; 113) "true"
L_CURLY@[114; 115) "{" WHITESPACE@[113; 114) " "
R_CURLY@[115; 116) "}" BLOCK_EXPR@[114; 116)
WHITESPACE@[116; 121) "\n " BLOCK@[114; 116)
LET_STMT@[121; 124) L_CURLY@[114; 115) "{"
LET_KW@[121; 124) "let" R_CURLY@[115; 116) "}"
WHITESPACE@[124; 129) "\n " WHITESPACE@[116; 121) "\n "
LOOP_EXPR@[129; 136) LET_STMT@[121; 124)
LOOP_KW@[129; 133) "loop" LET_KW@[121; 124) "let"
WHITESPACE@[133; 134) " " WHITESPACE@[124; 129) "\n "
BLOCK@[134; 136) LOOP_EXPR@[129; 136)
L_CURLY@[134; 135) "{" LOOP_KW@[129; 133) "loop"
R_CURLY@[135; 136) "}" WHITESPACE@[133; 134) " "
WHITESPACE@[136; 137) "\n" BLOCK_EXPR@[134; 136)
R_CURLY@[137; 138) "}" BLOCK@[134; 136)
L_CURLY@[134; 135) "{"
R_CURLY@[135; 136) "}"
WHITESPACE@[136; 137) "\n"
R_CURLY@[137; 138) "}"
WHITESPACE@[138; 139) "\n" WHITESPACE@[138; 139) "\n"
error 24: expected expression error 24: expected expression
error 24: expected SEMI error 24: expected SEMI

View file

@ -11,9 +11,10 @@ SOURCE_FILE@[0; 16)
L_PAREN@[10; 11) "(" L_PAREN@[10; 11) "("
R_PAREN@[11; 12) ")" R_PAREN@[11; 12) ")"
WHITESPACE@[12; 13) " " WHITESPACE@[12; 13) " "
BLOCK@[13; 15) BLOCK_EXPR@[13; 15)
L_CURLY@[13; 14) "{" BLOCK@[13; 15)
R_CURLY@[14; 15) "}" L_CURLY@[13; 14) "{"
R_CURLY@[14; 15) "}"
WHITESPACE@[15; 16) "\n" WHITESPACE@[15; 16) "\n"
error 2: expected a name error 2: expected a name
error 2: expected function arguments error 2: expected function arguments

View file

@ -25,10 +25,11 @@ SOURCE_FILE@[0; 22)
IDENT@[15; 16) "y" IDENT@[15; 16) "y"
R_PAREN@[16; 17) ")" R_PAREN@[16; 17) ")"
WHITESPACE@[17; 18) " " WHITESPACE@[17; 18) " "
BLOCK@[18; 21) BLOCK_EXPR@[18; 21)
L_CURLY@[18; 19) "{" BLOCK@[18; 21)
WHITESPACE@[19; 20) "\n" L_CURLY@[18; 19) "{"
R_CURLY@[20; 21) "}" WHITESPACE@[19; 20) "\n"
R_CURLY@[20; 21) "}"
WHITESPACE@[21; 22) "\n" WHITESPACE@[21; 22) "\n"
error 16: expected COLON error 16: expected COLON
error 16: expected type error 16: expected type

View file

@ -8,38 +8,39 @@ SOURCE_FILE@[0; 112)
L_PAREN@[4; 5) "(" L_PAREN@[4; 5) "("
R_PAREN@[5; 6) ")" R_PAREN@[5; 6) ")"
WHITESPACE@[6; 7) " " WHITESPACE@[6; 7) " "
BLOCK@[7; 33) BLOCK_EXPR@[7; 33)
L_CURLY@[7; 8) "{" BLOCK@[7; 33)
WHITESPACE@[8; 9) " " L_CURLY@[7; 8) "{"
EXPR_STMT@[9; 15) WHITESPACE@[8; 9) " "
ARRAY_EXPR@[9; 15) EXPR_STMT@[9; 15)
L_BRACK@[9; 10) "[" ARRAY_EXPR@[9; 15)
LITERAL@[10; 11) L_BRACK@[9; 10) "["
INT_NUMBER@[10; 11) "1" LITERAL@[10; 11)
COMMA@[11; 12) "," INT_NUMBER@[10; 11) "1"
WHITESPACE@[12; 13) " " COMMA@[11; 12) ","
LITERAL@[13; 14) WHITESPACE@[12; 13) " "
INT_NUMBER@[13; 14) "2" LITERAL@[13; 14)
COMMA@[14; 15) "," INT_NUMBER@[13; 14) "2"
WHITESPACE@[15; 16) " " COMMA@[14; 15) ","
EXPR_STMT@[16; 17) WHITESPACE@[15; 16) " "
ERROR@[16; 17) EXPR_STMT@[16; 17)
AT@[16; 17) "@" ERROR@[16; 17)
EXPR_STMT@[17; 18) AT@[16; 17) "@"
ERROR@[17; 18) EXPR_STMT@[17; 18)
COMMA@[17; 18) "," ERROR@[17; 18)
WHITESPACE@[18; 19) " " COMMA@[17; 18) ","
STRUCT_DEF@[19; 26) WHITESPACE@[18; 19) " "
STRUCT_KW@[19; 25) "struct" STRUCT_DEF@[19; 26)
ERROR@[25; 26) STRUCT_KW@[19; 25) "struct"
COMMA@[25; 26) "," ERROR@[25; 26)
WHITESPACE@[26; 27) " " COMMA@[25; 26) ","
LET_STMT@[27; 31) WHITESPACE@[26; 27) " "
LET_KW@[27; 30) "let" LET_STMT@[27; 31)
ERROR@[30; 31) LET_KW@[27; 30) "let"
R_BRACK@[30; 31) "]" ERROR@[30; 31)
WHITESPACE@[31; 32) " " R_BRACK@[30; 31) "]"
R_CURLY@[32; 33) "}" WHITESPACE@[31; 32) " "
R_CURLY@[32; 33) "}"
WHITESPACE@[33; 34) "\n" WHITESPACE@[33; 34) "\n"
FN_DEF@[34; 68) FN_DEF@[34; 68)
FN_KW@[34; 36) "fn" FN_KW@[34; 36) "fn"
@ -50,45 +51,46 @@ SOURCE_FILE@[0; 112)
L_PAREN@[38; 39) "(" L_PAREN@[38; 39) "("
R_PAREN@[39; 40) ")" R_PAREN@[39; 40) ")"
WHITESPACE@[40; 41) " " WHITESPACE@[40; 41) " "
BLOCK@[41; 68) BLOCK_EXPR@[41; 68)
L_CURLY@[41; 42) "{" BLOCK@[41; 68)
WHITESPACE@[42; 43) " " L_CURLY@[41; 42) "{"
EXPR_STMT@[43; 52) WHITESPACE@[42; 43) " "
CALL_EXPR@[43; 52) EXPR_STMT@[43; 52)
PATH_EXPR@[43; 46) CALL_EXPR@[43; 52)
PATH@[43; 46) PATH_EXPR@[43; 46)
PATH_SEGMENT@[43; 46) PATH@[43; 46)
NAME_REF@[43; 46) PATH_SEGMENT@[43; 46)
IDENT@[43; 46) "foo" NAME_REF@[43; 46)
ARG_LIST@[46; 52) IDENT@[43; 46) "foo"
L_PAREN@[46; 47) "(" ARG_LIST@[46; 52)
LITERAL@[47; 48) L_PAREN@[46; 47) "("
INT_NUMBER@[47; 48) "1" LITERAL@[47; 48)
COMMA@[48; 49) "," INT_NUMBER@[47; 48) "1"
WHITESPACE@[49; 50) " " COMMA@[48; 49) ","
LITERAL@[50; 51) WHITESPACE@[49; 50) " "
INT_NUMBER@[50; 51) "2" LITERAL@[50; 51)
COMMA@[51; 52) "," INT_NUMBER@[50; 51) "2"
WHITESPACE@[52; 53) " " COMMA@[51; 52) ","
EXPR_STMT@[53; 54) WHITESPACE@[52; 53) " "
ERROR@[53; 54) EXPR_STMT@[53; 54)
AT@[53; 54) "@" ERROR@[53; 54)
EXPR_STMT@[54; 55) AT@[53; 54) "@"
ERROR@[54; 55) EXPR_STMT@[54; 55)
COMMA@[54; 55) "," ERROR@[54; 55)
WHITESPACE@[55; 56) " " COMMA@[54; 55) ","
IMPL_BLOCK@[56; 60) WHITESPACE@[55; 56) " "
IMPL_KW@[56; 60) "impl" IMPL_BLOCK@[56; 60)
EXPR_STMT@[60; 61) IMPL_KW@[56; 60) "impl"
ERROR@[60; 61) EXPR_STMT@[60; 61)
COMMA@[60; 61) "," ERROR@[60; 61)
WHITESPACE@[61; 62) " " COMMA@[60; 61) ","
LET_STMT@[62; 65) WHITESPACE@[61; 62) " "
LET_KW@[62; 65) "let" LET_STMT@[62; 65)
ERROR@[65; 66) LET_KW@[62; 65) "let"
R_PAREN@[65; 66) ")" ERROR@[65; 66)
WHITESPACE@[66; 67) " " R_PAREN@[65; 66) ")"
R_CURLY@[67; 68) "}" WHITESPACE@[66; 67) " "
R_CURLY@[67; 68) "}"
WHITESPACE@[68; 69) "\n" WHITESPACE@[68; 69) "\n"
FN_DEF@[69; 111) FN_DEF@[69; 111)
FN_KW@[69; 71) "fn" FN_KW@[69; 71) "fn"
@ -99,54 +101,55 @@ SOURCE_FILE@[0; 112)
L_PAREN@[73; 74) "(" L_PAREN@[73; 74) "("
R_PAREN@[74; 75) ")" R_PAREN@[74; 75) ")"
WHITESPACE@[75; 76) " " WHITESPACE@[75; 76) " "
BLOCK@[76; 111) BLOCK_EXPR@[76; 111)
L_CURLY@[76; 77) "{" BLOCK@[76; 111)
WHITESPACE@[77; 78) " " L_CURLY@[76; 77) "{"
EXPR_STMT@[78; 91) WHITESPACE@[77; 78) " "
METHOD_CALL_EXPR@[78; 91) EXPR_STMT@[78; 91)
PATH_EXPR@[78; 81) METHOD_CALL_EXPR@[78; 91)
PATH@[78; 81) PATH_EXPR@[78; 81)
PATH_SEGMENT@[78; 81) PATH@[78; 81)
NAME_REF@[78; 81) PATH_SEGMENT@[78; 81)
IDENT@[78; 81) "foo" NAME_REF@[78; 81)
DOT@[81; 82) "." IDENT@[78; 81) "foo"
NAME_REF@[82; 85) DOT@[81; 82) "."
IDENT@[82; 85) "bar" NAME_REF@[82; 85)
ARG_LIST@[85; 91) IDENT@[82; 85) "bar"
L_PAREN@[85; 86) "(" ARG_LIST@[85; 91)
LITERAL@[86; 87) L_PAREN@[85; 86) "("
INT_NUMBER@[86; 87) "1" LITERAL@[86; 87)
COMMA@[87; 88) "," INT_NUMBER@[86; 87) "1"
WHITESPACE@[88; 89) " " COMMA@[87; 88) ","
LITERAL@[89; 90) WHITESPACE@[88; 89) " "
INT_NUMBER@[89; 90) "2" LITERAL@[89; 90)
COMMA@[90; 91) "," INT_NUMBER@[89; 90) "2"
WHITESPACE@[91; 92) " " COMMA@[90; 91) ","
EXPR_STMT@[92; 93) WHITESPACE@[91; 92) " "
ERROR@[92; 93) EXPR_STMT@[92; 93)
AT@[92; 93) "@" ERROR@[92; 93)
EXPR_STMT@[93; 94) AT@[92; 93) "@"
ERROR@[93; 94) EXPR_STMT@[93; 94)
COMMA@[93; 94) "," ERROR@[93; 94)
WHITESPACE@[94; 95) " " COMMA@[93; 94) ","
EXPR_STMT@[95; 96) WHITESPACE@[94; 95) " "
ERROR@[95; 96) EXPR_STMT@[95; 96)
R_BRACK@[95; 96) "]" ERROR@[95; 96)
EXPR_STMT@[96; 97) R_BRACK@[95; 96) "]"
ERROR@[96; 97) EXPR_STMT@[96; 97)
COMMA@[96; 97) "," ERROR@[96; 97)
WHITESPACE@[97; 98) " " COMMA@[96; 97) ","
TRAIT_DEF@[98; 104) WHITESPACE@[97; 98) " "
TRAIT_KW@[98; 103) "trait" TRAIT_DEF@[98; 104)
ERROR@[103; 104) TRAIT_KW@[98; 103) "trait"
COMMA@[103; 104) "," ERROR@[103; 104)
WHITESPACE@[104; 105) " " COMMA@[103; 104) ","
LET_STMT@[105; 108) WHITESPACE@[104; 105) " "
LET_KW@[105; 108) "let" LET_STMT@[105; 108)
ERROR@[108; 109) LET_KW@[105; 108) "let"
R_PAREN@[108; 109) ")" ERROR@[108; 109)
WHITESPACE@[109; 110) " " R_PAREN@[108; 109) ")"
R_CURLY@[110; 111) "}" WHITESPACE@[109; 110) " "
R_CURLY@[110; 111) "}"
WHITESPACE@[111; 112) "\n" WHITESPACE@[111; 112) "\n"
error 15: expected expression error 15: expected expression
error 15: expected R_BRACK error 15: expected R_BRACK

View file

@ -8,31 +8,32 @@ SOURCE_FILE@[0; 94)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 55) BLOCK_EXPR@[10; 55)
L_CURLY@[10; 11) "{" BLOCK@[10; 55)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
MACRO_CALL@[16; 49) WHITESPACE@[11; 16) "\n "
PATH@[16; 19) MACRO_CALL@[16; 49)
PATH_SEGMENT@[16; 19) PATH@[16; 19)
NAME_REF@[16; 19) PATH_SEGMENT@[16; 19)
IDENT@[16; 19) "foo" NAME_REF@[16; 19)
EXCL@[19; 20) "!" IDENT@[16; 19) "foo"
WHITESPACE@[20; 21) " " EXCL@[19; 20) "!"
TOKEN_TREE@[21; 49) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TOKEN_TREE@[21; 49)
WHITESPACE@[22; 31) "\n " L_PAREN@[21; 22) "("
IDENT@[31; 34) "bar" WHITESPACE@[22; 31) "\n "
COMMA@[34; 35) "," IDENT@[31; 34) "bar"
WHITESPACE@[35; 36) " " COMMA@[34; 35) ","
STRING@[36; 41) "\"baz\"" WHITESPACE@[35; 36) " "
COMMA@[41; 42) "," STRING@[36; 41) "\"baz\""
WHITESPACE@[42; 43) " " COMMA@[41; 42) ","
INT_NUMBER@[43; 44) "1" WHITESPACE@[42; 43) " "
COMMA@[44; 45) "," INT_NUMBER@[43; 44) "1"
WHITESPACE@[45; 46) " " COMMA@[44; 45) ","
FLOAT_NUMBER@[46; 49) "2.0" WHITESPACE@[45; 46) " "
WHITESPACE@[49; 54) "\n " FLOAT_NUMBER@[46; 49) "2.0"
R_CURLY@[54; 55) "}" WHITESPACE@[49; 54) "\n "
R_CURLY@[54; 55) "}"
WHITESPACE@[55; 56) " " WHITESPACE@[55; 56) " "
COMMENT@[56; 91) "//~ ERROR incorrect c ..." COMMENT@[56; 91) "//~ ERROR incorrect c ..."
WHITESPACE@[91; 92) "\n" WHITESPACE@[91; 92) "\n"

View file

@ -61,9 +61,10 @@ SOURCE_FILE@[0; 240)
L_PAREN@[48; 49) "(" L_PAREN@[48; 49) "("
R_PAREN@[49; 50) ")" R_PAREN@[49; 50) ")"
WHITESPACE@[50; 51) " " WHITESPACE@[50; 51) " "
BLOCK@[51; 53) BLOCK_EXPR@[51; 53)
L_CURLY@[51; 52) "{" BLOCK@[51; 53)
R_CURLY@[52; 53) "}" L_CURLY@[51; 52) "{"
R_CURLY@[52; 53) "}"
WHITESPACE@[53; 55) "\n\n" WHITESPACE@[53; 55) "\n\n"
FN_DEF@[55; 239) FN_DEF@[55; 239)
FN_KW@[55; 57) "fn" FN_KW@[55; 57) "fn"
@ -74,222 +75,223 @@ SOURCE_FILE@[0; 240)
L_PAREN@[62; 63) "(" L_PAREN@[62; 63) "("
R_PAREN@[63; 64) ")" R_PAREN@[63; 64) ")"
WHITESPACE@[64; 65) " " WHITESPACE@[64; 65) " "
BLOCK@[65; 239) BLOCK_EXPR@[65; 239)
L_CURLY@[65; 66) "{" BLOCK@[65; 239)
WHITESPACE@[66; 71) "\n " L_CURLY@[65; 66) "{"
LET_STMT@[71; 121) WHITESPACE@[66; 71) "\n "
LET_KW@[71; 74) "let" LET_STMT@[71; 121)
WHITESPACE@[74; 75) " " LET_KW@[71; 74) "let"
PLACEHOLDER_PAT@[75; 76) WHITESPACE@[74; 75) " "
UNDERSCORE@[75; 76) "_" PLACEHOLDER_PAT@[75; 76)
COLON@[76; 77) ":" UNDERSCORE@[75; 76) "_"
WHITESPACE@[77; 78) " " COLON@[76; 77) ":"
DYN_TRAIT_TYPE@[78; 121) WHITESPACE@[77; 78) " "
TYPE_BOUND_LIST@[78; 121) DYN_TRAIT_TYPE@[78; 121)
TYPE_BOUND@[78; 88) TYPE_BOUND_LIST@[78; 121)
PATH_TYPE@[78; 88) TYPE_BOUND@[78; 88)
PATH@[78; 88) PATH_TYPE@[78; 88)
PATH_SEGMENT@[78; 88) PATH@[78; 88)
NAME_REF@[78; 81) PATH_SEGMENT@[78; 88)
IDENT@[78; 81) "Box" NAME_REF@[78; 81)
TYPE_ARG_LIST@[81; 88) IDENT@[78; 81) "Box"
L_ANGLE@[81; 82) "<" TYPE_ARG_LIST@[81; 88)
TYPE_ARG@[82; 88) L_ANGLE@[81; 82) "<"
PAREN_TYPE@[82; 88) TYPE_ARG@[82; 88)
L_PAREN@[82; 83) "(" PAREN_TYPE@[82; 88)
PATH_TYPE@[83; 87) L_PAREN@[82; 83) "("
PATH@[83; 87) PATH_TYPE@[83; 87)
PATH_SEGMENT@[83; 87) PATH@[83; 87)
NAME_REF@[83; 87) PATH_SEGMENT@[83; 87)
IDENT@[83; 87) "Copy" NAME_REF@[83; 87)
R_PAREN@[87; 88) ")" IDENT@[83; 87) "Copy"
WHITESPACE@[88; 89) " " R_PAREN@[87; 88) ")"
PLUS@[89; 90) "+" WHITESPACE@[88; 89) " "
WHITESPACE@[90; 91) " " PLUS@[89; 90) "+"
TYPE_BOUND@[91; 99) WHITESPACE@[90; 91) " "
L_PAREN@[91; 92) "(" TYPE_BOUND@[91; 99)
QUESTION@[92; 93) "?" L_PAREN@[91; 92) "("
PATH_TYPE@[93; 98) QUESTION@[92; 93) "?"
PATH@[93; 98) PATH_TYPE@[93; 98)
PATH_SEGMENT@[93; 98) PATH@[93; 98)
NAME_REF@[93; 98) PATH_SEGMENT@[93; 98)
IDENT@[93; 98) "Sized" NAME_REF@[93; 98)
R_PAREN@[98; 99) ")" IDENT@[93; 98) "Sized"
WHITESPACE@[99; 100) " " R_PAREN@[98; 99) ")"
PLUS@[100; 101) "+" WHITESPACE@[99; 100) " "
WHITESPACE@[101; 102) " " PLUS@[100; 101) "+"
TYPE_BOUND@[102; 121) WHITESPACE@[101; 102) " "
L_PAREN@[102; 103) "(" TYPE_BOUND@[102; 121)
FOR_TYPE@[103; 120) L_PAREN@[102; 103) "("
FOR_KW@[103; 106) "for" FOR_TYPE@[103; 120)
TYPE_PARAM_LIST@[106; 110) FOR_KW@[103; 106) "for"
L_ANGLE@[106; 107) "<" TYPE_PARAM_LIST@[106; 110)
LIFETIME_PARAM@[107; 109) L_ANGLE@[106; 107) "<"
LIFETIME@[107; 109) "\'a" LIFETIME_PARAM@[107; 109)
R_ANGLE@[109; 110) ">" LIFETIME@[107; 109) "\'a"
WHITESPACE@[110; 111) " " R_ANGLE@[109; 110) ">"
PATH_TYPE@[111; 120) WHITESPACE@[110; 111) " "
PATH@[111; 120) PATH_TYPE@[111; 120)
PATH_SEGMENT@[111; 120) PATH@[111; 120)
NAME_REF@[111; 116) PATH_SEGMENT@[111; 120)
IDENT@[111; 116) "Trait" NAME_REF@[111; 116)
TYPE_ARG_LIST@[116; 120) IDENT@[111; 116) "Trait"
L_ANGLE@[116; 117) "<" TYPE_ARG_LIST@[116; 120)
LIFETIME_ARG@[117; 119) L_ANGLE@[116; 117) "<"
LIFETIME@[117; 119) "\'a" LIFETIME_ARG@[117; 119)
R_ANGLE@[119; 120) ">" LIFETIME@[117; 119) "\'a"
R_PAREN@[120; 121) ")" R_ANGLE@[119; 120) ">"
EXPR_STMT@[121; 123) R_PAREN@[120; 121) ")"
ERROR@[121; 122) EXPR_STMT@[121; 123)
R_ANGLE@[121; 122) ">" ERROR@[121; 122)
SEMI@[122; 123) ";" R_ANGLE@[121; 122) ">"
WHITESPACE@[123; 128) "\n " SEMI@[122; 123) ";"
LET_STMT@[128; 141) WHITESPACE@[123; 128) "\n "
LET_KW@[128; 131) "let" LET_STMT@[128; 141)
WHITESPACE@[131; 132) " " LET_KW@[128; 131) "let"
PLACEHOLDER_PAT@[132; 133) WHITESPACE@[131; 132) " "
UNDERSCORE@[132; 133) "_" PLACEHOLDER_PAT@[132; 133)
COLON@[133; 134) ":" UNDERSCORE@[132; 133) "_"
WHITESPACE@[134; 135) " " COLON@[133; 134) ":"
PATH_TYPE@[135; 141) WHITESPACE@[134; 135) " "
PATH@[135; 141) PATH_TYPE@[135; 141)
PATH_SEGMENT@[135; 141) PATH@[135; 141)
NAME_REF@[135; 138) PATH_SEGMENT@[135; 141)
IDENT@[135; 138) "Box" NAME_REF@[135; 138)
TYPE_ARG_LIST@[138; 141) IDENT@[135; 138) "Box"
L_ANGLE@[138; 139) "<" TYPE_ARG_LIST@[138; 141)
TYPE_ARG@[139; 141) L_ANGLE@[138; 139) "<"
PAREN_TYPE@[139; 141) TYPE_ARG@[139; 141)
L_PAREN@[139; 140) "(" PAREN_TYPE@[139; 141)
ERROR@[140; 141) L_PAREN@[139; 140) "("
QUESTION@[140; 141) "?" ERROR@[140; 141)
EXPR_STMT@[141; 146) QUESTION@[140; 141) "?"
PATH_EXPR@[141; 146) EXPR_STMT@[141; 146)
PATH@[141; 146) PATH_EXPR@[141; 146)
PATH_SEGMENT@[141; 146) PATH@[141; 146)
NAME_REF@[141; 146) PATH_SEGMENT@[141; 146)
IDENT@[141; 146) "Sized" NAME_REF@[141; 146)
EXPR_STMT@[146; 147) IDENT@[141; 146) "Sized"
ERROR@[146; 147) EXPR_STMT@[146; 147)
R_PAREN@[146; 147) ")" ERROR@[146; 147)
WHITESPACE@[147; 148) " " R_PAREN@[146; 147) ")"
EXPR_STMT@[148; 149) WHITESPACE@[147; 148) " "
ERROR@[148; 149) EXPR_STMT@[148; 149)
PLUS@[148; 149) "+" ERROR@[148; 149)
WHITESPACE@[149; 150) " " PLUS@[148; 149) "+"
EXPR_STMT@[150; 151) WHITESPACE@[149; 150) " "
PAREN_EXPR@[150; 151) EXPR_STMT@[150; 151)
L_PAREN@[150; 151) "(" PAREN_EXPR@[150; 151)
EXPR_STMT@[151; 157) L_PAREN@[150; 151) "("
FOR_EXPR@[151; 157) EXPR_STMT@[151; 157)
FOR_KW@[151; 154) "for" FOR_EXPR@[151; 157)
ERROR@[154; 155) FOR_KW@[151; 154) "for"
L_ANGLE@[154; 155) "<" ERROR@[154; 155)
ERROR@[155; 157) L_ANGLE@[154; 155) "<"
LIFETIME@[155; 157) "\'a" ERROR@[155; 157)
EXPR_STMT@[157; 158) LIFETIME@[155; 157) "\'a"
ERROR@[157; 158) EXPR_STMT@[157; 158)
R_ANGLE@[157; 158) ">" ERROR@[157; 158)
WHITESPACE@[158; 159) " " R_ANGLE@[157; 158) ">"
EXPR_STMT@[159; 180) WHITESPACE@[158; 159) " "
BIN_EXPR@[159; 180) EXPR_STMT@[159; 180)
BIN_EXPR@[159; 178) BIN_EXPR@[159; 180)
BIN_EXPR@[159; 169) BIN_EXPR@[159; 178)
BIN_EXPR@[159; 167) BIN_EXPR@[159; 169)
PATH_EXPR@[159; 164) BIN_EXPR@[159; 167)
PATH@[159; 164) PATH_EXPR@[159; 164)
PATH_SEGMENT@[159; 164) PATH@[159; 164)
NAME_REF@[159; 164) PATH_SEGMENT@[159; 164)
IDENT@[159; 164) "Trait" NAME_REF@[159; 164)
L_ANGLE@[164; 165) "<" IDENT@[159; 164) "Trait"
ERROR@[165; 167) L_ANGLE@[164; 165) "<"
LIFETIME@[165; 167) "\'a" ERROR@[165; 167)
R_ANGLE@[167; 168) ">" LIFETIME@[165; 167) "\'a"
ERROR@[168; 169) R_ANGLE@[167; 168) ">"
R_PAREN@[168; 169) ")" ERROR@[168; 169)
WHITESPACE@[169; 170) " " R_PAREN@[168; 169) ")"
PLUS@[170; 171) "+" WHITESPACE@[169; 170) " "
WHITESPACE@[171; 172) " " PLUS@[170; 171) "+"
PAREN_EXPR@[172; 178) WHITESPACE@[171; 172) " "
L_PAREN@[172; 173) "(" PAREN_EXPR@[172; 178)
PATH_EXPR@[173; 177) L_PAREN@[172; 173) "("
PATH@[173; 177) PATH_EXPR@[173; 177)
PATH_SEGMENT@[173; 177) PATH@[173; 177)
NAME_REF@[173; 177) PATH_SEGMENT@[173; 177)
IDENT@[173; 177) "Copy" NAME_REF@[173; 177)
R_PAREN@[177; 178) ")" IDENT@[173; 177) "Copy"
R_ANGLE@[178; 179) ">" R_PAREN@[177; 178) ")"
ERROR@[179; 180) R_ANGLE@[178; 179) ">"
SEMI@[179; 180) ";" ERROR@[179; 180)
WHITESPACE@[180; 185) "\n " SEMI@[179; 180) ";"
LET_STMT@[185; 235) WHITESPACE@[180; 185) "\n "
LET_KW@[185; 188) "let" LET_STMT@[185; 235)
WHITESPACE@[188; 189) " " LET_KW@[185; 188) "let"
PLACEHOLDER_PAT@[189; 190) WHITESPACE@[188; 189) " "
UNDERSCORE@[189; 190) "_" PLACEHOLDER_PAT@[189; 190)
COLON@[190; 191) ":" UNDERSCORE@[189; 190) "_"
WHITESPACE@[191; 192) " " COLON@[190; 191) ":"
DYN_TRAIT_TYPE@[192; 235) WHITESPACE@[191; 192) " "
TYPE_BOUND_LIST@[192; 235) DYN_TRAIT_TYPE@[192; 235)
TYPE_BOUND@[192; 215) TYPE_BOUND_LIST@[192; 235)
PATH_TYPE@[192; 215) TYPE_BOUND@[192; 215)
PATH@[192; 215) PATH_TYPE@[192; 215)
PATH_SEGMENT@[192; 215) PATH@[192; 215)
NAME_REF@[192; 195) PATH_SEGMENT@[192; 215)
IDENT@[192; 195) "Box" NAME_REF@[192; 195)
TYPE_ARG_LIST@[195; 215) IDENT@[192; 195) "Box"
L_ANGLE@[195; 196) "<" TYPE_ARG_LIST@[195; 215)
TYPE_ARG@[196; 215) L_ANGLE@[195; 196) "<"
PAREN_TYPE@[196; 215) TYPE_ARG@[196; 215)
L_PAREN@[196; 197) "(" PAREN_TYPE@[196; 215)
FOR_TYPE@[197; 214) L_PAREN@[196; 197) "("
FOR_KW@[197; 200) "for" FOR_TYPE@[197; 214)
TYPE_PARAM_LIST@[200; 204) FOR_KW@[197; 200) "for"
L_ANGLE@[200; 201) "<" TYPE_PARAM_LIST@[200; 204)
LIFETIME_PARAM@[201; 203) L_ANGLE@[200; 201) "<"
LIFETIME@[201; 203) "\'a" LIFETIME_PARAM@[201; 203)
R_ANGLE@[203; 204) ">" LIFETIME@[201; 203) "\'a"
WHITESPACE@[204; 205) " " R_ANGLE@[203; 204) ">"
PATH_TYPE@[205; 214) WHITESPACE@[204; 205) " "
PATH@[205; 214) PATH_TYPE@[205; 214)
PATH_SEGMENT@[205; 214) PATH@[205; 214)
NAME_REF@[205; 210) PATH_SEGMENT@[205; 214)
IDENT@[205; 210) "Trait" NAME_REF@[205; 210)
TYPE_ARG_LIST@[210; 214) IDENT@[205; 210) "Trait"
L_ANGLE@[210; 211) "<" TYPE_ARG_LIST@[210; 214)
LIFETIME_ARG@[211; 213) L_ANGLE@[210; 211) "<"
LIFETIME@[211; 213) "\'a" LIFETIME_ARG@[211; 213)
R_ANGLE@[213; 214) ">" LIFETIME@[211; 213) "\'a"
R_PAREN@[214; 215) ")" R_ANGLE@[213; 214) ">"
WHITESPACE@[215; 216) " " R_PAREN@[214; 215) ")"
PLUS@[216; 217) "+" WHITESPACE@[215; 216) " "
WHITESPACE@[217; 218) " " PLUS@[216; 217) "+"
TYPE_BOUND@[218; 224) WHITESPACE@[217; 218) " "
L_PAREN@[218; 219) "(" TYPE_BOUND@[218; 224)
PATH_TYPE@[219; 223) L_PAREN@[218; 219) "("
PATH@[219; 223) PATH_TYPE@[219; 223)
PATH_SEGMENT@[219; 223) PATH@[219; 223)
NAME_REF@[219; 223) PATH_SEGMENT@[219; 223)
IDENT@[219; 223) "Copy" NAME_REF@[219; 223)
R_PAREN@[223; 224) ")" IDENT@[219; 223) "Copy"
WHITESPACE@[224; 225) " " R_PAREN@[223; 224) ")"
PLUS@[225; 226) "+" WHITESPACE@[224; 225) " "
WHITESPACE@[226; 227) " " PLUS@[225; 226) "+"
TYPE_BOUND@[227; 235) WHITESPACE@[226; 227) " "
L_PAREN@[227; 228) "(" TYPE_BOUND@[227; 235)
QUESTION@[228; 229) "?" L_PAREN@[227; 228) "("
PATH_TYPE@[229; 234) QUESTION@[228; 229) "?"
PATH@[229; 234) PATH_TYPE@[229; 234)
PATH_SEGMENT@[229; 234) PATH@[229; 234)
NAME_REF@[229; 234) PATH_SEGMENT@[229; 234)
IDENT@[229; 234) "Sized" NAME_REF@[229; 234)
R_PAREN@[234; 235) ")" IDENT@[229; 234) "Sized"
EXPR_STMT@[235; 237) R_PAREN@[234; 235) ")"
ERROR@[235; 236) EXPR_STMT@[235; 237)
R_ANGLE@[235; 236) ">" ERROR@[235; 236)
SEMI@[236; 237) ";" R_ANGLE@[235; 236) ">"
WHITESPACE@[237; 238) "\n" SEMI@[236; 237) ";"
R_CURLY@[238; 239) "}" WHITESPACE@[237; 238) "\n"
R_CURLY@[238; 239) "}"
WHITESPACE@[239; 240) "\n" WHITESPACE@[239; 240) "\n"
error 88: expected COMMA error 88: expected COMMA
error 88: expected R_ANGLE error 88: expected R_ANGLE

View file

@ -8,187 +8,188 @@ SOURCE_FILE@[0; 575)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 574) BLOCK_EXPR@[10; 574)
L_CURLY@[10; 11) "{" BLOCK@[10; 574)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
ENUM_DEF@[16; 152) WHITESPACE@[11; 16) "\n "
ENUM_KW@[16; 20) "enum" ENUM_DEF@[16; 152)
WHITESPACE@[20; 21) " " ENUM_KW@[16; 20) "enum"
NAME@[21; 25) WHITESPACE@[20; 21) " "
IDENT@[21; 25) "Test" NAME@[21; 25)
WHITESPACE@[25; 26) " " IDENT@[21; 25) "Test"
ENUM_VARIANT_LIST@[26; 152) WHITESPACE@[25; 26) " "
L_CURLY@[26; 27) "{" ENUM_VARIANT_LIST@[26; 152)
WHITESPACE@[27; 36) "\n " L_CURLY@[26; 27) "{"
ENUM_VARIANT@[36; 40) WHITESPACE@[27; 36) "\n "
NAME@[36; 40) ENUM_VARIANT@[36; 40)
IDENT@[36; 40) "Var1" NAME@[36; 40)
COMMA@[40; 41) "," IDENT@[36; 40) "Var1"
WHITESPACE@[41; 50) "\n " COMMA@[40; 41) ","
ENUM_VARIANT@[50; 62) WHITESPACE@[41; 50) "\n "
NAME@[50; 54) ENUM_VARIANT@[50; 62)
IDENT@[50; 54) "Var2" NAME@[50; 54)
TUPLE_FIELD_DEF_LIST@[54; 62) IDENT@[50; 54) "Var2"
L_PAREN@[54; 55) "(" TUPLE_FIELD_DEF_LIST@[54; 62)
TUPLE_FIELD_DEF@[55; 61) L_PAREN@[54; 55) "("
PATH_TYPE@[55; 61) TUPLE_FIELD_DEF@[55; 61)
PATH@[55; 61) PATH_TYPE@[55; 61)
PATH_SEGMENT@[55; 61) PATH@[55; 61)
NAME_REF@[55; 61) PATH_SEGMENT@[55; 61)
IDENT@[55; 61) "String" NAME_REF@[55; 61)
R_PAREN@[61; 62) ")" IDENT@[55; 61) "String"
COMMA@[62; 63) "," R_PAREN@[61; 62) ")"
WHITESPACE@[63; 72) "\n " COMMA@[62; 63) ","
ENUM_VARIANT@[72; 145) WHITESPACE@[63; 72) "\n "
NAME@[72; 76) ENUM_VARIANT@[72; 145)
IDENT@[72; 76) "Var3" NAME@[72; 76)
WHITESPACE@[76; 77) " " IDENT@[72; 76) "Var3"
RECORD_FIELD_DEF_LIST@[77; 145) WHITESPACE@[76; 77) " "
L_CURLY@[77; 78) "{" RECORD_FIELD_DEF_LIST@[77; 145)
WHITESPACE@[78; 91) "\n " L_CURLY@[77; 78) "{"
RECORD_FIELD_DEF@[91; 95) WHITESPACE@[78; 91) "\n "
NAME@[91; 94) RECORD_FIELD_DEF@[91; 95)
IDENT@[91; 94) "abc" NAME@[91; 94)
COLON@[94; 95) ":" IDENT@[91; 94) "abc"
WHITESPACE@[95; 96) " " COLON@[94; 95) ":"
ERROR@[96; 98) WHITESPACE@[95; 96) " "
L_CURLY@[96; 97) "{" ERROR@[96; 98)
R_CURLY@[97; 98) "}" L_CURLY@[96; 97) "{"
ERROR@[98; 99) R_CURLY@[97; 98) "}"
COMMA@[98; 99) "," ERROR@[98; 99)
WHITESPACE@[99; 100) " " COMMA@[98; 99) ","
COMMENT@[100; 135) "//~ ERROR: expected t ..." WHITESPACE@[99; 100) " "
WHITESPACE@[135; 144) "\n " COMMENT@[100; 135) "//~ ERROR: expected t ..."
R_CURLY@[144; 145) "}" WHITESPACE@[135; 144) "\n "
COMMA@[145; 146) "," R_CURLY@[144; 145) "}"
WHITESPACE@[146; 151) "\n " COMMA@[145; 146) ","
R_CURLY@[151; 152) "}" WHITESPACE@[146; 151) "\n "
WHITESPACE@[152; 158) "\n\n " R_CURLY@[151; 152) "}"
COMMENT@[158; 171) "// recover..." WHITESPACE@[152; 158) "\n\n "
WHITESPACE@[171; 176) "\n " COMMENT@[158; 171) "// recover..."
LET_STMT@[176; 186) WHITESPACE@[171; 176) "\n "
LET_KW@[176; 179) "let" LET_STMT@[176; 186)
WHITESPACE@[179; 180) " " LET_KW@[176; 179) "let"
BIND_PAT@[180; 181) WHITESPACE@[179; 180) " "
NAME@[180; 181) BIND_PAT@[180; 181)
IDENT@[180; 181) "a" NAME@[180; 181)
WHITESPACE@[181; 182) " " IDENT@[180; 181) "a"
EQ@[182; 183) "=" WHITESPACE@[181; 182) " "
WHITESPACE@[183; 184) " " EQ@[182; 183) "="
LITERAL@[184; 185) WHITESPACE@[183; 184) " "
INT_NUMBER@[184; 185) "1" LITERAL@[184; 185)
SEMI@[185; 186) ";" INT_NUMBER@[184; 185) "1"
WHITESPACE@[186; 191) "\n " SEMI@[185; 186) ";"
ENUM_DEF@[191; 223) WHITESPACE@[186; 191) "\n "
ENUM_KW@[191; 195) "enum" ENUM_DEF@[191; 223)
WHITESPACE@[195; 196) " " ENUM_KW@[191; 195) "enum"
NAME@[196; 201) WHITESPACE@[195; 196) " "
IDENT@[196; 201) "Test2" NAME@[196; 201)
WHITESPACE@[201; 202) " " IDENT@[196; 201) "Test2"
ENUM_VARIANT_LIST@[202; 223) WHITESPACE@[201; 202) " "
L_CURLY@[202; 203) "{" ENUM_VARIANT_LIST@[202; 223)
WHITESPACE@[203; 212) "\n " L_CURLY@[202; 203) "{"
ENUM_VARIANT@[212; 216) WHITESPACE@[203; 212) "\n "
NAME@[212; 216) ENUM_VARIANT@[212; 216)
IDENT@[212; 216) "Fine" NAME@[212; 216)
COMMA@[216; 217) "," IDENT@[212; 216) "Fine"
WHITESPACE@[217; 222) "\n " COMMA@[216; 217) ","
R_CURLY@[222; 223) "}" WHITESPACE@[217; 222) "\n "
WHITESPACE@[223; 229) "\n\n " R_CURLY@[222; 223) "}"
ENUM_DEF@[229; 300) WHITESPACE@[223; 229) "\n\n "
ENUM_KW@[229; 233) "enum" ENUM_DEF@[229; 300)
WHITESPACE@[233; 234) " " ENUM_KW@[229; 233) "enum"
NAME@[234; 239) WHITESPACE@[233; 234) " "
IDENT@[234; 239) "Test3" NAME@[234; 239)
WHITESPACE@[239; 240) " " IDENT@[234; 239) "Test3"
ENUM_VARIANT_LIST@[240; 300) WHITESPACE@[239; 240) " "
L_CURLY@[240; 241) "{" ENUM_VARIANT_LIST@[240; 300)
WHITESPACE@[241; 250) "\n " L_CURLY@[240; 241) "{"
ENUM_VARIANT@[250; 293) WHITESPACE@[241; 250) "\n "
NAME@[250; 259) ENUM_VARIANT@[250; 293)
IDENT@[250; 259) "StillFine" NAME@[250; 259)
WHITESPACE@[259; 260) " " IDENT@[250; 259) "StillFine"
RECORD_FIELD_DEF_LIST@[260; 293) WHITESPACE@[259; 260) " "
L_CURLY@[260; 261) "{" RECORD_FIELD_DEF_LIST@[260; 293)
WHITESPACE@[261; 274) "\n " L_CURLY@[260; 261) "{"
RECORD_FIELD_DEF@[274; 282) WHITESPACE@[261; 274) "\n "
NAME@[274; 277) RECORD_FIELD_DEF@[274; 282)
IDENT@[274; 277) "def" NAME@[274; 277)
COLON@[277; 278) ":" IDENT@[274; 277) "def"
WHITESPACE@[278; 279) " " COLON@[277; 278) ":"
PATH_TYPE@[279; 282) WHITESPACE@[278; 279) " "
PATH@[279; 282) PATH_TYPE@[279; 282)
PATH_SEGMENT@[279; 282) PATH@[279; 282)
NAME_REF@[279; 282) PATH_SEGMENT@[279; 282)
IDENT@[279; 282) "i32" NAME_REF@[279; 282)
COMMA@[282; 283) "," IDENT@[279; 282) "i32"
WHITESPACE@[283; 292) "\n " COMMA@[282; 283) ","
R_CURLY@[292; 293) "}" WHITESPACE@[283; 292) "\n "
COMMA@[293; 294) "," R_CURLY@[292; 293) "}"
WHITESPACE@[294; 299) "\n " COMMA@[293; 294) ","
R_CURLY@[299; 300) "}" WHITESPACE@[294; 299) "\n "
WHITESPACE@[300; 306) "\n\n " R_CURLY@[299; 300) "}"
EXPR_STMT@[306; 459) WHITESPACE@[300; 306) "\n\n "
BLOCK_EXPR@[306; 459) EXPR_STMT@[306; 459)
BLOCK@[306; 459) BLOCK_EXPR@[306; 459)
L_CURLY@[306; 307) "{" BLOCK@[306; 459)
WHITESPACE@[307; 316) "\n " L_CURLY@[306; 307) "{"
ENUM_DEF@[316; 453) WHITESPACE@[307; 316) "\n "
COMMENT@[316; 329) "// fail again" ENUM_DEF@[316; 453)
WHITESPACE@[329; 338) "\n " COMMENT@[316; 329) "// fail again"
ENUM_KW@[338; 342) "enum" WHITESPACE@[329; 338) "\n "
WHITESPACE@[342; 343) " " ENUM_KW@[338; 342) "enum"
NAME@[343; 348) WHITESPACE@[342; 343) " "
IDENT@[343; 348) "Test4" NAME@[343; 348)
WHITESPACE@[348; 349) " " IDENT@[343; 348) "Test4"
ENUM_VARIANT_LIST@[349; 453) WHITESPACE@[348; 349) " "
L_CURLY@[349; 350) "{" ENUM_VARIANT_LIST@[349; 453)
WHITESPACE@[350; 363) "\n " L_CURLY@[349; 350) "{"
ENUM_VARIANT@[363; 372) WHITESPACE@[350; 363) "\n "
NAME@[363; 367) ENUM_VARIANT@[363; 372)
IDENT@[363; 367) "Nope" NAME@[363; 367)
TUPLE_FIELD_DEF_LIST@[367; 372) IDENT@[363; 367) "Nope"
L_PAREN@[367; 368) "(" TUPLE_FIELD_DEF_LIST@[367; 372)
TUPLE_FIELD_DEF@[368; 371) L_PAREN@[367; 368) "("
PATH_TYPE@[368; 371) TUPLE_FIELD_DEF@[368; 371)
PATH@[368; 371) PATH_TYPE@[368; 371)
PATH_SEGMENT@[368; 371) PATH@[368; 371)
NAME_REF@[368; 371) PATH_SEGMENT@[368; 371)
IDENT@[368; 371) "i32" NAME_REF@[368; 371)
WHITESPACE@[371; 372) " " IDENT@[368; 371) "i32"
ERROR@[372; 372) WHITESPACE@[371; 372) " "
ERROR@[372; 374) ERROR@[372; 372)
L_CURLY@[372; 373) "{" ERROR@[372; 374)
R_CURLY@[373; 374) "}" L_CURLY@[372; 373) "{"
ERROR@[374; 375) R_CURLY@[373; 374) "}"
R_PAREN@[374; 375) ")" ERROR@[374; 375)
WHITESPACE@[375; 376) " " R_PAREN@[374; 375) ")"
COMMENT@[376; 396) "//~ ERROR: found `{`" WHITESPACE@[375; 376) " "
WHITESPACE@[396; 422) "\n ..." COMMENT@[376; 396) "//~ ERROR: found `{`"
COMMENT@[422; 443) "//~^ ERROR: found `{`" WHITESPACE@[396; 422) "\n ..."
WHITESPACE@[443; 452) "\n " COMMENT@[422; 443) "//~^ ERROR: found `{`"
R_CURLY@[452; 453) "}" WHITESPACE@[443; 452) "\n "
WHITESPACE@[453; 458) "\n " R_CURLY@[452; 453) "}"
R_CURLY@[458; 459) "}" WHITESPACE@[453; 458) "\n "
WHITESPACE@[459; 464) "\n " R_CURLY@[458; 459) "}"
COMMENT@[464; 486) "// still recover later" WHITESPACE@[459; 464) "\n "
WHITESPACE@[486; 491) "\n " COMMENT@[464; 486) "// still recover later"
LET_STMT@[491; 510) WHITESPACE@[486; 491) "\n "
LET_KW@[491; 494) "let" LET_STMT@[491; 510)
WHITESPACE@[494; 495) " " LET_KW@[491; 494) "let"
BIND_PAT@[495; 505) WHITESPACE@[494; 495) " "
NAME@[495; 505) BIND_PAT@[495; 505)
IDENT@[495; 505) "bad_syntax" NAME@[495; 505)
WHITESPACE@[505; 506) " " IDENT@[495; 505) "bad_syntax"
EQ@[506; 507) "=" WHITESPACE@[505; 506) " "
WHITESPACE@[507; 508) " " EQ@[506; 507) "="
ERROR@[508; 509) WHITESPACE@[507; 508) " "
UNDERSCORE@[508; 509) "_" ERROR@[508; 509)
SEMI@[509; 510) ";" UNDERSCORE@[508; 509) "_"
WHITESPACE@[510; 511) " " SEMI@[509; 510) ";"
COMMENT@[511; 572) "//~ ERROR: expected e ..." WHITESPACE@[510; 511) " "
WHITESPACE@[572; 573) "\n" COMMENT@[511; 572) "//~ ERROR: expected e ..."
R_CURLY@[573; 574) "}" WHITESPACE@[572; 573) "\n"
R_CURLY@[573; 574) "}"
WHITESPACE@[574; 575) "\n" WHITESPACE@[574; 575) "\n"
error 95: expected type error 95: expected type
error 95: expected COMMA error 95: expected COMMA

View file

@ -20,9 +20,10 @@ SOURCE_FILE@[0; 30)
LIFETIME@[23; 25) "\'a" LIFETIME@[23; 25) "\'a"
R_ANGLE@[25; 26) ">" R_ANGLE@[25; 26) ">"
WHITESPACE@[26; 27) "\n" WHITESPACE@[26; 27) "\n"
BLOCK@[27; 29) BLOCK_EXPR@[27; 29)
L_CURLY@[27; 28) "{" BLOCK@[27; 29)
R_CURLY@[28; 29) "}" L_CURLY@[27; 28) "{"
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n" WHITESPACE@[29; 30) "\n"
error 26: expected a path error 26: expected a path
error 26: expected colon error 26: expected colon

View file

@ -73,188 +73,189 @@ SOURCE_FILE@[0; 349)
L_PAREN@[125; 126) "(" L_PAREN@[125; 126) "("
R_PAREN@[126; 127) ")" R_PAREN@[126; 127) ")"
WHITESPACE@[127; 128) " " WHITESPACE@[127; 128) " "
BLOCK@[128; 348) BLOCK_EXPR@[128; 348)
L_CURLY@[128; 129) "{" BLOCK@[128; 348)
WHITESPACE@[129; 134) "\n " L_CURLY@[128; 129) "{"
EXPR_STMT@[134; 139) WHITESPACE@[129; 134) "\n "
PATH_EXPR@[134; 139) EXPR_STMT@[134; 139)
PATH@[134; 139) PATH_EXPR@[134; 139)
PATH_SEGMENT@[134; 139) PATH@[134; 139)
NAME_REF@[134; 139) PATH_SEGMENT@[134; 139)
IDENT@[134; 139) "macro" NAME_REF@[134; 139)
WHITESPACE@[139; 140) " " IDENT@[134; 139) "macro"
EXPR_STMT@[140; 154) WHITESPACE@[139; 140) " "
CALL_EXPR@[140; 154) EXPR_STMT@[140; 154)
PATH_EXPR@[140; 150) CALL_EXPR@[140; 154)
PATH@[140; 150) PATH_EXPR@[140; 150)
PATH_SEGMENT@[140; 150) PATH@[140; 150)
NAME_REF@[140; 150) PATH_SEGMENT@[140; 150)
IDENT@[140; 150) "test_merge" NAME_REF@[140; 150)
ARG_LIST@[150; 154) IDENT@[140; 150) "test_merge"
L_PAREN@[150; 151) "(" ARG_LIST@[150; 154)
ARRAY_EXPR@[151; 154) L_PAREN@[150; 151) "("
L_BRACK@[151; 152) "[" ARRAY_EXPR@[151; 154)
ERROR@[152; 153) L_BRACK@[151; 152) "["
DOLLAR@[152; 153) "$" ERROR@[152; 153)
PAREN_EXPR@[153; 154) DOLLAR@[152; 153) "$"
L_PAREN@[153; 154) "(" PAREN_EXPR@[153; 154)
EXPR_STMT@[154; 155) L_PAREN@[153; 154) "("
ERROR@[154; 155) EXPR_STMT@[154; 155)
DOLLAR@[154; 155) "$" ERROR@[154; 155)
EXPR_STMT@[155; 160) DOLLAR@[154; 155) "$"
PATH_EXPR@[155; 160) EXPR_STMT@[155; 160)
PATH@[155; 160) PATH_EXPR@[155; 160)
PATH_SEGMENT@[155; 160) PATH@[155; 160)
NAME_REF@[155; 160) PATH_SEGMENT@[155; 160)
IDENT@[155; 160) "input" NAME_REF@[155; 160)
EXPR_STMT@[160; 161) IDENT@[155; 160) "input"
ERROR@[160; 161) EXPR_STMT@[160; 161)
COLON@[160; 161) ":" ERROR@[160; 161)
EXPR_STMT@[161; 165) COLON@[160; 161) ":"
PATH_EXPR@[161; 165) EXPR_STMT@[161; 165)
PATH@[161; 165) PATH_EXPR@[161; 165)
PATH_SEGMENT@[161; 165) PATH@[161; 165)
NAME_REF@[161; 165) PATH_SEGMENT@[161; 165)
IDENT@[161; 165) "expr" NAME_REF@[161; 165)
EXPR_STMT@[165; 166) IDENT@[161; 165) "expr"
ERROR@[165; 166) EXPR_STMT@[165; 166)
R_PAREN@[165; 166) ")" ERROR@[165; 166)
EXPR_STMT@[166; 167) R_PAREN@[165; 166) ")"
ERROR@[166; 167) EXPR_STMT@[166; 167)
COMMA@[166; 167) "," ERROR@[166; 167)
EXPR_STMT@[167; 170) COMMA@[166; 167) ","
PREFIX_EXPR@[167; 170) EXPR_STMT@[167; 170)
STAR@[167; 168) "*" PREFIX_EXPR@[167; 170)
WHITESPACE@[168; 169) " " STAR@[167; 168) "*"
ERROR@[169; 170) WHITESPACE@[168; 169) " "
DOLLAR@[169; 170) "$" ERROR@[169; 170)
EXPR_STMT@[170; 171) DOLLAR@[169; 170) "$"
PAREN_EXPR@[170; 171) EXPR_STMT@[170; 171)
L_PAREN@[170; 171) "(" PAREN_EXPR@[170; 171)
EXPR_STMT@[171; 172) L_PAREN@[170; 171) "("
ERROR@[171; 172) EXPR_STMT@[171; 172)
COMMA@[171; 172) "," ERROR@[171; 172)
EXPR_STMT@[172; 173) COMMA@[171; 172) ","
ERROR@[172; 173) EXPR_STMT@[172; 173)
R_PAREN@[172; 173) ")" ERROR@[172; 173)
EXPR_STMT@[173; 175) R_PAREN@[172; 173) ")"
PREFIX_EXPR@[173; 175) EXPR_STMT@[173; 175)
STAR@[173; 174) "*" PREFIX_EXPR@[173; 175)
ERROR@[174; 175) STAR@[173; 174) "*"
R_BRACK@[174; 175) "]" ERROR@[174; 175)
EXPR_STMT@[175; 176) R_BRACK@[174; 175) "]"
ERROR@[175; 176) EXPR_STMT@[175; 176)
COMMA@[175; 176) "," ERROR@[175; 176)
WHITESPACE@[176; 177) " " COMMA@[175; 176) ","
EXPR_STMT@[177; 180) WHITESPACE@[176; 177) " "
ARRAY_EXPR@[177; 180) EXPR_STMT@[177; 180)
L_BRACK@[177; 178) "[" ARRAY_EXPR@[177; 180)
ERROR@[178; 179) L_BRACK@[177; 178) "["
DOLLAR@[178; 179) "$" ERROR@[178; 179)
PAREN_EXPR@[179; 180) DOLLAR@[178; 179) "$"
L_PAREN@[179; 180) "(" PAREN_EXPR@[179; 180)
EXPR_STMT@[180; 181) L_PAREN@[179; 180) "("
ERROR@[180; 181) EXPR_STMT@[180; 181)
DOLLAR@[180; 181) "$" ERROR@[180; 181)
EXPR_STMT@[181; 187) DOLLAR@[180; 181) "$"
PATH_EXPR@[181; 187) EXPR_STMT@[181; 187)
PATH@[181; 187) PATH_EXPR@[181; 187)
PATH_SEGMENT@[181; 187) PATH@[181; 187)
NAME_REF@[181; 187) PATH_SEGMENT@[181; 187)
IDENT@[181; 187) "output" NAME_REF@[181; 187)
EXPR_STMT@[187; 188) IDENT@[181; 187) "output"
ERROR@[187; 188) EXPR_STMT@[187; 188)
COLON@[187; 188) ":" ERROR@[187; 188)
EXPR_STMT@[188; 192) COLON@[187; 188) ":"
PATH_EXPR@[188; 192) EXPR_STMT@[188; 192)
PATH@[188; 192) PATH_EXPR@[188; 192)
PATH_SEGMENT@[188; 192) PATH@[188; 192)
NAME_REF@[188; 192) PATH_SEGMENT@[188; 192)
IDENT@[188; 192) "expr" NAME_REF@[188; 192)
EXPR_STMT@[192; 193) IDENT@[188; 192) "expr"
ERROR@[192; 193) EXPR_STMT@[192; 193)
R_PAREN@[192; 193) ")" ERROR@[192; 193)
EXPR_STMT@[193; 194) R_PAREN@[192; 193) ")"
ERROR@[193; 194) EXPR_STMT@[193; 194)
COMMA@[193; 194) "," ERROR@[193; 194)
EXPR_STMT@[194; 197) COMMA@[193; 194) ","
PREFIX_EXPR@[194; 197) EXPR_STMT@[194; 197)
STAR@[194; 195) "*" PREFIX_EXPR@[194; 197)
WHITESPACE@[195; 196) " " STAR@[194; 195) "*"
ERROR@[196; 197) WHITESPACE@[195; 196) " "
DOLLAR@[196; 197) "$" ERROR@[196; 197)
EXPR_STMT@[197; 198) DOLLAR@[196; 197) "$"
PAREN_EXPR@[197; 198) EXPR_STMT@[197; 198)
L_PAREN@[197; 198) "(" PAREN_EXPR@[197; 198)
EXPR_STMT@[198; 199) L_PAREN@[197; 198) "("
ERROR@[198; 199) EXPR_STMT@[198; 199)
COMMA@[198; 199) "," ERROR@[198; 199)
EXPR_STMT@[199; 200) COMMA@[198; 199) ","
ERROR@[199; 200) EXPR_STMT@[199; 200)
R_PAREN@[199; 200) ")" ERROR@[199; 200)
EXPR_STMT@[200; 202) R_PAREN@[199; 200) ")"
PREFIX_EXPR@[200; 202) EXPR_STMT@[200; 202)
STAR@[200; 201) "*" PREFIX_EXPR@[200; 202)
ERROR@[201; 202) STAR@[200; 201) "*"
R_BRACK@[201; 202) "]" ERROR@[201; 202)
EXPR_STMT@[202; 203) R_BRACK@[201; 202) "]"
ERROR@[202; 203) EXPR_STMT@[202; 203)
R_PAREN@[202; 203) ")" ERROR@[202; 203)
WHITESPACE@[203; 204) " " R_PAREN@[202; 203) ")"
BLOCK_EXPR@[204; 346) WHITESPACE@[203; 204) " "
BLOCK@[204; 346) BLOCK_EXPR@[204; 346)
L_CURLY@[204; 205) "{" BLOCK@[204; 346)
WHITESPACE@[205; 214) "\n " L_CURLY@[204; 205) "{"
EXPR_STMT@[214; 340) WHITESPACE@[205; 214) "\n "
MACRO_CALL@[214; 339) EXPR_STMT@[214; 340)
PATH@[214; 223) MACRO_CALL@[214; 339)
PATH_SEGMENT@[214; 223) PATH@[214; 223)
NAME_REF@[214; 223) PATH_SEGMENT@[214; 223)
IDENT@[214; 223) "assert_eq" NAME_REF@[214; 223)
EXCL@[223; 224) "!" IDENT@[214; 223) "assert_eq"
TOKEN_TREE@[224; 339) EXCL@[223; 224) "!"
L_PAREN@[224; 225) "(" TOKEN_TREE@[224; 339)
WHITESPACE@[225; 238) "\n " L_PAREN@[224; 225) "("
IDENT@[238; 253) "merge_use_trees" WHITESPACE@[225; 238) "\n "
TOKEN_TREE@[253; 284) IDENT@[238; 253) "merge_use_trees"
L_PAREN@[253; 254) "(" TOKEN_TREE@[253; 284)
IDENT@[254; 269) "parse_use_trees" L_PAREN@[253; 254) "("
EXCL@[269; 270) "!" IDENT@[254; 269) "parse_use_trees"
TOKEN_TREE@[270; 283) EXCL@[269; 270) "!"
L_PAREN@[270; 271) "(" TOKEN_TREE@[270; 283)
DOLLAR@[271; 272) "$" L_PAREN@[270; 271) "("
TOKEN_TREE@[272; 281) DOLLAR@[271; 272) "$"
L_PAREN@[272; 273) "(" TOKEN_TREE@[272; 281)
DOLLAR@[273; 274) "$" L_PAREN@[272; 273) "("
IDENT@[274; 279) "input" DOLLAR@[273; 274) "$"
COMMA@[279; 280) "," IDENT@[274; 279) "input"
R_PAREN@[280; 281) ")" COMMA@[279; 280) ","
STAR@[281; 282) "*" R_PAREN@[280; 281) ")"
R_PAREN@[282; 283) ")" STAR@[281; 282) "*"
R_PAREN@[283; 284) ")" R_PAREN@[282; 283) ")"
COMMA@[284; 285) "," R_PAREN@[283; 284) ")"
WHITESPACE@[285; 298) "\n " COMMA@[284; 285) ","
IDENT@[298; 313) "parse_use_trees" WHITESPACE@[285; 298) "\n "
EXCL@[313; 314) "!" IDENT@[298; 313) "parse_use_trees"
TOKEN_TREE@[314; 328) EXCL@[313; 314) "!"
L_PAREN@[314; 315) "(" TOKEN_TREE@[314; 328)
DOLLAR@[315; 316) "$" L_PAREN@[314; 315) "("
TOKEN_TREE@[316; 326) DOLLAR@[315; 316) "$"
L_PAREN@[316; 317) "(" TOKEN_TREE@[316; 326)
DOLLAR@[317; 318) "$" L_PAREN@[316; 317) "("
IDENT@[318; 324) "output" DOLLAR@[317; 318) "$"
COMMA@[324; 325) "," IDENT@[318; 324) "output"
R_PAREN@[325; 326) ")" COMMA@[324; 325) ","
STAR@[326; 327) "*" R_PAREN@[325; 326) ")"
R_PAREN@[327; 328) ")" STAR@[326; 327) "*"
COMMA@[328; 329) "," R_PAREN@[327; 328) ")"
WHITESPACE@[329; 338) "\n " COMMA@[328; 329) ","
R_PAREN@[338; 339) ")" WHITESPACE@[329; 338) "\n "
SEMI@[339; 340) ";" R_PAREN@[338; 339) ")"
WHITESPACE@[340; 345) "\n " SEMI@[339; 340) ";"
R_CURLY@[345; 346) "}" WHITESPACE@[340; 345) "\n "
WHITESPACE@[346; 347) "\n" R_CURLY@[345; 346) "}"
R_CURLY@[347; 348) "}" WHITESPACE@[346; 347) "\n"
R_CURLY@[347; 348) "}"
WHITESPACE@[348; 349) "\n" WHITESPACE@[348; 349) "\n"
error 5: expected EXCL error 5: expected EXCL
error 41: expected SEMI error 41: expected SEMI

View file

@ -19,17 +19,18 @@ SOURCE_FILE@[0; 24)
IDENT@[10; 11) "A" IDENT@[10; 11) "A"
R_PAREN@[11; 12) ")" R_PAREN@[11; 12) ")"
WHITESPACE@[12; 13) " " WHITESPACE@[12; 13) " "
BLOCK@[13; 23) BLOCK_EXPR@[13; 23)
L_CURLY@[13; 14) "{" BLOCK@[13; 23)
WHITESPACE@[14; 19) "\n " L_CURLY@[13; 14) "{"
FIELD_EXPR@[19; 21) WHITESPACE@[14; 19) "\n "
PATH_EXPR@[19; 20) FIELD_EXPR@[19; 21)
PATH@[19; 20) PATH_EXPR@[19; 20)
PATH_SEGMENT@[19; 20) PATH@[19; 20)
NAME_REF@[19; 20) PATH_SEGMENT@[19; 20)
IDENT@[19; 20) "a" NAME_REF@[19; 20)
DOT@[20; 21) "." IDENT@[19; 20) "a"
WHITESPACE@[21; 22) "\n" DOT@[20; 21) "."
R_CURLY@[22; 23) "}" WHITESPACE@[21; 22) "\n"
R_CURLY@[22; 23) "}"
WHITESPACE@[23; 24) "\n" WHITESPACE@[23; 24) "\n"
error 21: expected field name or number error 21: expected field name or number

View file

@ -8,105 +8,108 @@ SOURCE_FILE@[0; 350)
L_PAREN@[8; 9) "(" L_PAREN@[8; 9) "("
R_PAREN@[9; 10) ")" R_PAREN@[9; 10) ")"
WHITESPACE@[10; 11) " " WHITESPACE@[10; 11) " "
BLOCK@[11; 349) BLOCK_EXPR@[11; 349)
L_CURLY@[11; 12) "{" BLOCK@[11; 349)
WHITESPACE@[12; 17) "\n " L_CURLY@[11; 12) "{"
LET_STMT@[17; 129) WHITESPACE@[12; 17) "\n "
LET_KW@[17; 20) "let" LET_STMT@[17; 129)
WHITESPACE@[20; 21) " " LET_KW@[17; 20) "let"
BIND_PAT@[21; 26) WHITESPACE@[20; 21) " "
NAME@[21; 26) BIND_PAT@[21; 26)
IDENT@[21; 26) "inner" NAME@[21; 26)
WHITESPACE@[26; 27) " " IDENT@[21; 26) "inner"
EQ@[27; 28) "=" WHITESPACE@[26; 27) " "
WHITESPACE@[28; 29) " " EQ@[27; 28) "="
BLOCK_EXPR@[29; 128) WHITESPACE@[28; 29) " "
BLOCK@[29; 128) BLOCK_EXPR@[29; 128)
L_CURLY@[29; 30) "{" BLOCK@[29; 128)
WHITESPACE@[30; 39) "\n " L_CURLY@[29; 30) "{"
ATTR@[39; 83) WHITESPACE@[30; 39) "\n "
POUND@[39; 40) "#" ATTR@[39; 83)
EXCL@[40; 41) "!" POUND@[39; 40) "#"
TOKEN_TREE@[41; 83) EXCL@[40; 41) "!"
L_BRACK@[41; 42) "[" TOKEN_TREE@[41; 83)
IDENT@[42; 45) "doc" L_BRACK@[41; 42) "["
TOKEN_TREE@[45; 82) IDENT@[42; 45) "doc"
L_PAREN@[45; 46) "(" TOKEN_TREE@[45; 82)
STRING@[46; 81) "\"Inner attributes not ..." L_PAREN@[45; 46) "("
R_PAREN@[81; 82) ")" STRING@[46; 81) "\"Inner attributes not ..."
R_BRACK@[82; 83) "]" R_PAREN@[81; 82) ")"
WHITESPACE@[83; 92) "\n " R_BRACK@[82; 83) "]"
COMMENT@[92; 122) "//! Nor are ModuleDoc ..." WHITESPACE@[83; 92) "\n "
WHITESPACE@[122; 127) "\n " COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
R_CURLY@[127; 128) "}" WHITESPACE@[122; 127) "\n "
SEMI@[128; 129) ";" R_CURLY@[127; 128) "}"
WHITESPACE@[129; 134) "\n " SEMI@[128; 129) ";"
EXPR_STMT@[134; 257) WHITESPACE@[129; 134) "\n "
IF_EXPR@[134; 257) EXPR_STMT@[134; 257)
IF_KW@[134; 136) "if" IF_EXPR@[134; 257)
WHITESPACE@[136; 137) " " IF_KW@[134; 136) "if"
CONDITION@[137; 141) WHITESPACE@[136; 137) " "
LITERAL@[137; 141) CONDITION@[137; 141)
TRUE_KW@[137; 141) "true" LITERAL@[137; 141)
WHITESPACE@[141; 142) " " TRUE_KW@[137; 141) "true"
BLOCK@[142; 257) WHITESPACE@[141; 142) " "
L_CURLY@[142; 143) "{" BLOCK_EXPR@[142; 257)
WHITESPACE@[143; 152) "\n " BLOCK@[142; 257)
ATTR@[152; 171) L_CURLY@[142; 143) "{"
POUND@[152; 153) "#" WHITESPACE@[143; 152) "\n "
EXCL@[153; 154) "!" ATTR@[152; 171)
TOKEN_TREE@[154; 171) POUND@[152; 153) "#"
L_BRACK@[154; 155) "[" EXCL@[153; 154) "!"
IDENT@[155; 158) "doc" TOKEN_TREE@[154; 171)
TOKEN_TREE@[158; 170) L_BRACK@[154; 155) "["
L_PAREN@[158; 159) "(" IDENT@[155; 158) "doc"
STRING@[159; 169) "\"Nor here\"" TOKEN_TREE@[158; 170)
R_PAREN@[169; 170) ")" L_PAREN@[158; 159) "("
R_BRACK@[170; 171) "]" STRING@[159; 169) "\"Nor here\""
WHITESPACE@[171; 180) "\n " R_PAREN@[169; 170) ")"
ATTR@[180; 212) R_BRACK@[170; 171) "]"
POUND@[180; 181) "#" WHITESPACE@[171; 180) "\n "
EXCL@[181; 182) "!" ATTR@[180; 212)
TOKEN_TREE@[182; 212) POUND@[180; 181) "#"
L_BRACK@[182; 183) "[" EXCL@[181; 182) "!"
IDENT@[183; 186) "doc" TOKEN_TREE@[182; 212)
TOKEN_TREE@[186; 211) L_BRACK@[182; 183) "["
L_PAREN@[186; 187) "(" IDENT@[183; 186) "doc"
STRING@[187; 210) "\"We error on each attr\"" TOKEN_TREE@[186; 211)
R_PAREN@[210; 211) ")" L_PAREN@[186; 187) "("
R_BRACK@[211; 212) "]" STRING@[187; 210) "\"We error on each attr\""
WHITESPACE@[212; 221) "\n " R_PAREN@[210; 211) ")"
COMMENT@[221; 251) "//! Nor are ModuleDoc ..." R_BRACK@[211; 212) "]"
WHITESPACE@[251; 256) "\n " WHITESPACE@[212; 221) "\n "
R_CURLY@[256; 257) "}" COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
WHITESPACE@[257; 262) "\n " WHITESPACE@[251; 256) "\n "
WHILE_EXPR@[262; 347) R_CURLY@[256; 257) "}"
WHILE_KW@[262; 267) "while" WHITESPACE@[257; 262) "\n "
WHITESPACE@[267; 268) " " WHILE_EXPR@[262; 347)
CONDITION@[268; 272) WHILE_KW@[262; 267) "while"
LITERAL@[268; 272) WHITESPACE@[267; 268) " "
TRUE_KW@[268; 272) "true" CONDITION@[268; 272)
WHITESPACE@[272; 273) " " LITERAL@[268; 272)
BLOCK@[273; 347) TRUE_KW@[268; 272) "true"
L_CURLY@[273; 274) "{" WHITESPACE@[272; 273) " "
WHITESPACE@[274; 283) "\n " BLOCK_EXPR@[273; 347)
ATTR@[283; 302) BLOCK@[273; 347)
POUND@[283; 284) "#" L_CURLY@[273; 274) "{"
EXCL@[284; 285) "!" WHITESPACE@[274; 283) "\n "
TOKEN_TREE@[285; 302) ATTR@[283; 302)
L_BRACK@[285; 286) "[" POUND@[283; 284) "#"
IDENT@[286; 289) "doc" EXCL@[284; 285) "!"
TOKEN_TREE@[289; 301) TOKEN_TREE@[285; 302)
L_PAREN@[289; 290) "(" L_BRACK@[285; 286) "["
STRING@[290; 300) "\"Nor here\"" IDENT@[286; 289) "doc"
R_PAREN@[300; 301) ")" TOKEN_TREE@[289; 301)
R_BRACK@[301; 302) "]" L_PAREN@[289; 290) "("
WHITESPACE@[302; 311) "\n " STRING@[290; 300) "\"Nor here\""
COMMENT@[311; 341) "//! Nor are ModuleDoc ..." R_PAREN@[300; 301) ")"
WHITESPACE@[341; 346) "\n " R_BRACK@[301; 302) "]"
R_CURLY@[346; 347) "}" WHITESPACE@[302; 311) "\n "
WHITESPACE@[347; 348) "\n" COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
R_CURLY@[348; 349) "}" WHITESPACE@[341; 346) "\n "
R_CURLY@[346; 347) "}"
WHITESPACE@[347; 348) "\n"
R_CURLY@[348; 349) "}"
WHITESPACE@[349; 350) "\n" WHITESPACE@[349; 350) "\n"
error [39; 83): A block in this position cannot accept inner attributes error [39; 83): A block in this position cannot accept inner attributes
error [152; 171): A block in this position cannot accept inner attributes error [152; 171): A block in this position cannot accept inner attributes

View file

@ -8,185 +8,186 @@ SOURCE_FILE@[0; 293)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 292) BLOCK_EXPR@[9; 292)
L_CURLY@[9; 10) "{" BLOCK@[9; 292)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 101) WHITESPACE@[10; 15) "\n "
MATCH_EXPR@[15; 101) EXPR_STMT@[15; 101)
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 101)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 101) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 101)
WHITESPACE@[25; 34) "\n " L_CURLY@[24; 25) "{"
MATCH_ARM@[34; 41) WHITESPACE@[25; 34) "\n "
PLACEHOLDER_PAT@[34; 35) MATCH_ARM@[34; 41)
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
FAT_ARROW@[36; 38) "=>" WHITESPACE@[35; 36) " "
WHITESPACE@[38; 39) " " FAT_ARROW@[36; 38) "=>"
TUPLE_EXPR@[39; 41) WHITESPACE@[38; 39) " "
L_PAREN@[39; 40) "(" TUPLE_EXPR@[39; 41)
R_PAREN@[40; 41) ")" L_PAREN@[39; 40) "("
COMMA@[41; 42) "," R_PAREN@[40; 41) ")"
WHITESPACE@[42; 51) "\n " COMMA@[41; 42) ","
MATCH_ARM@[51; 78) WHITESPACE@[42; 51) "\n "
ATTR@[51; 52) MATCH_ARM@[51; 78)
POUND@[51; 52) "#" ATTR@[51; 52)
ERROR@[52; 53) POUND@[51; 52) "#"
EXCL@[52; 53) "!" ERROR@[52; 53)
ARRAY_EXPR@[53; 78) EXCL@[52; 53) "!"
L_BRACK@[53; 54) "[" ARRAY_EXPR@[53; 78)
CALL_EXPR@[54; 77) L_BRACK@[53; 54) "["
PATH_EXPR@[54; 57) CALL_EXPR@[54; 77)
PATH@[54; 57) PATH_EXPR@[54; 57)
PATH_SEGMENT@[54; 57) PATH@[54; 57)
NAME_REF@[54; 57) PATH_SEGMENT@[54; 57)
IDENT@[54; 57) "doc" NAME_REF@[54; 57)
ARG_LIST@[57; 77) IDENT@[54; 57) "doc"
L_PAREN@[57; 58) "(" ARG_LIST@[57; 77)
LITERAL@[58; 76) L_PAREN@[57; 58) "("
STRING@[58; 76) "\"Not allowed here\"" LITERAL@[58; 76)
R_PAREN@[76; 77) ")" STRING@[58; 76) "\"Not allowed here\""
R_BRACK@[77; 78) "]" R_PAREN@[76; 77) ")"
WHITESPACE@[78; 87) "\n " R_BRACK@[77; 78) "]"
MATCH_ARM@[87; 94) WHITESPACE@[78; 87) "\n "
PLACEHOLDER_PAT@[87; 88) MATCH_ARM@[87; 94)
UNDERSCORE@[87; 88) "_" PLACEHOLDER_PAT@[87; 88)
WHITESPACE@[88; 89) " " UNDERSCORE@[87; 88) "_"
FAT_ARROW@[89; 91) "=>" WHITESPACE@[88; 89) " "
WHITESPACE@[91; 92) " " FAT_ARROW@[89; 91) "=>"
TUPLE_EXPR@[92; 94) WHITESPACE@[91; 92) " "
L_PAREN@[92; 93) "(" TUPLE_EXPR@[92; 94)
R_PAREN@[93; 94) ")" L_PAREN@[92; 93) "("
COMMA@[94; 95) "," R_PAREN@[93; 94) ")"
WHITESPACE@[95; 100) "\n " COMMA@[94; 95) ","
R_CURLY@[100; 101) "}" WHITESPACE@[95; 100) "\n "
WHITESPACE@[101; 107) "\n\n " R_CURLY@[100; 101) "}"
EXPR_STMT@[107; 185) WHITESPACE@[101; 107) "\n\n "
MATCH_EXPR@[107; 185) EXPR_STMT@[107; 185)
MATCH_KW@[107; 112) "match" MATCH_EXPR@[107; 185)
WHITESPACE@[112; 113) " " MATCH_KW@[107; 112) "match"
TUPLE_EXPR@[113; 115) WHITESPACE@[112; 113) " "
L_PAREN@[113; 114) "(" TUPLE_EXPR@[113; 115)
R_PAREN@[114; 115) ")" L_PAREN@[113; 114) "("
WHITESPACE@[115; 116) " " R_PAREN@[114; 115) ")"
MATCH_ARM_LIST@[116; 185) WHITESPACE@[115; 116) " "
L_CURLY@[116; 117) "{" MATCH_ARM_LIST@[116; 185)
WHITESPACE@[117; 126) "\n " L_CURLY@[116; 117) "{"
MATCH_ARM@[126; 133) WHITESPACE@[117; 126) "\n "
PLACEHOLDER_PAT@[126; 127) MATCH_ARM@[126; 133)
UNDERSCORE@[126; 127) "_" PLACEHOLDER_PAT@[126; 127)
WHITESPACE@[127; 128) " " UNDERSCORE@[126; 127) "_"
FAT_ARROW@[128; 130) "=>" WHITESPACE@[127; 128) " "
WHITESPACE@[130; 131) " " FAT_ARROW@[128; 130) "=>"
TUPLE_EXPR@[131; 133) WHITESPACE@[130; 131) " "
L_PAREN@[131; 132) "(" TUPLE_EXPR@[131; 133)
R_PAREN@[132; 133) ")" L_PAREN@[131; 132) "("
COMMA@[133; 134) "," R_PAREN@[132; 133) ")"
WHITESPACE@[134; 143) "\n " COMMA@[133; 134) ","
MATCH_ARM@[143; 150) WHITESPACE@[134; 143) "\n "
PLACEHOLDER_PAT@[143; 144) MATCH_ARM@[143; 150)
UNDERSCORE@[143; 144) "_" PLACEHOLDER_PAT@[143; 144)
WHITESPACE@[144; 145) " " UNDERSCORE@[143; 144) "_"
FAT_ARROW@[145; 147) "=>" WHITESPACE@[144; 145) " "
WHITESPACE@[147; 148) " " FAT_ARROW@[145; 147) "=>"
TUPLE_EXPR@[148; 150) WHITESPACE@[147; 148) " "
L_PAREN@[148; 149) "(" TUPLE_EXPR@[148; 150)
R_PAREN@[149; 150) ")" L_PAREN@[148; 149) "("
COMMA@[150; 151) "," R_PAREN@[149; 150) ")"
WHITESPACE@[151; 160) "\n " COMMA@[150; 151) ","
MATCH_ARM@[160; 179) WHITESPACE@[151; 160) "\n "
ATTR@[160; 161) MATCH_ARM@[160; 179)
POUND@[160; 161) "#" ATTR@[160; 161)
ERROR@[161; 162) POUND@[160; 161) "#"
EXCL@[161; 162) "!" ERROR@[161; 162)
ARRAY_EXPR@[162; 179) EXCL@[161; 162) "!"
L_BRACK@[162; 163) "[" ARRAY_EXPR@[162; 179)
CALL_EXPR@[163; 178) L_BRACK@[162; 163) "["
PATH_EXPR@[163; 166) CALL_EXPR@[163; 178)
PATH@[163; 166) PATH_EXPR@[163; 166)
PATH_SEGMENT@[163; 166) PATH@[163; 166)
NAME_REF@[163; 166) PATH_SEGMENT@[163; 166)
IDENT@[163; 166) "doc" NAME_REF@[163; 166)
ARG_LIST@[166; 178) IDENT@[163; 166) "doc"
L_PAREN@[166; 167) "(" ARG_LIST@[166; 178)
LITERAL@[167; 177) L_PAREN@[166; 167) "("
STRING@[167; 177) "\"Nor here\"" LITERAL@[167; 177)
R_PAREN@[177; 178) ")" STRING@[167; 177) "\"Nor here\""
R_BRACK@[178; 179) "]" R_PAREN@[177; 178) ")"
WHITESPACE@[179; 184) "\n " R_BRACK@[178; 179) "]"
R_CURLY@[184; 185) "}" WHITESPACE@[179; 184) "\n "
WHITESPACE@[185; 191) "\n\n " R_CURLY@[184; 185) "}"
MATCH_EXPR@[191; 290) WHITESPACE@[185; 191) "\n\n "
MATCH_KW@[191; 196) "match" MATCH_EXPR@[191; 290)
WHITESPACE@[196; 197) " " MATCH_KW@[191; 196) "match"
TUPLE_EXPR@[197; 199) WHITESPACE@[196; 197) " "
L_PAREN@[197; 198) "(" TUPLE_EXPR@[197; 199)
R_PAREN@[198; 199) ")" L_PAREN@[197; 198) "("
WHITESPACE@[199; 200) " " R_PAREN@[198; 199) ")"
MATCH_ARM_LIST@[200; 290) WHITESPACE@[199; 200) " "
L_CURLY@[200; 201) "{" MATCH_ARM_LIST@[200; 290)
WHITESPACE@[201; 210) "\n " L_CURLY@[200; 201) "{"
MATCH_ARM@[210; 250) WHITESPACE@[201; 210) "\n "
ATTR@[210; 222) MATCH_ARM@[210; 250)
POUND@[210; 211) "#" ATTR@[210; 222)
TOKEN_TREE@[211; 222) POUND@[210; 211) "#"
L_BRACK@[211; 212) "[" TOKEN_TREE@[211; 222)
IDENT@[212; 215) "cfg" L_BRACK@[211; 212) "["
TOKEN_TREE@[215; 221) IDENT@[212; 215) "cfg"
L_PAREN@[215; 216) "(" TOKEN_TREE@[215; 221)
IDENT@[216; 220) "test" L_PAREN@[215; 216) "("
R_PAREN@[220; 221) ")" IDENT@[216; 220) "test"
R_BRACK@[221; 222) "]" R_PAREN@[220; 221) ")"
WHITESPACE@[222; 231) "\n " R_BRACK@[221; 222) "]"
ATTR@[231; 232) WHITESPACE@[222; 231) "\n "
POUND@[231; 232) "#" ATTR@[231; 232)
ERROR@[232; 233) POUND@[231; 232) "#"
EXCL@[232; 233) "!" ERROR@[232; 233)
ARRAY_EXPR@[233; 250) EXCL@[232; 233) "!"
L_BRACK@[233; 234) "[" ARRAY_EXPR@[233; 250)
CALL_EXPR@[234; 249) L_BRACK@[233; 234) "["
PATH_EXPR@[234; 237) CALL_EXPR@[234; 249)
PATH@[234; 237) PATH_EXPR@[234; 237)
PATH_SEGMENT@[234; 237) PATH@[234; 237)
NAME_REF@[234; 237) PATH_SEGMENT@[234; 237)
IDENT@[234; 237) "doc" NAME_REF@[234; 237)
ARG_LIST@[237; 249) IDENT@[234; 237) "doc"
L_PAREN@[237; 238) "(" ARG_LIST@[237; 249)
LITERAL@[238; 248) L_PAREN@[237; 238) "("
STRING@[238; 248) "\"Nor here\"" LITERAL@[238; 248)
R_PAREN@[248; 249) ")" STRING@[238; 248) "\"Nor here\""
R_BRACK@[249; 250) "]" R_PAREN@[248; 249) ")"
WHITESPACE@[250; 259) "\n " R_BRACK@[249; 250) "]"
MATCH_ARM@[259; 266) WHITESPACE@[250; 259) "\n "
PLACEHOLDER_PAT@[259; 260) MATCH_ARM@[259; 266)
UNDERSCORE@[259; 260) "_" PLACEHOLDER_PAT@[259; 260)
WHITESPACE@[260; 261) " " UNDERSCORE@[259; 260) "_"
FAT_ARROW@[261; 263) "=>" WHITESPACE@[260; 261) " "
WHITESPACE@[263; 264) " " FAT_ARROW@[261; 263) "=>"
TUPLE_EXPR@[264; 266) WHITESPACE@[263; 264) " "
L_PAREN@[264; 265) "(" TUPLE_EXPR@[264; 266)
R_PAREN@[265; 266) ")" L_PAREN@[264; 265) "("
COMMA@[266; 267) "," R_PAREN@[265; 266) ")"
WHITESPACE@[267; 276) "\n " COMMA@[266; 267) ","
MATCH_ARM@[276; 283) WHITESPACE@[267; 276) "\n "
PLACEHOLDER_PAT@[276; 277) MATCH_ARM@[276; 283)
UNDERSCORE@[276; 277) "_" PLACEHOLDER_PAT@[276; 277)
WHITESPACE@[277; 278) " " UNDERSCORE@[276; 277) "_"
FAT_ARROW@[278; 280) "=>" WHITESPACE@[277; 278) " "
WHITESPACE@[280; 281) " " FAT_ARROW@[278; 280) "=>"
TUPLE_EXPR@[281; 283) WHITESPACE@[280; 281) " "
L_PAREN@[281; 282) "(" TUPLE_EXPR@[281; 283)
R_PAREN@[282; 283) ")" L_PAREN@[281; 282) "("
COMMA@[283; 284) "," R_PAREN@[282; 283) ")"
WHITESPACE@[284; 289) "\n " COMMA@[283; 284) ","
R_CURLY@[289; 290) "}" WHITESPACE@[284; 289) "\n "
WHITESPACE@[290; 291) "\n" R_CURLY@[289; 290) "}"
R_CURLY@[291; 292) "}" WHITESPACE@[290; 291) "\n"
R_CURLY@[291; 292) "}"
WHITESPACE@[292; 293) "\n" WHITESPACE@[292; 293) "\n"
error 52: expected `[` error 52: expected `[`
error 52: expected pattern error 52: expected pattern

View file

@ -8,56 +8,57 @@ SOURCE_FILE@[0; 89)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 88) BLOCK_EXPR@[9; 88)
L_CURLY@[9; 10) "{" BLOCK@[9; 88)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
MATCH_EXPR@[15; 86) WHITESPACE@[10; 15) "\n "
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 86)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 86) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 86)
WHITESPACE@[25; 34) "\n " L_CURLY@[24; 25) "{"
MATCH_ARM@[34; 41) WHITESPACE@[25; 34) "\n "
PLACEHOLDER_PAT@[34; 35) MATCH_ARM@[34; 41)
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
FAT_ARROW@[36; 38) "=>" WHITESPACE@[35; 36) " "
WHITESPACE@[38; 39) " " FAT_ARROW@[36; 38) "=>"
TUPLE_EXPR@[39; 41) WHITESPACE@[38; 39) " "
L_PAREN@[39; 40) "(" TUPLE_EXPR@[39; 41)
R_PAREN@[40; 41) ")" L_PAREN@[39; 40) "("
COMMA@[41; 42) "," R_PAREN@[40; 41) ")"
WHITESPACE@[42; 51) "\n " COMMA@[41; 42) ","
MATCH_ARM@[51; 58) WHITESPACE@[42; 51) "\n "
PLACEHOLDER_PAT@[51; 52) MATCH_ARM@[51; 58)
UNDERSCORE@[51; 52) "_" PLACEHOLDER_PAT@[51; 52)
WHITESPACE@[52; 53) " " UNDERSCORE@[51; 52) "_"
FAT_ARROW@[53; 55) "=>" WHITESPACE@[52; 53) " "
WHITESPACE@[55; 56) " " FAT_ARROW@[53; 55) "=>"
TUPLE_EXPR@[56; 58) WHITESPACE@[55; 56) " "
L_PAREN@[56; 57) "(" TUPLE_EXPR@[56; 58)
R_PAREN@[57; 58) ")" L_PAREN@[56; 57) "("
COMMA@[58; 59) "," R_PAREN@[57; 58) ")"
WHITESPACE@[59; 68) "\n " COMMA@[58; 59) ","
MATCH_ARM@[68; 80) WHITESPACE@[59; 68) "\n "
ATTR@[68; 80) MATCH_ARM@[68; 80)
POUND@[68; 69) "#" ATTR@[68; 80)
TOKEN_TREE@[69; 80) POUND@[68; 69) "#"
L_BRACK@[69; 70) "[" TOKEN_TREE@[69; 80)
IDENT@[70; 73) "cfg" L_BRACK@[69; 70) "["
TOKEN_TREE@[73; 79) IDENT@[70; 73) "cfg"
L_PAREN@[73; 74) "(" TOKEN_TREE@[73; 79)
IDENT@[74; 78) "test" L_PAREN@[73; 74) "("
R_PAREN@[78; 79) ")" IDENT@[74; 78) "test"
R_BRACK@[79; 80) "]" R_PAREN@[78; 79) ")"
WHITESPACE@[80; 85) "\n " R_BRACK@[79; 80) "]"
R_CURLY@[85; 86) "}" WHITESPACE@[80; 85) "\n "
WHITESPACE@[86; 87) "\n" R_CURLY@[85; 86) "}"
R_CURLY@[87; 88) "}" WHITESPACE@[86; 87) "\n"
R_CURLY@[87; 88) "}"
WHITESPACE@[88; 89) "\n" WHITESPACE@[88; 89) "\n"
error 80: expected pattern error 80: expected pattern
error 80: expected FAT_ARROW error 80: expected FAT_ARROW

View file

@ -8,84 +8,85 @@ SOURCE_FILE@[0; 91)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 89) BLOCK_EXPR@[10; 89)
L_CURLY@[10; 11) "{" BLOCK@[10; 89)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
LET_STMT@[16; 27) WHITESPACE@[11; 16) "\n "
LET_KW@[16; 19) "let" LET_STMT@[16; 27)
WHITESPACE@[19; 20) " " LET_KW@[16; 19) "let"
BIND_PAT@[20; 27) WHITESPACE@[19; 20) " "
REF_KW@[20; 23) "ref" BIND_PAT@[20; 27)
WHITESPACE@[23; 24) " " REF_KW@[20; 23) "ref"
ERROR@[24; 27) WHITESPACE@[23; 24) " "
BOX_KW@[24; 27) "box" ERROR@[24; 27)
WHITESPACE@[27; 28) " " BOX_KW@[24; 27) "box"
EXPR_STMT@[28; 35) WHITESPACE@[27; 28) " "
BIN_EXPR@[28; 34) EXPR_STMT@[28; 35)
PATH_EXPR@[28; 29) BIN_EXPR@[28; 34)
PATH@[28; 29) PATH_EXPR@[28; 29)
PATH_SEGMENT@[28; 29) PATH@[28; 29)
NAME_REF@[28; 29) PATH_SEGMENT@[28; 29)
IDENT@[28; 29) "i" NAME_REF@[28; 29)
WHITESPACE@[29; 30) " " IDENT@[28; 29) "i"
EQ@[30; 31) "=" WHITESPACE@[29; 30) " "
WHITESPACE@[31; 32) " " EQ@[30; 31) "="
TUPLE_EXPR@[32; 34) WHITESPACE@[31; 32) " "
L_PAREN@[32; 33) "(" TUPLE_EXPR@[32; 34)
R_PAREN@[33; 34) ")" L_PAREN@[32; 33) "("
SEMI@[34; 35) ";" R_PAREN@[33; 34) ")"
WHITESPACE@[35; 40) "\n " SEMI@[34; 35) ";"
LET_STMT@[40; 51) WHITESPACE@[35; 40) "\n "
LET_KW@[40; 43) "let" LET_STMT@[40; 51)
WHITESPACE@[43; 44) " " LET_KW@[40; 43) "let"
BIND_PAT@[44; 51) WHITESPACE@[43; 44) " "
MUT_KW@[44; 47) "mut" BIND_PAT@[44; 51)
WHITESPACE@[47; 48) " " MUT_KW@[44; 47) "mut"
ERROR@[48; 51) WHITESPACE@[47; 48) " "
BOX_KW@[48; 51) "box" ERROR@[48; 51)
WHITESPACE@[51; 52) " " BOX_KW@[48; 51) "box"
EXPR_STMT@[52; 59) WHITESPACE@[51; 52) " "
BIN_EXPR@[52; 58) EXPR_STMT@[52; 59)
PATH_EXPR@[52; 53) BIN_EXPR@[52; 58)
PATH@[52; 53) PATH_EXPR@[52; 53)
PATH_SEGMENT@[52; 53) PATH@[52; 53)
NAME_REF@[52; 53) PATH_SEGMENT@[52; 53)
IDENT@[52; 53) "i" NAME_REF@[52; 53)
WHITESPACE@[53; 54) " " IDENT@[52; 53) "i"
EQ@[54; 55) "=" WHITESPACE@[53; 54) " "
WHITESPACE@[55; 56) " " EQ@[54; 55) "="
TUPLE_EXPR@[56; 58) WHITESPACE@[55; 56) " "
L_PAREN@[56; 57) "(" TUPLE_EXPR@[56; 58)
R_PAREN@[57; 58) ")" L_PAREN@[56; 57) "("
SEMI@[58; 59) ";" R_PAREN@[57; 58) ")"
WHITESPACE@[59; 64) "\n " SEMI@[58; 59) ";"
LET_STMT@[64; 79) WHITESPACE@[59; 64) "\n "
LET_KW@[64; 67) "let" LET_STMT@[64; 79)
WHITESPACE@[67; 68) " " LET_KW@[64; 67) "let"
BIND_PAT@[68; 79) WHITESPACE@[67; 68) " "
REF_KW@[68; 71) "ref" BIND_PAT@[68; 79)
WHITESPACE@[71; 72) " " REF_KW@[68; 71) "ref"
MUT_KW@[72; 75) "mut" WHITESPACE@[71; 72) " "
WHITESPACE@[75; 76) " " MUT_KW@[72; 75) "mut"
ERROR@[76; 79) WHITESPACE@[75; 76) " "
BOX_KW@[76; 79) "box" ERROR@[76; 79)
WHITESPACE@[79; 80) " " BOX_KW@[76; 79) "box"
EXPR_STMT@[80; 87) WHITESPACE@[79; 80) " "
BIN_EXPR@[80; 86) EXPR_STMT@[80; 87)
PATH_EXPR@[80; 81) BIN_EXPR@[80; 86)
PATH@[80; 81) PATH_EXPR@[80; 81)
PATH_SEGMENT@[80; 81) PATH@[80; 81)
NAME_REF@[80; 81) PATH_SEGMENT@[80; 81)
IDENT@[80; 81) "i" NAME_REF@[80; 81)
WHITESPACE@[81; 82) " " IDENT@[80; 81) "i"
EQ@[82; 83) "=" WHITESPACE@[81; 82) " "
WHITESPACE@[83; 84) " " EQ@[82; 83) "="
TUPLE_EXPR@[84; 86) WHITESPACE@[83; 84) " "
L_PAREN@[84; 85) "(" TUPLE_EXPR@[84; 86)
R_PAREN@[85; 86) ")" L_PAREN@[84; 85) "("
SEMI@[86; 87) ";" R_PAREN@[85; 86) ")"
WHITESPACE@[87; 88) "\n" SEMI@[86; 87) ";"
R_CURLY@[88; 89) "}" WHITESPACE@[87; 88) "\n"
R_CURLY@[88; 89) "}"
WHITESPACE@[89; 91) "\n\n" WHITESPACE@[89; 91) "\n\n"
error 24: expected a name error 24: expected a name
error 27: expected SEMI error 27: expected SEMI

View file

@ -8,19 +8,20 @@ SOURCE_FILE@[0; 30)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 29) BLOCK_EXPR@[10; 29)
L_CURLY@[10; 11) "{" BLOCK@[10; 29)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
EXPR_STMT@[16; 22) WHITESPACE@[11; 16) "\n "
ERROR@[16; 22) EXPR_STMT@[16; 22)
LABEL@[16; 22) ERROR@[16; 22)
LIFETIME@[16; 21) "\'loop" LABEL@[16; 22)
COLON@[21; 22) ":" LIFETIME@[16; 21) "\'loop"
WHITESPACE@[22; 23) " " COLON@[21; 22) ":"
IMPL_BLOCK@[23; 27) WHITESPACE@[22; 23) " "
IMPL_KW@[23; 27) "impl" IMPL_BLOCK@[23; 27)
WHITESPACE@[27; 28) "\n" IMPL_KW@[23; 27) "impl"
R_CURLY@[28; 29) "}" WHITESPACE@[27; 28) "\n"
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n" WHITESPACE@[29; 30) "\n"
error 22: expected a loop error 22: expected a loop
error 22: expected SEMI error 22: expected SEMI

View file

@ -7,9 +7,10 @@ SOURCE_FILE@[0; 33)
PARAM_LIST@[6; 8) PARAM_LIST@[6; 8)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
BLOCK@[8; 10) BLOCK_EXPR@[8; 10)
L_CURLY@[8; 9) "{" BLOCK@[8; 10)
R_CURLY@[9; 10) "}" L_CURLY@[8; 9) "{"
R_CURLY@[9; 10) "}"
WHITESPACE@[10; 11) " " WHITESPACE@[10; 11) " "
ERROR@[11; 17) ERROR@[11; 17)
UNSAFE_KW@[11; 17) "unsafe" UNSAFE_KW@[11; 17) "unsafe"
@ -27,9 +28,10 @@ SOURCE_FILE@[0; 33)
PARAM_LIST@[28; 30) PARAM_LIST@[28; 30)
L_PAREN@[28; 29) "(" L_PAREN@[28; 29) "("
R_PAREN@[29; 30) ")" R_PAREN@[29; 30) ")"
BLOCK@[30; 32) BLOCK_EXPR@[30; 32)
L_CURLY@[30; 31) "{" BLOCK@[30; 32)
R_CURLY@[31; 32) "}" L_CURLY@[30; 31) "{"
R_CURLY@[31; 32) "}"
WHITESPACE@[32; 33) "\n" WHITESPACE@[32; 33) "\n"
error 11: expected an item error 11: expected an item
error 18: expected an item error 18: expected an item

View file

@ -8,24 +8,25 @@ SOURCE_FILE@[0; 30)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 29) BLOCK_EXPR@[9; 29)
L_CURLY@[9; 10) "{" BLOCK@[9; 29)
WHITESPACE@[10; 11) " " L_CURLY@[9; 10) "{"
LET_STMT@[11; 27) WHITESPACE@[10; 11) " "
LET_KW@[11; 14) "let" LET_STMT@[11; 27)
WHITESPACE@[14; 15) " " LET_KW@[11; 14) "let"
PLACEHOLDER_PAT@[15; 16) WHITESPACE@[14; 15) " "
UNDERSCORE@[15; 16) "_" PLACEHOLDER_PAT@[15; 16)
WHITESPACE@[16; 17) " " UNDERSCORE@[15; 16) "_"
EQ@[17; 18) "=" WHITESPACE@[16; 17) " "
WHITESPACE@[18; 19) " " EQ@[17; 18) "="
BLOCK_EXPR@[19; 27) WHITESPACE@[18; 19) " "
ASYNC_KW@[19; 24) "async" BLOCK_EXPR@[19; 27)
WHITESPACE@[24; 25) " " ASYNC_KW@[19; 24) "async"
BLOCK@[25; 27) WHITESPACE@[24; 25) " "
L_CURLY@[25; 26) "{" BLOCK@[25; 27)
R_CURLY@[26; 27) "}" L_CURLY@[25; 26) "{"
WHITESPACE@[27; 28) " " R_CURLY@[26; 27) "}"
R_CURLY@[28; 29) "}" WHITESPACE@[27; 28) " "
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n" WHITESPACE@[29; 30) "\n"
error 27: expected SEMI error 27: expected SEMI

View file

@ -8,18 +8,19 @@ SOURCE_FILE@[0; 21)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 20) BLOCK_EXPR@[9; 20)
L_CURLY@[9; 10) "{" BLOCK@[9; 20)
WHITESPACE@[10; 11) " " L_CURLY@[9; 10) "{"
ERROR@[11; 14) WHITESPACE@[10; 11) " "
VISIBILITY@[11; 14) ERROR@[11; 14)
PUB_KW@[11; 14) "pub" VISIBILITY@[11; 14)
WHITESPACE@[14; 15) " " PUB_KW@[11; 14) "pub"
EXPR_STMT@[15; 18) WHITESPACE@[14; 15) " "
LITERAL@[15; 17) EXPR_STMT@[15; 18)
INT_NUMBER@[15; 17) "92" LITERAL@[15; 17)
SEMI@[17; 18) ";" INT_NUMBER@[15; 17) "92"
WHITESPACE@[18; 19) " " SEMI@[17; 18) ";"
R_CURLY@[19; 20) "}" WHITESPACE@[18; 19) " "
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n" WHITESPACE@[20; 21) "\n"
error 14: expected an item error 14: expected an item

View file

@ -8,48 +8,50 @@ SOURCE_FILE@[0; 48)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 47) BLOCK_EXPR@[9; 47)
L_CURLY@[9; 10) "{" BLOCK@[9; 47)
WHITESPACE@[10; 14) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[14; 25) WHITESPACE@[10; 14) "\n "
ATTR@[14; 18) EXPR_STMT@[14; 25)
POUND@[14; 15) "#" ATTR@[14; 18)
TOKEN_TREE@[15; 18) POUND@[14; 15) "#"
L_BRACK@[15; 16) "[" TOKEN_TREE@[15; 18)
IDENT@[16; 17) "A" L_BRACK@[15; 16) "["
R_BRACK@[17; 18) "]" IDENT@[16; 17) "A"
WHITESPACE@[18; 19) " " R_BRACK@[17; 18) "]"
BIN_EXPR@[19; 24) WHITESPACE@[18; 19) " "
LITERAL@[19; 20) BIN_EXPR@[19; 24)
INT_NUMBER@[19; 20) "1" LITERAL@[19; 20)
WHITESPACE@[20; 21) " " INT_NUMBER@[19; 20) "1"
PLUS@[21; 22) "+" WHITESPACE@[20; 21) " "
WHITESPACE@[22; 23) " " PLUS@[21; 22) "+"
LITERAL@[23; 24) WHITESPACE@[22; 23) " "
INT_NUMBER@[23; 24) "2" LITERAL@[23; 24)
SEMI@[24; 25) ";" INT_NUMBER@[23; 24) "2"
WHITESPACE@[25; 29) "\n " SEMI@[24; 25) ";"
EXPR_STMT@[29; 45) WHITESPACE@[25; 29) "\n "
ATTR@[29; 33) EXPR_STMT@[29; 45)
POUND@[29; 30) "#" ATTR@[29; 33)
TOKEN_TREE@[30; 33) POUND@[29; 30) "#"
L_BRACK@[30; 31) "[" TOKEN_TREE@[30; 33)
IDENT@[31; 32) "B" L_BRACK@[30; 31) "["
R_BRACK@[32; 33) "]" IDENT@[31; 32) "B"
WHITESPACE@[33; 34) " " R_BRACK@[32; 33) "]"
IF_EXPR@[34; 44) WHITESPACE@[33; 34) " "
IF_KW@[34; 36) "if" IF_EXPR@[34; 44)
WHITESPACE@[36; 37) " " IF_KW@[34; 36) "if"
CONDITION@[37; 41) WHITESPACE@[36; 37) " "
LITERAL@[37; 41) CONDITION@[37; 41)
TRUE_KW@[37; 41) "true" LITERAL@[37; 41)
WHITESPACE@[41; 42) " " TRUE_KW@[37; 41) "true"
BLOCK@[42; 44) WHITESPACE@[41; 42) " "
L_CURLY@[42; 43) "{" BLOCK_EXPR@[42; 44)
R_CURLY@[43; 44) "}" BLOCK@[42; 44)
SEMI@[44; 45) ";" L_CURLY@[42; 43) "{"
WHITESPACE@[45; 46) "\n" R_CURLY@[43; 44) "}"
R_CURLY@[46; 47) "}" SEMI@[44; 45) ";"
WHITESPACE@[45; 46) "\n"
R_CURLY@[46; 47) "}"
WHITESPACE@[47; 48) "\n" WHITESPACE@[47; 48) "\n"
error 24: attributes are not allowed on BIN_EXPR error 24: attributes are not allowed on BIN_EXPR
error 44: attributes are not allowed on IF_EXPR error 44: attributes are not allowed on IF_EXPR

View file

@ -8,45 +8,46 @@ SOURCE_FILE@[0; 47)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 46) BLOCK_EXPR@[9; 46)
L_CURLY@[9; 10) "{" BLOCK@[9; 46)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 20) WHITESPACE@[10; 15) "\n "
FIELD_EXPR@[15; 19) EXPR_STMT@[15; 20)
PATH_EXPR@[15; 16) FIELD_EXPR@[15; 19)
PATH@[15; 16) PATH_EXPR@[15; 16)
PATH_SEGMENT@[15; 16) PATH@[15; 16)
NAME_REF@[15; 16) PATH_SEGMENT@[15; 16)
IDENT@[15; 16) "x" NAME_REF@[15; 16)
DOT@[16; 17) "." IDENT@[15; 16) "x"
FLOAT_NUMBER@[17; 19) "0." DOT@[16; 17) "."
SEMI@[19; 20) ";" FLOAT_NUMBER@[17; 19) "0."
WHITESPACE@[20; 25) "\n " SEMI@[19; 20) ";"
EXPR_STMT@[25; 32) WHITESPACE@[20; 25) "\n "
FIELD_EXPR@[25; 31) EXPR_STMT@[25; 32)
PATH_EXPR@[25; 26) FIELD_EXPR@[25; 31)
PATH@[25; 26) PATH_EXPR@[25; 26)
PATH_SEGMENT@[25; 26) PATH@[25; 26)
NAME_REF@[25; 26) PATH_SEGMENT@[25; 26)
IDENT@[25; 26) "x" NAME_REF@[25; 26)
DOT@[26; 27) "." IDENT@[25; 26) "x"
NAME_REF@[27; 31) DOT@[26; 27) "."
INT_NUMBER@[27; 31) "1i32" NAME_REF@[27; 31)
SEMI@[31; 32) ";" INT_NUMBER@[27; 31) "1i32"
WHITESPACE@[32; 37) "\n " SEMI@[31; 32) ";"
EXPR_STMT@[37; 44) WHITESPACE@[32; 37) "\n "
FIELD_EXPR@[37; 43) EXPR_STMT@[37; 44)
PATH_EXPR@[37; 38) FIELD_EXPR@[37; 43)
PATH@[37; 38) PATH_EXPR@[37; 38)
PATH_SEGMENT@[37; 38) PATH@[37; 38)
NAME_REF@[37; 38) PATH_SEGMENT@[37; 38)
IDENT@[37; 38) "x" NAME_REF@[37; 38)
DOT@[38; 39) "." IDENT@[37; 38) "x"
NAME_REF@[39; 43) DOT@[38; 39) "."
INT_NUMBER@[39; 43) "0x01" NAME_REF@[39; 43)
SEMI@[43; 44) ";" INT_NUMBER@[39; 43) "0x01"
WHITESPACE@[44; 45) "\n" SEMI@[43; 44) ";"
R_CURLY@[45; 46) "}" WHITESPACE@[44; 45) "\n"
R_CURLY@[45; 46) "}"
WHITESPACE@[46; 47) "\n" WHITESPACE@[46; 47) "\n"
error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix

View file

@ -13,9 +13,10 @@ SOURCE_FILE@[0; 50)
L_PAREN@[19; 20) "(" L_PAREN@[19; 20) "("
R_PAREN@[20; 21) ")" R_PAREN@[20; 21) ")"
WHITESPACE@[21; 22) " " WHITESPACE@[21; 22) " "
BLOCK@[22; 24) BLOCK_EXPR@[22; 24)
L_CURLY@[22; 23) "{" BLOCK@[22; 24)
R_CURLY@[23; 24) "}" L_CURLY@[22; 23) "{"
R_CURLY@[23; 24) "}"
WHITESPACE@[24; 25) "\n" WHITESPACE@[24; 25) "\n"
ERROR@[25; 31) ERROR@[25; 31)
UNSAFE_KW@[25; 31) "unsafe" UNSAFE_KW@[25; 31) "unsafe"
@ -31,9 +32,10 @@ SOURCE_FILE@[0; 50)
L_PAREN@[44; 45) "(" L_PAREN@[44; 45) "("
R_PAREN@[45; 46) ")" R_PAREN@[45; 46) ")"
WHITESPACE@[46; 47) " " WHITESPACE@[46; 47) " "
BLOCK@[47; 49) BLOCK_EXPR@[47; 49)
L_CURLY@[47; 48) "{" BLOCK@[47; 49)
R_CURLY@[48; 49) "}" L_CURLY@[47; 48) "{"
R_CURLY@[48; 49) "}"
WHITESPACE@[49; 50) "\n" WHITESPACE@[49; 50) "\n"
error 5: expected existential, fn, trait or impl error 5: expected existential, fn, trait or impl
error 31: expected existential, fn, trait or impl error 31: expected existential, fn, trait or impl

View file

@ -44,9 +44,10 @@ SOURCE_FILE@[0; 62)
L_PAREN@[54; 55) "(" L_PAREN@[54; 55) "("
R_PAREN@[55; 56) ")" R_PAREN@[55; 56) ")"
WHITESPACE@[56; 57) " " WHITESPACE@[56; 57) " "
BLOCK@[57; 59) BLOCK_EXPR@[57; 59)
L_CURLY@[57; 58) "{" BLOCK@[57; 59)
R_CURLY@[58; 59) "}" L_CURLY@[57; 58) "{"
R_CURLY@[58; 59) "}"
WHITESPACE@[59; 60) "\n" WHITESPACE@[59; 60) "\n"
R_CURLY@[60; 61) "}" R_CURLY@[60; 61) "}"
WHITESPACE@[61; 62) "\n" WHITESPACE@[61; 62) "\n"

View file

@ -50,9 +50,10 @@ SOURCE_FILE@[0; 83)
L_PAREN@[56; 57) "(" L_PAREN@[56; 57) "("
R_PAREN@[57; 58) ")" R_PAREN@[57; 58) ")"
WHITESPACE@[58; 59) " " WHITESPACE@[58; 59) " "
BLOCK@[59; 61) BLOCK_EXPR@[59; 61)
L_CURLY@[59; 60) "{" BLOCK@[59; 61)
R_CURLY@[60; 61) "}" L_CURLY@[59; 60) "{"
R_CURLY@[60; 61) "}"
WHITESPACE@[61; 66) "\n " WHITESPACE@[61; 66) "\n "
FN_DEF@[66; 80) FN_DEF@[66; 80)
FN_KW@[66; 68) "fn" FN_KW@[66; 68) "fn"

View file

@ -54,8 +54,9 @@ SOURCE_FILE@[0; 49)
IDENT@[40; 43) "str" IDENT@[40; 43) "str"
R_PAREN@[43; 44) ")" R_PAREN@[43; 44) ")"
WHITESPACE@[44; 45) "\n" WHITESPACE@[44; 45) "\n"
BLOCK@[45; 48) BLOCK_EXPR@[45; 48)
L_CURLY@[45; 46) "{" BLOCK@[45; 48)
WHITESPACE@[46; 47) " " L_CURLY@[45; 46) "{"
R_CURLY@[47; 48) "}" WHITESPACE@[46; 47) " "
R_CURLY@[47; 48) "}"
WHITESPACE@[48; 49) "\n" WHITESPACE@[48; 49) "\n"

View file

@ -31,7 +31,8 @@ SOURCE_FILE@[0; 28)
PARAM_LIST@[23; 25) PARAM_LIST@[23; 25)
L_PAREN@[23; 24) "(" L_PAREN@[23; 24) "("
R_PAREN@[24; 25) ")" R_PAREN@[24; 25) ")"
BLOCK@[25; 27) BLOCK_EXPR@[25; 27)
L_CURLY@[25; 26) "{" BLOCK@[25; 27)
R_CURLY@[26; 27) "}" L_CURLY@[25; 26) "{"
R_CURLY@[26; 27) "}"
WHITESPACE@[27; 28) "\n" WHITESPACE@[27; 28) "\n"

View file

@ -22,9 +22,10 @@ SOURCE_FILE@[0; 128)
SELF_KW@[18; 22) "self" SELF_KW@[18; 22) "self"
R_PAREN@[22; 23) ")" R_PAREN@[22; 23) ")"
WHITESPACE@[23; 24) " " WHITESPACE@[23; 24) " "
BLOCK@[24; 26) BLOCK_EXPR@[24; 26)
L_CURLY@[24; 25) "{" BLOCK@[24; 26)
R_CURLY@[25; 26) "}" L_CURLY@[24; 25) "{"
R_CURLY@[25; 26) "}"
WHITESPACE@[26; 31) "\n " WHITESPACE@[26; 31) "\n "
FN_DEF@[31; 46) FN_DEF@[31; 46)
FN_KW@[31; 33) "fn" FN_KW@[31; 33) "fn"
@ -39,9 +40,10 @@ SOURCE_FILE@[0; 128)
COMMA@[41; 42) "," COMMA@[41; 42) ","
R_PAREN@[42; 43) ")" R_PAREN@[42; 43) ")"
WHITESPACE@[43; 44) " " WHITESPACE@[43; 44) " "
BLOCK@[44; 46) BLOCK_EXPR@[44; 46)
L_CURLY@[44; 45) "{" BLOCK@[44; 46)
R_CURLY@[45; 46) "}" L_CURLY@[44; 45) "{"
R_CURLY@[45; 46) "}"
WHITESPACE@[46; 51) "\n " WHITESPACE@[46; 51) "\n "
FN_DEF@[51; 69) FN_DEF@[51; 69)
FN_KW@[51; 53) "fn" FN_KW@[51; 53) "fn"
@ -58,9 +60,10 @@ SOURCE_FILE@[0; 128)
COMMA@[64; 65) "," COMMA@[64; 65) ","
R_PAREN@[65; 66) ")" R_PAREN@[65; 66) ")"
WHITESPACE@[66; 67) " " WHITESPACE@[66; 67) " "
BLOCK@[67; 69) BLOCK_EXPR@[67; 69)
L_CURLY@[67; 68) "{" BLOCK@[67; 69)
R_CURLY@[68; 69) "}" L_CURLY@[67; 68) "{"
R_CURLY@[68; 69) "}"
WHITESPACE@[69; 74) "\n " WHITESPACE@[69; 74) "\n "
FN_DEF@[74; 103) FN_DEF@[74; 103)
FN_KW@[74; 76) "fn" FN_KW@[74; 76) "fn"
@ -91,9 +94,10 @@ SOURCE_FILE@[0; 128)
IDENT@[96; 99) "i32" IDENT@[96; 99) "i32"
R_PAREN@[99; 100) ")" R_PAREN@[99; 100) ")"
WHITESPACE@[100; 101) " " WHITESPACE@[100; 101) " "
BLOCK@[101; 103) BLOCK_EXPR@[101; 103)
L_CURLY@[101; 102) "{" BLOCK@[101; 103)
R_CURLY@[102; 103) "}" L_CURLY@[101; 102) "{"
R_CURLY@[102; 103) "}"
WHITESPACE@[103; 108) "\n " WHITESPACE@[103; 108) "\n "
FN_DEF@[108; 125) FN_DEF@[108; 125)
FN_KW@[108; 110) "fn" FN_KW@[108; 110) "fn"
@ -108,9 +112,10 @@ SOURCE_FILE@[0; 128)
SELF_KW@[117; 121) "self" SELF_KW@[117; 121) "self"
R_PAREN@[121; 122) ")" R_PAREN@[121; 122) ")"
WHITESPACE@[122; 123) " " WHITESPACE@[122; 123) " "
BLOCK@[123; 125) BLOCK_EXPR@[123; 125)
L_CURLY@[123; 124) "{" BLOCK@[123; 125)
R_CURLY@[124; 125) "}" L_CURLY@[123; 124) "{"
R_CURLY@[124; 125) "}"
WHITESPACE@[125; 126) "\n" WHITESPACE@[125; 126) "\n"
R_CURLY@[126; 127) "}" R_CURLY@[126; 127) "}"
WHITESPACE@[127; 128) "\n" WHITESPACE@[127; 128) "\n"

View file

@ -8,88 +8,89 @@ SOURCE_FILE@[0; 103)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 102) BLOCK_EXPR@[9; 102)
L_CURLY@[9; 10) "{" BLOCK@[9; 102)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 33) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 33)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
PATH_PAT@[19; 27) WHITESPACE@[18; 19) " "
PATH@[19; 27) PATH_PAT@[19; 27)
PATH@[19; 22) PATH@[19; 27)
PATH_SEGMENT@[19; 22) PATH@[19; 22)
NAME_REF@[19; 22) PATH_SEGMENT@[19; 22)
IDENT@[19; 22) "foo" NAME_REF@[19; 22)
COLONCOLON@[22; 24) "::" IDENT@[19; 22) "foo"
PATH_SEGMENT@[24; 27) COLONCOLON@[22; 24) "::"
NAME_REF@[24; 27) PATH_SEGMENT@[24; 27)
IDENT@[24; 27) "Bar" NAME_REF@[24; 27)
WHITESPACE@[27; 28) " " IDENT@[24; 27) "Bar"
EQ@[28; 29) "=" WHITESPACE@[27; 28) " "
WHITESPACE@[29; 30) " " EQ@[28; 29) "="
TUPLE_EXPR@[30; 32) WHITESPACE@[29; 30) " "
L_PAREN@[30; 31) "(" TUPLE_EXPR@[30; 32)
R_PAREN@[31; 32) ")" L_PAREN@[30; 31) "("
SEMI@[32; 33) ";" R_PAREN@[31; 32) ")"
WHITESPACE@[33; 38) "\n " SEMI@[32; 33) ";"
LET_STMT@[38; 53) WHITESPACE@[33; 38) "\n "
LET_KW@[38; 41) "let" LET_STMT@[38; 53)
WHITESPACE@[41; 42) " " LET_KW@[38; 41) "let"
PATH_PAT@[42; 47) WHITESPACE@[41; 42) " "
PATH@[42; 47) PATH_PAT@[42; 47)
PATH_SEGMENT@[42; 47) PATH@[42; 47)
COLONCOLON@[42; 44) "::" PATH_SEGMENT@[42; 47)
NAME_REF@[44; 47) COLONCOLON@[42; 44) "::"
IDENT@[44; 47) "Bar" NAME_REF@[44; 47)
WHITESPACE@[47; 48) " " IDENT@[44; 47) "Bar"
EQ@[48; 49) "=" WHITESPACE@[47; 48) " "
WHITESPACE@[49; 50) " " EQ@[48; 49) "="
TUPLE_EXPR@[50; 52) WHITESPACE@[49; 50) " "
L_PAREN@[50; 51) "(" TUPLE_EXPR@[50; 52)
R_PAREN@[51; 52) ")" L_PAREN@[50; 51) "("
SEMI@[52; 53) ";" R_PAREN@[51; 52) ")"
WHITESPACE@[53; 58) "\n " SEMI@[52; 53) ";"
LET_STMT@[58; 78) WHITESPACE@[53; 58) "\n "
LET_KW@[58; 61) "let" LET_STMT@[58; 78)
WHITESPACE@[61; 62) " " LET_KW@[58; 61) "let"
RECORD_PAT@[62; 72) WHITESPACE@[61; 62) " "
PATH@[62; 65) RECORD_PAT@[62; 72)
PATH_SEGMENT@[62; 65) PATH@[62; 65)
NAME_REF@[62; 65) PATH_SEGMENT@[62; 65)
IDENT@[62; 65) "Bar" NAME_REF@[62; 65)
WHITESPACE@[65; 66) " " IDENT@[62; 65) "Bar"
RECORD_FIELD_PAT_LIST@[66; 72) WHITESPACE@[65; 66) " "
L_CURLY@[66; 67) "{" RECORD_FIELD_PAT_LIST@[66; 72)
WHITESPACE@[67; 68) " " L_CURLY@[66; 67) "{"
DOTDOT@[68; 70) ".." WHITESPACE@[67; 68) " "
WHITESPACE@[70; 71) " " DOTDOT@[68; 70) ".."
R_CURLY@[71; 72) "}" WHITESPACE@[70; 71) " "
WHITESPACE@[72; 73) " " R_CURLY@[71; 72) "}"
EQ@[73; 74) "=" WHITESPACE@[72; 73) " "
WHITESPACE@[74; 75) " " EQ@[73; 74) "="
TUPLE_EXPR@[75; 77) WHITESPACE@[74; 75) " "
L_PAREN@[75; 76) "(" TUPLE_EXPR@[75; 77)
R_PAREN@[76; 77) ")" L_PAREN@[75; 76) "("
SEMI@[77; 78) ";" R_PAREN@[76; 77) ")"
WHITESPACE@[78; 83) "\n " SEMI@[77; 78) ";"
LET_STMT@[83; 100) WHITESPACE@[78; 83) "\n "
LET_KW@[83; 86) "let" LET_STMT@[83; 100)
WHITESPACE@[86; 87) " " LET_KW@[83; 86) "let"
TUPLE_STRUCT_PAT@[87; 94) WHITESPACE@[86; 87) " "
PATH@[87; 90) TUPLE_STRUCT_PAT@[87; 94)
PATH_SEGMENT@[87; 90) PATH@[87; 90)
NAME_REF@[87; 90) PATH_SEGMENT@[87; 90)
IDENT@[87; 90) "Bar" NAME_REF@[87; 90)
L_PAREN@[90; 91) "(" IDENT@[87; 90) "Bar"
DOTDOT@[91; 93) ".." L_PAREN@[90; 91) "("
R_PAREN@[93; 94) ")" DOTDOT@[91; 93) ".."
WHITESPACE@[94; 95) " " R_PAREN@[93; 94) ")"
EQ@[95; 96) "=" WHITESPACE@[94; 95) " "
WHITESPACE@[96; 97) " " EQ@[95; 96) "="
TUPLE_EXPR@[97; 99) WHITESPACE@[96; 97) " "
L_PAREN@[97; 98) "(" TUPLE_EXPR@[97; 99)
R_PAREN@[98; 99) ")" L_PAREN@[97; 98) "("
SEMI@[99; 100) ";" R_PAREN@[98; 99) ")"
WHITESPACE@[100; 101) "\n" SEMI@[99; 100) ";"
R_CURLY@[101; 102) "}" WHITESPACE@[100; 101) "\n"
R_CURLY@[101; 102) "}"
WHITESPACE@[102; 103) "\n" WHITESPACE@[102; 103) "\n"

View file

@ -8,17 +8,19 @@ SOURCE_FILE@[0; 26)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 25) BLOCK_EXPR@[9; 25)
L_CURLY@[9; 10) "{" BLOCK@[9; 25)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 23) WHITESPACE@[10; 15) "\n "
LOOP_EXPR@[15; 22) EXPR_STMT@[15; 23)
LOOP_KW@[15; 19) "loop" LOOP_EXPR@[15; 22)
WHITESPACE@[19; 20) " " LOOP_KW@[15; 19) "loop"
BLOCK@[20; 22) WHITESPACE@[19; 20) " "
L_CURLY@[20; 21) "{" BLOCK_EXPR@[20; 22)
R_CURLY@[21; 22) "}" BLOCK@[20; 22)
SEMI@[22; 23) ";" L_CURLY@[20; 21) "{"
WHITESPACE@[23; 24) "\n" R_CURLY@[21; 22) "}"
R_CURLY@[24; 25) "}" SEMI@[22; 23) ";"
WHITESPACE@[23; 24) "\n"
R_CURLY@[24; 25) "}"
WHITESPACE@[25; 26) "\n" WHITESPACE@[25; 26) "\n"

View file

@ -8,52 +8,53 @@ SOURCE_FILE@[0; 48)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 47) BLOCK_EXPR@[9; 47)
L_CURLY@[9; 10) "{" BLOCK@[9; 47)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 21) WHITESPACE@[10; 15) "\n "
FIELD_EXPR@[15; 20) EXPR_STMT@[15; 21)
PATH_EXPR@[15; 16) FIELD_EXPR@[15; 20)
PATH@[15; 16) PATH_EXPR@[15; 16)
PATH_SEGMENT@[15; 16) PATH@[15; 16)
NAME_REF@[15; 16) PATH_SEGMENT@[15; 16)
IDENT@[15; 16) "x" NAME_REF@[15; 16)
DOT@[16; 17) "." IDENT@[15; 16) "x"
NAME_REF@[17; 20) DOT@[16; 17) "."
IDENT@[17; 20) "foo" NAME_REF@[17; 20)
SEMI@[20; 21) ";" IDENT@[17; 20) "foo"
WHITESPACE@[21; 26) "\n " SEMI@[20; 21) ";"
EXPR_STMT@[26; 34) WHITESPACE@[21; 26) "\n "
FIELD_EXPR@[26; 33) EXPR_STMT@[26; 34)
FIELD_EXPR@[26; 29) FIELD_EXPR@[26; 33)
PATH_EXPR@[26; 27) FIELD_EXPR@[26; 29)
PATH@[26; 27) PATH_EXPR@[26; 27)
PATH_SEGMENT@[26; 27) PATH@[26; 27)
NAME_REF@[26; 27) PATH_SEGMENT@[26; 27)
IDENT@[26; 27) "x" NAME_REF@[26; 27)
DOT@[27; 28) "." IDENT@[26; 27) "x"
NAME_REF@[28; 29) DOT@[27; 28) "."
INT_NUMBER@[28; 29) "0" NAME_REF@[28; 29)
DOT@[29; 30) "." INT_NUMBER@[28; 29) "0"
NAME_REF@[30; 33) DOT@[29; 30) "."
IDENT@[30; 33) "bar" NAME_REF@[30; 33)
SEMI@[33; 34) ";" IDENT@[30; 33) "bar"
WHITESPACE@[34; 39) "\n " SEMI@[33; 34) ";"
EXPR_STMT@[39; 45) WHITESPACE@[34; 39) "\n "
CALL_EXPR@[39; 44) EXPR_STMT@[39; 45)
FIELD_EXPR@[39; 42) CALL_EXPR@[39; 44)
PATH_EXPR@[39; 40) FIELD_EXPR@[39; 42)
PATH@[39; 40) PATH_EXPR@[39; 40)
PATH_SEGMENT@[39; 40) PATH@[39; 40)
NAME_REF@[39; 40) PATH_SEGMENT@[39; 40)
IDENT@[39; 40) "x" NAME_REF@[39; 40)
DOT@[40; 41) "." IDENT@[39; 40) "x"
NAME_REF@[41; 42) DOT@[40; 41) "."
INT_NUMBER@[41; 42) "0" NAME_REF@[41; 42)
ARG_LIST@[42; 44) INT_NUMBER@[41; 42) "0"
L_PAREN@[42; 43) "(" ARG_LIST@[42; 44)
R_PAREN@[43; 44) ")" L_PAREN@[42; 43) "("
SEMI@[44; 45) ";" R_PAREN@[43; 44) ")"
WHITESPACE@[45; 46) "\n" SEMI@[44; 45) ";"
R_CURLY@[46; 47) "}" WHITESPACE@[45; 46) "\n"
R_CURLY@[46; 47) "}"
WHITESPACE@[47; 48) "\n" WHITESPACE@[47; 48) "\n"

View file

@ -8,28 +8,30 @@ SOURCE_FILE@[0; 69)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 68) BLOCK_EXPR@[9; 68)
L_CURLY@[9; 10) "{" BLOCK@[9; 68)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LOOP_EXPR@[15; 66) WHITESPACE@[10; 15) "\n "
LOOP_KW@[15; 19) "loop" LOOP_EXPR@[15; 66)
WHITESPACE@[19; 20) " " LOOP_KW@[15; 19) "loop"
BLOCK@[20; 66) WHITESPACE@[19; 20) " "
L_CURLY@[20; 21) "{" BLOCK_EXPR@[20; 66)
WHITESPACE@[21; 30) "\n " BLOCK@[20; 66)
EXPR_STMT@[30; 39) L_CURLY@[20; 21) "{"
CONTINUE_EXPR@[30; 38) WHITESPACE@[21; 30) "\n "
CONTINUE_KW@[30; 38) "continue" EXPR_STMT@[30; 39)
SEMI@[38; 39) ";" CONTINUE_EXPR@[30; 38)
WHITESPACE@[39; 48) "\n " CONTINUE_KW@[30; 38) "continue"
EXPR_STMT@[48; 60) SEMI@[38; 39) ";"
CONTINUE_EXPR@[48; 59) WHITESPACE@[39; 48) "\n "
CONTINUE_KW@[48; 56) "continue" EXPR_STMT@[48; 60)
WHITESPACE@[56; 57) " " CONTINUE_EXPR@[48; 59)
LIFETIME@[57; 59) "\'l" CONTINUE_KW@[48; 56) "continue"
SEMI@[59; 60) ";" WHITESPACE@[56; 57) " "
WHITESPACE@[60; 65) "\n " LIFETIME@[57; 59) "\'l"
R_CURLY@[65; 66) "}" SEMI@[59; 60) ";"
WHITESPACE@[66; 67) "\n" WHITESPACE@[60; 65) "\n "
R_CURLY@[67; 68) "}" R_CURLY@[65; 66) "}"
WHITESPACE@[66; 67) "\n"
R_CURLY@[67; 68) "}"
WHITESPACE@[68; 69) "\n" WHITESPACE@[68; 69) "\n"

View file

@ -31,9 +31,10 @@ SOURCE_FILE@[0; 69)
IDENT@[25; 29) "Self" IDENT@[25; 29) "Self"
R_PAREN@[29; 30) ")" R_PAREN@[29; 30) ")"
WHITESPACE@[30; 31) " " WHITESPACE@[30; 31) " "
BLOCK@[31; 33) BLOCK_EXPR@[31; 33)
L_CURLY@[31; 32) "{" BLOCK@[31; 33)
R_CURLY@[32; 33) "}" L_CURLY@[31; 32) "{"
R_CURLY@[32; 33) "}"
WHITESPACE@[33; 38) "\n " WHITESPACE@[33; 38) "\n "
FN_DEF@[38; 66) FN_DEF@[38; 66)
FN_KW@[38; 40) "fn" FN_KW@[38; 40) "fn"
@ -64,9 +65,10 @@ SOURCE_FILE@[0; 69)
R_ANGLE@[61; 62) ">" R_ANGLE@[61; 62) ">"
R_PAREN@[62; 63) ")" R_PAREN@[62; 63) ")"
WHITESPACE@[63; 64) " " WHITESPACE@[63; 64) " "
BLOCK@[64; 66) BLOCK_EXPR@[64; 66)
L_CURLY@[64; 65) "{" BLOCK@[64; 66)
R_CURLY@[65; 66) "}" L_CURLY@[64; 65) "{"
R_CURLY@[65; 66) "}"
WHITESPACE@[66; 67) "\n" WHITESPACE@[66; 67) "\n"
R_CURLY@[67; 68) "}" R_CURLY@[67; 68) "}"
WHITESPACE@[68; 69) "\n" WHITESPACE@[68; 69) "\n"

View file

@ -8,37 +8,38 @@ SOURCE_FILE@[0; 44)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 43) BLOCK_EXPR@[9; 43)
L_CURLY@[9; 10) "{" BLOCK@[9; 43)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 20) WHITESPACE@[10; 15) "\n "
PREFIX_EXPR@[15; 19) EXPR_STMT@[15; 20)
STAR@[15; 16) "*" PREFIX_EXPR@[15; 19)
PREFIX_EXPR@[16; 19) STAR@[15; 16) "*"
STAR@[16; 17) "*" PREFIX_EXPR@[16; 19)
REF_EXPR@[17; 19) STAR@[16; 17) "*"
AMP@[17; 18) "&" REF_EXPR@[17; 19)
LITERAL@[18; 19) AMP@[17; 18) "&"
INT_NUMBER@[18; 19) "1" LITERAL@[18; 19)
SEMI@[19; 20) ";" INT_NUMBER@[18; 19) "1"
WHITESPACE@[20; 25) "\n " SEMI@[19; 20) ";"
EXPR_STMT@[25; 32) WHITESPACE@[20; 25) "\n "
PREFIX_EXPR@[25; 31) EXPR_STMT@[25; 32)
EXCL@[25; 26) "!" PREFIX_EXPR@[25; 31)
PREFIX_EXPR@[26; 31) EXCL@[25; 26) "!"
EXCL@[26; 27) "!" PREFIX_EXPR@[26; 31)
LITERAL@[27; 31) EXCL@[26; 27) "!"
TRUE_KW@[27; 31) "true" LITERAL@[27; 31)
SEMI@[31; 32) ";" TRUE_KW@[27; 31) "true"
WHITESPACE@[32; 37) "\n " SEMI@[31; 32) ";"
EXPR_STMT@[37; 41) WHITESPACE@[32; 37) "\n "
PREFIX_EXPR@[37; 40) EXPR_STMT@[37; 41)
MINUS@[37; 38) "-" PREFIX_EXPR@[37; 40)
PREFIX_EXPR@[38; 40) MINUS@[37; 38) "-"
MINUS@[38; 39) "-" PREFIX_EXPR@[38; 40)
LITERAL@[39; 40) MINUS@[38; 39) "-"
INT_NUMBER@[39; 40) "1" LITERAL@[39; 40)
SEMI@[40; 41) ";" INT_NUMBER@[39; 40) "1"
WHITESPACE@[41; 42) "\n" SEMI@[40; 41) ";"
R_CURLY@[42; 43) "}" WHITESPACE@[41; 42) "\n"
R_CURLY@[42; 43) "}"
WHITESPACE@[43; 44) "\n" WHITESPACE@[43; 44) "\n"

View file

@ -54,9 +54,10 @@ SOURCE_FILE@[0; 89)
L_PAREN@[60; 61) "(" L_PAREN@[60; 61) "("
R_PAREN@[61; 62) ")" R_PAREN@[61; 62) ")"
WHITESPACE@[62; 63) " " WHITESPACE@[62; 63) " "
BLOCK@[63; 65) BLOCK_EXPR@[63; 65)
L_CURLY@[63; 64) "{" BLOCK@[63; 65)
R_CURLY@[64; 65) "}" L_CURLY@[63; 64) "{"
R_CURLY@[64; 65) "}"
WHITESPACE@[65; 70) "\n " WHITESPACE@[65; 70) "\n "
FN_DEF@[70; 86) FN_DEF@[70; 86)
FN_KW@[70; 72) "fn" FN_KW@[70; 72) "fn"
@ -70,9 +71,10 @@ SOURCE_FILE@[0; 89)
SELF_KW@[78; 82) "self" SELF_KW@[78; 82) "self"
R_PAREN@[82; 83) ")" R_PAREN@[82; 83) ")"
WHITESPACE@[83; 84) " " WHITESPACE@[83; 84) " "
BLOCK@[84; 86) BLOCK_EXPR@[84; 86)
L_CURLY@[84; 85) "{" BLOCK@[84; 86)
R_CURLY@[85; 86) "}" L_CURLY@[84; 85) "{"
R_CURLY@[85; 86) "}"
WHITESPACE@[86; 87) "\n" WHITESPACE@[86; 87) "\n"
R_CURLY@[87; 88) "}" R_CURLY@[87; 88) "}"
WHITESPACE@[88; 89) "\n" WHITESPACE@[88; 89) "\n"

View file

@ -8,33 +8,34 @@ SOURCE_FILE@[0; 39)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 38) BLOCK_EXPR@[10; 38)
L_CURLY@[10; 11) "{" BLOCK@[10; 38)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
LET_STMT@[16; 36) WHITESPACE@[11; 16) "\n "
LET_KW@[16; 19) "let" LET_STMT@[16; 36)
WHITESPACE@[19; 20) " " LET_KW@[16; 19) "let"
SLICE_PAT@[20; 30) WHITESPACE@[19; 20) " "
L_BRACK@[20; 21) "[" SLICE_PAT@[20; 30)
BIND_PAT@[21; 22) L_BRACK@[20; 21) "["
NAME@[21; 22) BIND_PAT@[21; 22)
IDENT@[21; 22) "a" NAME@[21; 22)
COMMA@[22; 23) "," IDENT@[21; 22) "a"
WHITESPACE@[23; 24) " " COMMA@[22; 23) ","
BIND_PAT@[24; 25) WHITESPACE@[23; 24) " "
NAME@[24; 25) BIND_PAT@[24; 25)
IDENT@[24; 25) "b" NAME@[24; 25)
COMMA@[25; 26) "," IDENT@[24; 25) "b"
WHITESPACE@[26; 27) " " COMMA@[25; 26) ","
DOTDOT@[27; 29) ".." WHITESPACE@[26; 27) " "
R_BRACK@[29; 30) "]" DOTDOT@[27; 29) ".."
WHITESPACE@[30; 31) " " R_BRACK@[29; 30) "]"
EQ@[31; 32) "=" WHITESPACE@[30; 31) " "
WHITESPACE@[32; 33) " " EQ@[31; 32) "="
ARRAY_EXPR@[33; 35) WHITESPACE@[32; 33) " "
L_BRACK@[33; 34) "[" ARRAY_EXPR@[33; 35)
R_BRACK@[34; 35) "]" L_BRACK@[33; 34) "["
SEMI@[35; 36) ";" R_BRACK@[34; 35) "]"
WHITESPACE@[36; 37) "\n" SEMI@[35; 36) ";"
R_CURLY@[37; 38) "}" WHITESPACE@[36; 37) "\n"
R_CURLY@[37; 38) "}"
WHITESPACE@[38; 39) "\n" WHITESPACE@[38; 39) "\n"

View file

@ -8,96 +8,97 @@ SOURCE_FILE@[0; 97)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 96) BLOCK_EXPR@[9; 96)
L_CURLY@[9; 10) "{" BLOCK@[9; 96)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 28) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 28)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
TUPLE_STRUCT_PAT@[19; 22) WHITESPACE@[18; 19) " "
PATH@[19; 20) TUPLE_STRUCT_PAT@[19; 22)
PATH_SEGMENT@[19; 20) PATH@[19; 20)
NAME_REF@[19; 20) PATH_SEGMENT@[19; 20)
IDENT@[19; 20) "S" NAME_REF@[19; 20)
L_PAREN@[20; 21) "(" IDENT@[19; 20) "S"
R_PAREN@[21; 22) ")" L_PAREN@[20; 21) "("
WHITESPACE@[22; 23) " " R_PAREN@[21; 22) ")"
EQ@[23; 24) "=" WHITESPACE@[22; 23) " "
WHITESPACE@[24; 25) " " EQ@[23; 24) "="
TUPLE_EXPR@[25; 27) WHITESPACE@[24; 25) " "
L_PAREN@[25; 26) "(" TUPLE_EXPR@[25; 27)
R_PAREN@[26; 27) ")" L_PAREN@[25; 26) "("
SEMI@[27; 28) ";" R_PAREN@[26; 27) ")"
WHITESPACE@[28; 33) "\n " SEMI@[27; 28) ";"
LET_STMT@[33; 47) WHITESPACE@[28; 33) "\n "
LET_KW@[33; 36) "let" LET_STMT@[33; 47)
WHITESPACE@[36; 37) " " LET_KW@[33; 36) "let"
TUPLE_STRUCT_PAT@[37; 41) WHITESPACE@[36; 37) " "
PATH@[37; 38) TUPLE_STRUCT_PAT@[37; 41)
PATH_SEGMENT@[37; 38) PATH@[37; 38)
NAME_REF@[37; 38) PATH_SEGMENT@[37; 38)
IDENT@[37; 38) "S" NAME_REF@[37; 38)
L_PAREN@[38; 39) "(" IDENT@[37; 38) "S"
PLACEHOLDER_PAT@[39; 40) L_PAREN@[38; 39) "("
UNDERSCORE@[39; 40) "_" PLACEHOLDER_PAT@[39; 40)
R_PAREN@[40; 41) ")" UNDERSCORE@[39; 40) "_"
WHITESPACE@[41; 42) " " R_PAREN@[40; 41) ")"
EQ@[42; 43) "=" WHITESPACE@[41; 42) " "
WHITESPACE@[43; 44) " " EQ@[42; 43) "="
TUPLE_EXPR@[44; 46) WHITESPACE@[43; 44) " "
L_PAREN@[44; 45) "(" TUPLE_EXPR@[44; 46)
R_PAREN@[45; 46) ")" L_PAREN@[44; 45) "("
SEMI@[46; 47) ";" R_PAREN@[45; 46) ")"
WHITESPACE@[47; 52) "\n " SEMI@[46; 47) ";"
LET_STMT@[52; 67) WHITESPACE@[47; 52) "\n "
LET_KW@[52; 55) "let" LET_STMT@[52; 67)
WHITESPACE@[55; 56) " " LET_KW@[52; 55) "let"
TUPLE_STRUCT_PAT@[56; 61) WHITESPACE@[55; 56) " "
PATH@[56; 57) TUPLE_STRUCT_PAT@[56; 61)
PATH_SEGMENT@[56; 57) PATH@[56; 57)
NAME_REF@[56; 57) PATH_SEGMENT@[56; 57)
IDENT@[56; 57) "S" NAME_REF@[56; 57)
L_PAREN@[57; 58) "(" IDENT@[56; 57) "S"
PLACEHOLDER_PAT@[58; 59) L_PAREN@[57; 58) "("
UNDERSCORE@[58; 59) "_" PLACEHOLDER_PAT@[58; 59)
COMMA@[59; 60) "," UNDERSCORE@[58; 59) "_"
R_PAREN@[60; 61) ")" COMMA@[59; 60) ","
WHITESPACE@[61; 62) " " R_PAREN@[60; 61) ")"
EQ@[62; 63) "=" WHITESPACE@[61; 62) " "
WHITESPACE@[63; 64) " " EQ@[62; 63) "="
TUPLE_EXPR@[64; 66) WHITESPACE@[63; 64) " "
L_PAREN@[64; 65) "(" TUPLE_EXPR@[64; 66)
R_PAREN@[65; 66) ")" L_PAREN@[64; 65) "("
SEMI@[66; 67) ";" R_PAREN@[65; 66) ")"
WHITESPACE@[67; 72) "\n " SEMI@[66; 67) ";"
LET_STMT@[72; 94) WHITESPACE@[67; 72) "\n "
LET_KW@[72; 75) "let" LET_STMT@[72; 94)
WHITESPACE@[75; 76) " " LET_KW@[72; 75) "let"
TUPLE_STRUCT_PAT@[76; 88) WHITESPACE@[75; 76) " "
PATH@[76; 77) TUPLE_STRUCT_PAT@[76; 88)
PATH_SEGMENT@[76; 77) PATH@[76; 77)
NAME_REF@[76; 77) PATH_SEGMENT@[76; 77)
IDENT@[76; 77) "S" NAME_REF@[76; 77)
L_PAREN@[77; 78) "(" IDENT@[76; 77) "S"
PLACEHOLDER_PAT@[78; 79) L_PAREN@[77; 78) "("
UNDERSCORE@[78; 79) "_" PLACEHOLDER_PAT@[78; 79)
COMMA@[79; 80) "," UNDERSCORE@[78; 79) "_"
WHITESPACE@[80; 81) " " COMMA@[79; 80) ","
DOTDOT@[81; 83) ".." WHITESPACE@[80; 81) " "
WHITESPACE@[83; 84) " " DOTDOT@[81; 83) ".."
COMMA@[84; 85) "," WHITESPACE@[83; 84) " "
WHITESPACE@[85; 86) " " COMMA@[84; 85) ","
BIND_PAT@[86; 87) WHITESPACE@[85; 86) " "
NAME@[86; 87) BIND_PAT@[86; 87)
IDENT@[86; 87) "x" NAME@[86; 87)
R_PAREN@[87; 88) ")" IDENT@[86; 87) "x"
WHITESPACE@[88; 89) " " R_PAREN@[87; 88) ")"
EQ@[89; 90) "=" WHITESPACE@[88; 89) " "
WHITESPACE@[90; 91) " " EQ@[89; 90) "="
TUPLE_EXPR@[91; 93) WHITESPACE@[90; 91) " "
L_PAREN@[91; 92) "(" TUPLE_EXPR@[91; 93)
R_PAREN@[92; 93) ")" L_PAREN@[91; 92) "("
SEMI@[93; 94) ";" R_PAREN@[92; 93) ")"
WHITESPACE@[94; 95) "\n" SEMI@[93; 94) ";"
R_CURLY@[95; 96) "}" WHITESPACE@[94; 95) "\n"
R_CURLY@[95; 96) "}"
WHITESPACE@[96; 97) "\n" WHITESPACE@[96; 97) "\n"

View file

@ -8,42 +8,43 @@ SOURCE_FILE@[0; 52)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 51) BLOCK_EXPR@[10; 51)
L_CURLY@[10; 11) "{" BLOCK@[10; 51)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
LET_STMT@[16; 28) WHITESPACE@[11; 16) "\n "
LET_KW@[16; 19) "let" LET_STMT@[16; 28)
WHITESPACE@[19; 20) " " LET_KW@[16; 19) "let"
REF_PAT@[20; 22) WHITESPACE@[19; 20) " "
AMP@[20; 21) "&" REF_PAT@[20; 22)
BIND_PAT@[21; 22) AMP@[20; 21) "&"
NAME@[21; 22) BIND_PAT@[21; 22)
IDENT@[21; 22) "a" NAME@[21; 22)
WHITESPACE@[22; 23) " " IDENT@[21; 22) "a"
EQ@[23; 24) "=" WHITESPACE@[22; 23) " "
WHITESPACE@[24; 25) " " EQ@[23; 24) "="
TUPLE_EXPR@[25; 27) WHITESPACE@[24; 25) " "
L_PAREN@[25; 26) "(" TUPLE_EXPR@[25; 27)
R_PAREN@[26; 27) ")" L_PAREN@[25; 26) "("
SEMI@[27; 28) ";" R_PAREN@[26; 27) ")"
WHITESPACE@[28; 33) "\n " SEMI@[27; 28) ";"
LET_STMT@[33; 49) WHITESPACE@[28; 33) "\n "
LET_KW@[33; 36) "let" LET_STMT@[33; 49)
WHITESPACE@[36; 37) " " LET_KW@[33; 36) "let"
REF_PAT@[37; 43) WHITESPACE@[36; 37) " "
AMP@[37; 38) "&" REF_PAT@[37; 43)
MUT_KW@[38; 41) "mut" AMP@[37; 38) "&"
WHITESPACE@[41; 42) " " MUT_KW@[38; 41) "mut"
BIND_PAT@[42; 43) WHITESPACE@[41; 42) " "
NAME@[42; 43) BIND_PAT@[42; 43)
IDENT@[42; 43) "b" NAME@[42; 43)
WHITESPACE@[43; 44) " " IDENT@[42; 43) "b"
EQ@[44; 45) "=" WHITESPACE@[43; 44) " "
WHITESPACE@[45; 46) " " EQ@[44; 45) "="
TUPLE_EXPR@[46; 48) WHITESPACE@[45; 46) " "
L_PAREN@[46; 47) "(" TUPLE_EXPR@[46; 48)
R_PAREN@[47; 48) ")" L_PAREN@[46; 47) "("
SEMI@[48; 49) ";" R_PAREN@[47; 48) ")"
WHITESPACE@[49; 50) "\n" SEMI@[48; 49) ";"
R_CURLY@[50; 51) "}" WHITESPACE@[49; 50) "\n"
R_CURLY@[50; 51) "}"
WHITESPACE@[51; 52) "\n" WHITESPACE@[51; 52) "\n"

View file

@ -8,82 +8,83 @@ SOURCE_FILE@[0; 89)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 88) BLOCK_EXPR@[9; 88)
L_CURLY@[9; 10) "{" BLOCK@[9; 88)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 25) WHITESPACE@[10; 15) "\n "
CAST_EXPR@[15; 24) EXPR_STMT@[15; 25)
LITERAL@[15; 17) CAST_EXPR@[15; 24)
INT_NUMBER@[15; 17) "82" LITERAL@[15; 17)
WHITESPACE@[17; 18) " " INT_NUMBER@[15; 17) "82"
AS_KW@[18; 20) "as" WHITESPACE@[17; 18) " "
WHITESPACE@[20; 21) " " AS_KW@[18; 20) "as"
PATH_TYPE@[21; 24) WHITESPACE@[20; 21) " "
PATH@[21; 24) PATH_TYPE@[21; 24)
PATH_SEGMENT@[21; 24) PATH@[21; 24)
NAME_REF@[21; 24) PATH_SEGMENT@[21; 24)
IDENT@[21; 24) "i32" NAME_REF@[21; 24)
SEMI@[24; 25) ";" IDENT@[21; 24) "i32"
WHITESPACE@[25; 30) "\n " SEMI@[24; 25) ";"
EXPR_STMT@[30; 43) WHITESPACE@[25; 30) "\n "
BIN_EXPR@[30; 42) EXPR_STMT@[30; 43)
CAST_EXPR@[30; 38) BIN_EXPR@[30; 42)
LITERAL@[30; 32) CAST_EXPR@[30; 38)
INT_NUMBER@[30; 32) "81" LITERAL@[30; 32)
WHITESPACE@[32; 33) " " INT_NUMBER@[30; 32) "81"
AS_KW@[33; 35) "as" WHITESPACE@[32; 33) " "
WHITESPACE@[35; 36) " " AS_KW@[33; 35) "as"
PATH_TYPE@[36; 38) WHITESPACE@[35; 36) " "
PATH@[36; 38) PATH_TYPE@[36; 38)
PATH_SEGMENT@[36; 38) PATH@[36; 38)
NAME_REF@[36; 38) PATH_SEGMENT@[36; 38)
IDENT@[36; 38) "i8" NAME_REF@[36; 38)
WHITESPACE@[38; 39) " " IDENT@[36; 38) "i8"
PLUS@[39; 40) "+" WHITESPACE@[38; 39) " "
WHITESPACE@[40; 41) " " PLUS@[39; 40) "+"
LITERAL@[41; 42) WHITESPACE@[40; 41) " "
INT_NUMBER@[41; 42) "1" LITERAL@[41; 42)
SEMI@[42; 43) ";" INT_NUMBER@[41; 42) "1"
WHITESPACE@[43; 48) "\n " SEMI@[42; 43) ";"
EXPR_STMT@[48; 62) WHITESPACE@[43; 48) "\n "
BIN_EXPR@[48; 61) EXPR_STMT@[48; 62)
CAST_EXPR@[48; 57) BIN_EXPR@[48; 61)
LITERAL@[48; 50) CAST_EXPR@[48; 57)
INT_NUMBER@[48; 50) "79" LITERAL@[48; 50)
WHITESPACE@[50; 51) " " INT_NUMBER@[48; 50) "79"
AS_KW@[51; 53) "as" WHITESPACE@[50; 51) " "
WHITESPACE@[53; 54) " " AS_KW@[51; 53) "as"
PATH_TYPE@[54; 57) WHITESPACE@[53; 54) " "
PATH@[54; 57) PATH_TYPE@[54; 57)
PATH_SEGMENT@[54; 57) PATH@[54; 57)
NAME_REF@[54; 57) PATH_SEGMENT@[54; 57)
IDENT@[54; 57) "i16" NAME_REF@[54; 57)
WHITESPACE@[57; 58) " " IDENT@[54; 57) "i16"
MINUS@[58; 59) "-" WHITESPACE@[57; 58) " "
WHITESPACE@[59; 60) " " MINUS@[58; 59) "-"
LITERAL@[60; 61) WHITESPACE@[59; 60) " "
INT_NUMBER@[60; 61) "1" LITERAL@[60; 61)
SEMI@[61; 62) ";" INT_NUMBER@[60; 61) "1"
WHITESPACE@[62; 67) "\n " SEMI@[61; 62) ";"
EXPR_STMT@[67; 86) WHITESPACE@[62; 67) "\n "
BIN_EXPR@[67; 85) EXPR_STMT@[67; 86)
CAST_EXPR@[67; 77) BIN_EXPR@[67; 85)
LITERAL@[67; 71) CAST_EXPR@[67; 77)
INT_NUMBER@[67; 71) "0x36" LITERAL@[67; 71)
WHITESPACE@[71; 72) " " INT_NUMBER@[67; 71) "0x36"
AS_KW@[72; 74) "as" WHITESPACE@[71; 72) " "
WHITESPACE@[74; 75) " " AS_KW@[72; 74) "as"
PATH_TYPE@[75; 77) WHITESPACE@[74; 75) " "
PATH@[75; 77) PATH_TYPE@[75; 77)
PATH_SEGMENT@[75; 77) PATH@[75; 77)
NAME_REF@[75; 77) PATH_SEGMENT@[75; 77)
IDENT@[75; 77) "u8" NAME_REF@[75; 77)
WHITESPACE@[77; 78) " " IDENT@[75; 77) "u8"
LTEQ@[78; 80) "<=" WHITESPACE@[77; 78) " "
WHITESPACE@[80; 81) " " LTEQ@[78; 80) "<="
LITERAL@[81; 85) WHITESPACE@[80; 81) " "
INT_NUMBER@[81; 85) "0x37" LITERAL@[81; 85)
SEMI@[85; 86) ";" INT_NUMBER@[81; 85) "0x37"
WHITESPACE@[86; 87) "\n" SEMI@[85; 86) ";"
R_CURLY@[87; 88) "}" WHITESPACE@[86; 87) "\n"
R_CURLY@[87; 88) "}"
WHITESPACE@[88; 89) "\n" WHITESPACE@[88; 89) "\n"

View file

@ -8,38 +8,40 @@ SOURCE_FILE@[0; 197)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 37) BLOCK_EXPR@[9; 37)
L_CURLY@[9; 10) "{" BLOCK@[9; 37)
WHITESPACE@[10; 11) " " L_CURLY@[9; 10) "{"
IF_EXPR@[11; 35) WHITESPACE@[10; 11) " "
IF_KW@[11; 13) "if" IF_EXPR@[11; 35)
WHITESPACE@[13; 14) " " IF_KW@[11; 13) "if"
CONDITION@[14; 32) WHITESPACE@[13; 14) " "
LET_KW@[14; 17) "let" CONDITION@[14; 32)
WHITESPACE@[17; 18) " " LET_KW@[14; 17) "let"
TUPLE_STRUCT_PAT@[18; 25) WHITESPACE@[17; 18) " "
PATH@[18; 22) TUPLE_STRUCT_PAT@[18; 25)
PATH_SEGMENT@[18; 22) PATH@[18; 22)
NAME_REF@[18; 22) PATH_SEGMENT@[18; 22)
IDENT@[18; 22) "Some" NAME_REF@[18; 22)
L_PAREN@[22; 23) "(" IDENT@[18; 22) "Some"
PLACEHOLDER_PAT@[23; 24) L_PAREN@[22; 23) "("
UNDERSCORE@[23; 24) "_" PLACEHOLDER_PAT@[23; 24)
R_PAREN@[24; 25) ")" UNDERSCORE@[23; 24) "_"
WHITESPACE@[25; 26) " " R_PAREN@[24; 25) ")"
EQ@[26; 27) "=" WHITESPACE@[25; 26) " "
WHITESPACE@[27; 28) " " EQ@[26; 27) "="
PATH_EXPR@[28; 32) WHITESPACE@[27; 28) " "
PATH@[28; 32) PATH_EXPR@[28; 32)
PATH_SEGMENT@[28; 32) PATH@[28; 32)
NAME_REF@[28; 32) PATH_SEGMENT@[28; 32)
IDENT@[28; 32) "None" NAME_REF@[28; 32)
WHITESPACE@[32; 33) " " IDENT@[28; 32) "None"
BLOCK@[33; 35) WHITESPACE@[32; 33) " "
L_CURLY@[33; 34) "{" BLOCK_EXPR@[33; 35)
R_CURLY@[34; 35) "}" BLOCK@[33; 35)
WHITESPACE@[35; 36) " " L_CURLY@[33; 34) "{"
R_CURLY@[36; 37) "}" R_CURLY@[34; 35) "}"
WHITESPACE@[35; 36) " "
R_CURLY@[36; 37) "}"
WHITESPACE@[37; 38) "\n" WHITESPACE@[37; 38) "\n"
FN_DEF@[38; 196) FN_DEF@[38; 196)
FN_KW@[38; 40) "fn" FN_KW@[38; 40) "fn"
@ -50,151 +52,156 @@ SOURCE_FILE@[0; 197)
L_PAREN@[44; 45) "(" L_PAREN@[44; 45) "("
R_PAREN@[45; 46) ")" R_PAREN@[45; 46) ")"
WHITESPACE@[46; 47) " " WHITESPACE@[46; 47) " "
BLOCK@[47; 196) BLOCK_EXPR@[47; 196)
L_CURLY@[47; 48) "{" BLOCK@[47; 196)
WHITESPACE@[48; 53) "\n " L_CURLY@[47; 48) "{"
EXPR_STMT@[53; 87) WHITESPACE@[48; 53) "\n "
IF_EXPR@[53; 87) EXPR_STMT@[53; 87)
IF_KW@[53; 55) "if" IF_EXPR@[53; 87)
WHITESPACE@[55; 56) " " IF_KW@[53; 55) "if"
CONDITION@[56; 84) WHITESPACE@[55; 56) " "
LET_KW@[56; 59) "let" CONDITION@[56; 84)
WHITESPACE@[59; 60) " " LET_KW@[56; 59) "let"
TUPLE_STRUCT_PAT@[60; 67) WHITESPACE@[59; 60) " "
PATH@[60; 64) TUPLE_STRUCT_PAT@[60; 67)
PATH_SEGMENT@[60; 64) PATH@[60; 64)
NAME_REF@[60; 64) PATH_SEGMENT@[60; 64)
IDENT@[60; 64) "Some" NAME_REF@[60; 64)
L_PAREN@[64; 65) "(" IDENT@[60; 64) "Some"
PLACEHOLDER_PAT@[65; 66) L_PAREN@[64; 65) "("
UNDERSCORE@[65; 66) "_" PLACEHOLDER_PAT@[65; 66)
R_PAREN@[66; 67) ")" UNDERSCORE@[65; 66) "_"
WHITESPACE@[67; 68) " " R_PAREN@[66; 67) ")"
PIPE@[68; 69) "|" WHITESPACE@[67; 68) " "
WHITESPACE@[69; 70) " " PIPE@[68; 69) "|"
TUPLE_STRUCT_PAT@[70; 77) WHITESPACE@[69; 70) " "
PATH@[70; 74) TUPLE_STRUCT_PAT@[70; 77)
PATH_SEGMENT@[70; 74) PATH@[70; 74)
NAME_REF@[70; 74) PATH_SEGMENT@[70; 74)
IDENT@[70; 74) "Some" NAME_REF@[70; 74)
L_PAREN@[74; 75) "(" IDENT@[70; 74) "Some"
PLACEHOLDER_PAT@[75; 76) L_PAREN@[74; 75) "("
UNDERSCORE@[75; 76) "_" PLACEHOLDER_PAT@[75; 76)
R_PAREN@[76; 77) ")" UNDERSCORE@[75; 76) "_"
WHITESPACE@[77; 78) " " R_PAREN@[76; 77) ")"
EQ@[78; 79) "=" WHITESPACE@[77; 78) " "
WHITESPACE@[79; 80) " " EQ@[78; 79) "="
PATH_EXPR@[80; 84) WHITESPACE@[79; 80) " "
PATH@[80; 84) PATH_EXPR@[80; 84)
PATH_SEGMENT@[80; 84) PATH@[80; 84)
NAME_REF@[80; 84) PATH_SEGMENT@[80; 84)
IDENT@[80; 84) "None" NAME_REF@[80; 84)
WHITESPACE@[84; 85) " " IDENT@[80; 84) "None"
BLOCK@[85; 87) WHITESPACE@[84; 85) " "
L_CURLY@[85; 86) "{" BLOCK_EXPR@[85; 87)
R_CURLY@[86; 87) "}" BLOCK@[85; 87)
WHITESPACE@[87; 92) "\n " L_CURLY@[85; 86) "{"
EXPR_STMT@[92; 118) R_CURLY@[86; 87) "}"
IF_EXPR@[92; 118) WHITESPACE@[87; 92) "\n "
IF_KW@[92; 94) "if" EXPR_STMT@[92; 118)
WHITESPACE@[94; 95) " " IF_EXPR@[92; 118)
CONDITION@[95; 115) IF_KW@[92; 94) "if"
LET_KW@[95; 98) "let" WHITESPACE@[94; 95) " "
WHITESPACE@[98; 99) " " CONDITION@[95; 115)
PIPE@[99; 100) "|" LET_KW@[95; 98) "let"
WHITESPACE@[100; 101) " " WHITESPACE@[98; 99) " "
TUPLE_STRUCT_PAT@[101; 108) PIPE@[99; 100) "|"
PATH@[101; 105) WHITESPACE@[100; 101) " "
PATH_SEGMENT@[101; 105) TUPLE_STRUCT_PAT@[101; 108)
NAME_REF@[101; 105) PATH@[101; 105)
IDENT@[101; 105) "Some" PATH_SEGMENT@[101; 105)
L_PAREN@[105; 106) "(" NAME_REF@[101; 105)
PLACEHOLDER_PAT@[106; 107) IDENT@[101; 105) "Some"
UNDERSCORE@[106; 107) "_" L_PAREN@[105; 106) "("
R_PAREN@[107; 108) ")" PLACEHOLDER_PAT@[106; 107)
WHITESPACE@[108; 109) " " UNDERSCORE@[106; 107) "_"
EQ@[109; 110) "=" R_PAREN@[107; 108) ")"
WHITESPACE@[110; 111) " " WHITESPACE@[108; 109) " "
PATH_EXPR@[111; 115) EQ@[109; 110) "="
PATH@[111; 115) WHITESPACE@[110; 111) " "
PATH_SEGMENT@[111; 115) PATH_EXPR@[111; 115)
NAME_REF@[111; 115) PATH@[111; 115)
IDENT@[111; 115) "None" PATH_SEGMENT@[111; 115)
WHITESPACE@[115; 116) " " NAME_REF@[111; 115)
BLOCK@[116; 118) IDENT@[111; 115) "None"
L_CURLY@[116; 117) "{" WHITESPACE@[115; 116) " "
R_CURLY@[117; 118) "}" BLOCK_EXPR@[116; 118)
WHITESPACE@[118; 123) "\n " BLOCK@[116; 118)
EXPR_STMT@[123; 160) L_CURLY@[116; 117) "{"
WHILE_EXPR@[123; 160) R_CURLY@[117; 118) "}"
WHILE_KW@[123; 128) "while" WHITESPACE@[118; 123) "\n "
WHITESPACE@[128; 129) " " EXPR_STMT@[123; 160)
CONDITION@[129; 157) WHILE_EXPR@[123; 160)
LET_KW@[129; 132) "let" WHILE_KW@[123; 128) "while"
WHITESPACE@[132; 133) " " WHITESPACE@[128; 129) " "
TUPLE_STRUCT_PAT@[133; 140) CONDITION@[129; 157)
PATH@[133; 137) LET_KW@[129; 132) "let"
PATH_SEGMENT@[133; 137) WHITESPACE@[132; 133) " "
NAME_REF@[133; 137) TUPLE_STRUCT_PAT@[133; 140)
IDENT@[133; 137) "Some" PATH@[133; 137)
L_PAREN@[137; 138) "(" PATH_SEGMENT@[133; 137)
PLACEHOLDER_PAT@[138; 139) NAME_REF@[133; 137)
UNDERSCORE@[138; 139) "_" IDENT@[133; 137) "Some"
R_PAREN@[139; 140) ")" L_PAREN@[137; 138) "("
WHITESPACE@[140; 141) " " PLACEHOLDER_PAT@[138; 139)
PIPE@[141; 142) "|" UNDERSCORE@[138; 139) "_"
WHITESPACE@[142; 143) " " R_PAREN@[139; 140) ")"
TUPLE_STRUCT_PAT@[143; 150) WHITESPACE@[140; 141) " "
PATH@[143; 147) PIPE@[141; 142) "|"
PATH_SEGMENT@[143; 147) WHITESPACE@[142; 143) " "
NAME_REF@[143; 147) TUPLE_STRUCT_PAT@[143; 150)
IDENT@[143; 147) "Some" PATH@[143; 147)
L_PAREN@[147; 148) "(" PATH_SEGMENT@[143; 147)
PLACEHOLDER_PAT@[148; 149) NAME_REF@[143; 147)
UNDERSCORE@[148; 149) "_" IDENT@[143; 147) "Some"
R_PAREN@[149; 150) ")" L_PAREN@[147; 148) "("
WHITESPACE@[150; 151) " " PLACEHOLDER_PAT@[148; 149)
EQ@[151; 152) "=" UNDERSCORE@[148; 149) "_"
WHITESPACE@[152; 153) " " R_PAREN@[149; 150) ")"
PATH_EXPR@[153; 157) WHITESPACE@[150; 151) " "
PATH@[153; 157) EQ@[151; 152) "="
PATH_SEGMENT@[153; 157) WHITESPACE@[152; 153) " "
NAME_REF@[153; 157) PATH_EXPR@[153; 157)
IDENT@[153; 157) "None" PATH@[153; 157)
WHITESPACE@[157; 158) " " PATH_SEGMENT@[153; 157)
BLOCK@[158; 160) NAME_REF@[153; 157)
L_CURLY@[158; 159) "{" IDENT@[153; 157) "None"
R_CURLY@[159; 160) "}" WHITESPACE@[157; 158) " "
WHITESPACE@[160; 165) "\n " BLOCK_EXPR@[158; 160)
WHILE_EXPR@[165; 194) BLOCK@[158; 160)
WHILE_KW@[165; 170) "while" L_CURLY@[158; 159) "{"
WHITESPACE@[170; 171) " " R_CURLY@[159; 160) "}"
CONDITION@[171; 191) WHITESPACE@[160; 165) "\n "
LET_KW@[171; 174) "let" WHILE_EXPR@[165; 194)
WHITESPACE@[174; 175) " " WHILE_KW@[165; 170) "while"
PIPE@[175; 176) "|" WHITESPACE@[170; 171) " "
WHITESPACE@[176; 177) " " CONDITION@[171; 191)
TUPLE_STRUCT_PAT@[177; 184) LET_KW@[171; 174) "let"
PATH@[177; 181) WHITESPACE@[174; 175) " "
PATH_SEGMENT@[177; 181) PIPE@[175; 176) "|"
NAME_REF@[177; 181) WHITESPACE@[176; 177) " "
IDENT@[177; 181) "Some" TUPLE_STRUCT_PAT@[177; 184)
L_PAREN@[181; 182) "(" PATH@[177; 181)
PLACEHOLDER_PAT@[182; 183) PATH_SEGMENT@[177; 181)
UNDERSCORE@[182; 183) "_" NAME_REF@[177; 181)
R_PAREN@[183; 184) ")" IDENT@[177; 181) "Some"
WHITESPACE@[184; 185) " " L_PAREN@[181; 182) "("
EQ@[185; 186) "=" PLACEHOLDER_PAT@[182; 183)
WHITESPACE@[186; 187) " " UNDERSCORE@[182; 183) "_"
PATH_EXPR@[187; 191) R_PAREN@[183; 184) ")"
PATH@[187; 191) WHITESPACE@[184; 185) " "
PATH_SEGMENT@[187; 191) EQ@[185; 186) "="
NAME_REF@[187; 191) WHITESPACE@[186; 187) " "
IDENT@[187; 191) "None" PATH_EXPR@[187; 191)
WHITESPACE@[191; 192) " " PATH@[187; 191)
BLOCK@[192; 194) PATH_SEGMENT@[187; 191)
L_CURLY@[192; 193) "{" NAME_REF@[187; 191)
R_CURLY@[193; 194) "}" IDENT@[187; 191) "None"
WHITESPACE@[194; 195) "\n" WHITESPACE@[191; 192) " "
R_CURLY@[195; 196) "}" BLOCK_EXPR@[192; 194)
BLOCK@[192; 194)
L_CURLY@[192; 193) "{"
R_CURLY@[193; 194) "}"
WHITESPACE@[194; 195) "\n"
R_CURLY@[195; 196) "}"
WHITESPACE@[196; 197) "\n" WHITESPACE@[196; 197) "\n"

View file

@ -8,59 +8,62 @@ SOURCE_FILE@[0; 70)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 69) BLOCK_EXPR@[9; 69)
L_CURLY@[9; 10) "{" BLOCK@[9; 69)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 29) WHITESPACE@[10; 15) "\n "
WHILE_EXPR@[15; 28) EXPR_STMT@[15; 29)
WHILE_KW@[15; 20) "while" WHILE_EXPR@[15; 28)
WHITESPACE@[20; 21) " " WHILE_KW@[15; 20) "while"
CONDITION@[21; 25) WHITESPACE@[20; 21) " "
LITERAL@[21; 25) CONDITION@[21; 25)
TRUE_KW@[21; 25) "true" LITERAL@[21; 25)
WHITESPACE@[25; 26) " " TRUE_KW@[21; 25) "true"
BLOCK@[26; 28) WHITESPACE@[25; 26) " "
L_CURLY@[26; 27) "{" BLOCK_EXPR@[26; 28)
R_CURLY@[27; 28) "}" BLOCK@[26; 28)
SEMI@[28; 29) ";" L_CURLY@[26; 27) "{"
WHITESPACE@[29; 34) "\n " R_CURLY@[27; 28) "}"
EXPR_STMT@[34; 67) SEMI@[28; 29) ";"
WHILE_EXPR@[34; 66) WHITESPACE@[29; 34) "\n "
WHILE_KW@[34; 39) "while" EXPR_STMT@[34; 67)
WHITESPACE@[39; 40) " " WHILE_EXPR@[34; 66)
CONDITION@[40; 63) WHILE_KW@[34; 39) "while"
LET_KW@[40; 43) "let" WHITESPACE@[39; 40) " "
WHITESPACE@[43; 44) " " CONDITION@[40; 63)
TUPLE_STRUCT_PAT@[44; 51) LET_KW@[40; 43) "let"
PATH@[44; 48) WHITESPACE@[43; 44) " "
PATH_SEGMENT@[44; 48) TUPLE_STRUCT_PAT@[44; 51)
NAME_REF@[44; 48) PATH@[44; 48)
IDENT@[44; 48) "Some" PATH_SEGMENT@[44; 48)
L_PAREN@[48; 49) "(" NAME_REF@[44; 48)
BIND_PAT@[49; 50) IDENT@[44; 48) "Some"
NAME@[49; 50) L_PAREN@[48; 49) "("
IDENT@[49; 50) "x" BIND_PAT@[49; 50)
R_PAREN@[50; 51) ")" NAME@[49; 50)
WHITESPACE@[51; 52) " " IDENT@[49; 50) "x"
EQ@[52; 53) "=" R_PAREN@[50; 51) ")"
WHITESPACE@[53; 54) " " WHITESPACE@[51; 52) " "
METHOD_CALL_EXPR@[54; 63) EQ@[52; 53) "="
PATH_EXPR@[54; 56) WHITESPACE@[53; 54) " "
PATH@[54; 56) METHOD_CALL_EXPR@[54; 63)
PATH_SEGMENT@[54; 56) PATH_EXPR@[54; 56)
NAME_REF@[54; 56) PATH@[54; 56)
IDENT@[54; 56) "it" PATH_SEGMENT@[54; 56)
DOT@[56; 57) "." NAME_REF@[54; 56)
NAME_REF@[57; 61) IDENT@[54; 56) "it"
IDENT@[57; 61) "next" DOT@[56; 57) "."
ARG_LIST@[61; 63) NAME_REF@[57; 61)
L_PAREN@[61; 62) "(" IDENT@[57; 61) "next"
R_PAREN@[62; 63) ")" ARG_LIST@[61; 63)
WHITESPACE@[63; 64) " " L_PAREN@[61; 62) "("
BLOCK@[64; 66) R_PAREN@[62; 63) ")"
L_CURLY@[64; 65) "{" WHITESPACE@[63; 64) " "
R_CURLY@[65; 66) "}" BLOCK_EXPR@[64; 66)
SEMI@[66; 67) ";" BLOCK@[64; 66)
WHITESPACE@[67; 68) "\n" L_CURLY@[64; 65) "{"
R_CURLY@[68; 69) "}" R_CURLY@[65; 66) "}"
SEMI@[66; 67) ";"
WHITESPACE@[67; 68) "\n"
R_CURLY@[68; 69) "}"
WHITESPACE@[69; 70) "\n" WHITESPACE@[69; 70) "\n"

View file

@ -8,46 +8,48 @@ SOURCE_FILE@[0; 102)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 101) BLOCK_EXPR@[9; 101)
L_CURLY@[9; 10) "{" BLOCK@[9; 101)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LOOP_EXPR@[15; 99) WHITESPACE@[10; 15) "\n "
LOOP_KW@[15; 19) "loop" LOOP_EXPR@[15; 99)
WHITESPACE@[19; 20) " " LOOP_KW@[15; 19) "loop"
BLOCK@[20; 99) WHITESPACE@[19; 20) " "
L_CURLY@[20; 21) "{" BLOCK_EXPR@[20; 99)
WHITESPACE@[21; 30) "\n " BLOCK@[20; 99)
EXPR_STMT@[30; 36) L_CURLY@[20; 21) "{"
BREAK_EXPR@[30; 35) WHITESPACE@[21; 30) "\n "
BREAK_KW@[30; 35) "break" EXPR_STMT@[30; 36)
SEMI@[35; 36) ";" BREAK_EXPR@[30; 35)
WHITESPACE@[36; 45) "\n " BREAK_KW@[30; 35) "break"
EXPR_STMT@[45; 54) SEMI@[35; 36) ";"
BREAK_EXPR@[45; 53) WHITESPACE@[36; 45) "\n "
BREAK_KW@[45; 50) "break" EXPR_STMT@[45; 54)
WHITESPACE@[50; 51) " " BREAK_EXPR@[45; 53)
LIFETIME@[51; 53) "\'l" BREAK_KW@[45; 50) "break"
SEMI@[53; 54) ";" WHITESPACE@[50; 51) " "
WHITESPACE@[54; 63) "\n " LIFETIME@[51; 53) "\'l"
EXPR_STMT@[63; 72) SEMI@[53; 54) ";"
BREAK_EXPR@[63; 71) WHITESPACE@[54; 63) "\n "
BREAK_KW@[63; 68) "break" EXPR_STMT@[63; 72)
WHITESPACE@[68; 69) " " BREAK_EXPR@[63; 71)
LITERAL@[69; 71) BREAK_KW@[63; 68) "break"
INT_NUMBER@[69; 71) "92" WHITESPACE@[68; 69) " "
SEMI@[71; 72) ";" LITERAL@[69; 71)
WHITESPACE@[72; 81) "\n " INT_NUMBER@[69; 71) "92"
EXPR_STMT@[81; 93) SEMI@[71; 72) ";"
BREAK_EXPR@[81; 92) WHITESPACE@[72; 81) "\n "
BREAK_KW@[81; 86) "break" EXPR_STMT@[81; 93)
WHITESPACE@[86; 87) " " BREAK_EXPR@[81; 92)
LIFETIME@[87; 89) "\'l" BREAK_KW@[81; 86) "break"
WHITESPACE@[89; 90) " " WHITESPACE@[86; 87) " "
LITERAL@[90; 92) LIFETIME@[87; 89) "\'l"
INT_NUMBER@[90; 92) "92" WHITESPACE@[89; 90) " "
SEMI@[92; 93) ";" LITERAL@[90; 92)
WHITESPACE@[93; 98) "\n " INT_NUMBER@[90; 92) "92"
R_CURLY@[98; 99) "}" SEMI@[92; 93) ";"
WHITESPACE@[99; 100) "\n" WHITESPACE@[93; 98) "\n "
R_CURLY@[100; 101) "}" R_CURLY@[98; 99) "}"
WHITESPACE@[99; 100) "\n"
R_CURLY@[100; 101) "}"
WHITESPACE@[101; 102) "\n" WHITESPACE@[101; 102) "\n"

View file

@ -15,7 +15,8 @@ SOURCE_FILE@[0; 30)
L_PAREN@[24; 25) "(" L_PAREN@[24; 25) "("
R_PAREN@[25; 26) ")" R_PAREN@[25; 26) ")"
WHITESPACE@[26; 27) " " WHITESPACE@[26; 27) " "
BLOCK@[27; 29) BLOCK_EXPR@[27; 29)
L_CURLY@[27; 28) "{" BLOCK@[27; 29)
R_CURLY@[28; 29) "}" L_CURLY@[27; 28) "{"
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n" WHITESPACE@[29; 30) "\n"

View file

@ -41,38 +41,39 @@ SOURCE_FILE@[0; 71)
L_PAREN@[33; 34) "(" L_PAREN@[33; 34) "("
R_PAREN@[34; 35) ")" R_PAREN@[34; 35) ")"
WHITESPACE@[35; 36) " " WHITESPACE@[35; 36) " "
BLOCK@[36; 70) BLOCK_EXPR@[36; 70)
L_CURLY@[36; 37) "{" BLOCK@[36; 70)
WHITESPACE@[37; 38) " " L_CURLY@[36; 37) "{"
EXPR_STMT@[38; 68) WHITESPACE@[37; 38) " "
CALL_EXPR@[38; 67) EXPR_STMT@[38; 68)
PATH_EXPR@[38; 65) CALL_EXPR@[38; 67)
PATH@[38; 65) PATH_EXPR@[38; 65)
PATH@[38; 56) PATH@[38; 65)
PATH_SEGMENT@[38; 56) PATH@[38; 56)
L_ANGLE@[38; 39) "<" PATH_SEGMENT@[38; 56)
PATH_TYPE@[39; 44) L_ANGLE@[38; 39) "<"
PATH@[39; 44) PATH_TYPE@[39; 44)
PATH_SEGMENT@[39; 44) PATH@[39; 44)
NAME_REF@[39; 44) PATH_SEGMENT@[39; 44)
IDENT@[39; 44) "usize" NAME_REF@[39; 44)
WHITESPACE@[44; 45) " " IDENT@[39; 44) "usize"
AS_KW@[45; 47) "as" WHITESPACE@[44; 45) " "
WHITESPACE@[47; 48) " " AS_KW@[45; 47) "as"
PATH_TYPE@[48; 55) WHITESPACE@[47; 48) " "
PATH@[48; 55) PATH_TYPE@[48; 55)
PATH_SEGMENT@[48; 55) PATH@[48; 55)
NAME_REF@[48; 55) PATH_SEGMENT@[48; 55)
IDENT@[48; 55) "Default" NAME_REF@[48; 55)
R_ANGLE@[55; 56) ">" IDENT@[48; 55) "Default"
COLONCOLON@[56; 58) "::" R_ANGLE@[55; 56) ">"
PATH_SEGMENT@[58; 65) COLONCOLON@[56; 58) "::"
NAME_REF@[58; 65) PATH_SEGMENT@[58; 65)
IDENT@[58; 65) "default" NAME_REF@[58; 65)
ARG_LIST@[65; 67) IDENT@[58; 65) "default"
L_PAREN@[65; 66) "(" ARG_LIST@[65; 67)
R_PAREN@[66; 67) ")" L_PAREN@[65; 66) "("
SEMI@[67; 68) ";" R_PAREN@[66; 67) ")"
WHITESPACE@[68; 69) " " SEMI@[67; 68) ";"
R_CURLY@[69; 70) "}" WHITESPACE@[68; 69) " "
R_CURLY@[69; 70) "}"
WHITESPACE@[70; 71) "\n" WHITESPACE@[70; 71) "\n"

View file

@ -8,21 +8,22 @@ SOURCE_FILE@[0; 21)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 20) BLOCK_EXPR@[9; 20)
L_CURLY@[9; 10) "{" BLOCK@[9; 20)
WHITESPACE@[10; 11) " " L_CURLY@[9; 10) "{"
EXPR_STMT@[11; 18) WHITESPACE@[10; 11) " "
INDEX_EXPR@[11; 17) EXPR_STMT@[11; 18)
PATH_EXPR@[11; 13) INDEX_EXPR@[11; 17)
PATH@[11; 13) PATH_EXPR@[11; 13)
PATH_SEGMENT@[11; 13) PATH@[11; 13)
NAME_REF@[11; 13) PATH_SEGMENT@[11; 13)
IDENT@[11; 13) "xs" NAME_REF@[11; 13)
L_BRACK@[13; 14) "[" IDENT@[11; 13) "xs"
RANGE_EXPR@[14; 16) L_BRACK@[13; 14) "["
DOTDOT@[14; 16) ".." RANGE_EXPR@[14; 16)
R_BRACK@[16; 17) "]" DOTDOT@[14; 16) ".."
SEMI@[17; 18) ";" R_BRACK@[16; 17) "]"
WHITESPACE@[18; 19) " " SEMI@[17; 18) ";"
R_CURLY@[19; 20) "}" WHITESPACE@[18; 19) " "
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n" WHITESPACE@[20; 21) "\n"

View file

@ -11,10 +11,11 @@ SOURCE_FILE@[0; 71)
L_PAREN@[13; 14) "(" L_PAREN@[13; 14) "("
R_PAREN@[14; 15) ")" R_PAREN@[14; 15) ")"
WHITESPACE@[15; 16) " " WHITESPACE@[15; 16) " "
BLOCK@[16; 19) BLOCK_EXPR@[16; 19)
L_CURLY@[16; 17) "{" BLOCK@[16; 19)
WHITESPACE@[17; 18) " " L_CURLY@[16; 17) "{"
R_CURLY@[18; 19) "}" WHITESPACE@[17; 18) " "
R_CURLY@[18; 19) "}"
WHITESPACE@[19; 20) "\n" WHITESPACE@[19; 20) "\n"
STRUCT_DEF@[20; 49) STRUCT_DEF@[20; 49)
STRUCT_KW@[20; 26) "struct" STRUCT_KW@[20; 26) "struct"

View file

@ -8,140 +8,141 @@ SOURCE_FILE@[0; 118)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 117) BLOCK_EXPR@[9; 117)
L_CURLY@[9; 10) "{" BLOCK@[9; 117)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 27) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 27)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
PLACEHOLDER_PAT@[19; 20) WHITESPACE@[18; 19) " "
UNDERSCORE@[19; 20) "_" PLACEHOLDER_PAT@[19; 20)
WHITESPACE@[20; 21) " " UNDERSCORE@[19; 20) "_"
EQ@[21; 22) "=" WHITESPACE@[20; 21) " "
WHITESPACE@[22; 23) " " EQ@[21; 22) "="
CALL_EXPR@[23; 26) WHITESPACE@[22; 23) " "
PATH_EXPR@[23; 24) CALL_EXPR@[23; 26)
PATH@[23; 24) PATH_EXPR@[23; 24)
PATH_SEGMENT@[23; 24) PATH@[23; 24)
NAME_REF@[23; 24) PATH_SEGMENT@[23; 24)
IDENT@[23; 24) "f" NAME_REF@[23; 24)
ARG_LIST@[24; 26) IDENT@[23; 24) "f"
L_PAREN@[24; 25) "(" ARG_LIST@[24; 26)
R_PAREN@[25; 26) ")" L_PAREN@[24; 25) "("
SEMI@[26; 27) ";" R_PAREN@[25; 26) ")"
WHITESPACE@[27; 32) "\n " SEMI@[26; 27) ";"
LET_STMT@[32; 54) WHITESPACE@[27; 32) "\n "
LET_KW@[32; 35) "let" LET_STMT@[32; 54)
WHITESPACE@[35; 36) " " LET_KW@[32; 35) "let"
PLACEHOLDER_PAT@[36; 37) WHITESPACE@[35; 36) " "
UNDERSCORE@[36; 37) "_" PLACEHOLDER_PAT@[36; 37)
WHITESPACE@[37; 38) " " UNDERSCORE@[36; 37) "_"
EQ@[38; 39) "=" WHITESPACE@[37; 38) " "
WHITESPACE@[39; 40) " " EQ@[38; 39) "="
CALL_EXPR@[40; 53) WHITESPACE@[39; 40) " "
CALL_EXPR@[40; 46) CALL_EXPR@[40; 53)
CALL_EXPR@[40; 43) CALL_EXPR@[40; 46)
PATH_EXPR@[40; 41) CALL_EXPR@[40; 43)
PATH@[40; 41) PATH_EXPR@[40; 41)
PATH_SEGMENT@[40; 41) PATH@[40; 41)
NAME_REF@[40; 41) PATH_SEGMENT@[40; 41)
IDENT@[40; 41) "f" NAME_REF@[40; 41)
ARG_LIST@[41; 43) IDENT@[40; 41) "f"
L_PAREN@[41; 42) "(" ARG_LIST@[41; 43)
R_PAREN@[42; 43) ")" L_PAREN@[41; 42) "("
ARG_LIST@[43; 46) R_PAREN@[42; 43) ")"
L_PAREN@[43; 44) "(" ARG_LIST@[43; 46)
LITERAL@[44; 45) L_PAREN@[43; 44) "("
INT_NUMBER@[44; 45) "1" LITERAL@[44; 45)
R_PAREN@[45; 46) ")" INT_NUMBER@[44; 45) "1"
ARG_LIST@[46; 53) R_PAREN@[45; 46) ")"
L_PAREN@[46; 47) "(" ARG_LIST@[46; 53)
LITERAL@[47; 48) L_PAREN@[46; 47) "("
INT_NUMBER@[47; 48) "1" LITERAL@[47; 48)
COMMA@[48; 49) "," INT_NUMBER@[47; 48) "1"
WHITESPACE@[49; 50) " " COMMA@[48; 49) ","
LITERAL@[50; 51) WHITESPACE@[49; 50) " "
INT_NUMBER@[50; 51) "2" LITERAL@[50; 51)
COMMA@[51; 52) "," INT_NUMBER@[50; 51) "2"
R_PAREN@[52; 53) ")" COMMA@[51; 52) ","
SEMI@[53; 54) ";" R_PAREN@[52; 53) ")"
WHITESPACE@[54; 59) "\n " SEMI@[53; 54) ";"
LET_STMT@[59; 84) WHITESPACE@[54; 59) "\n "
LET_KW@[59; 62) "let" LET_STMT@[59; 84)
WHITESPACE@[62; 63) " " LET_KW@[59; 62) "let"
PLACEHOLDER_PAT@[63; 64) WHITESPACE@[62; 63) " "
UNDERSCORE@[63; 64) "_" PLACEHOLDER_PAT@[63; 64)
WHITESPACE@[64; 65) " " UNDERSCORE@[63; 64) "_"
EQ@[65; 66) "=" WHITESPACE@[64; 65) " "
WHITESPACE@[66; 67) " " EQ@[65; 66) "="
CALL_EXPR@[67; 83) WHITESPACE@[66; 67) " "
PATH_EXPR@[67; 68) CALL_EXPR@[67; 83)
PATH@[67; 68) PATH_EXPR@[67; 68)
PATH_SEGMENT@[67; 68) PATH@[67; 68)
NAME_REF@[67; 68) PATH_SEGMENT@[67; 68)
IDENT@[67; 68) "f" NAME_REF@[67; 68)
ARG_LIST@[68; 83) IDENT@[67; 68) "f"
L_PAREN@[68; 69) "(" ARG_LIST@[68; 83)
CALL_EXPR@[69; 82) L_PAREN@[68; 69) "("
PATH_EXPR@[69; 80) CALL_EXPR@[69; 82)
PATH@[69; 80) PATH_EXPR@[69; 80)
PATH@[69; 74) PATH@[69; 80)
PATH_SEGMENT@[69; 74) PATH@[69; 74)
L_ANGLE@[69; 70) "<" PATH_SEGMENT@[69; 74)
PATH_TYPE@[70; 73) L_ANGLE@[69; 70) "<"
PATH@[70; 73) PATH_TYPE@[70; 73)
PATH_SEGMENT@[70; 73) PATH@[70; 73)
NAME_REF@[70; 73) PATH_SEGMENT@[70; 73)
IDENT@[70; 73) "Foo" NAME_REF@[70; 73)
R_ANGLE@[73; 74) ">" IDENT@[70; 73) "Foo"
COLONCOLON@[74; 76) "::" R_ANGLE@[73; 74) ">"
PATH_SEGMENT@[76; 80) COLONCOLON@[74; 76) "::"
NAME_REF@[76; 80) PATH_SEGMENT@[76; 80)
IDENT@[76; 80) "func" NAME_REF@[76; 80)
ARG_LIST@[80; 82) IDENT@[76; 80) "func"
L_PAREN@[80; 81) "(" ARG_LIST@[80; 82)
R_PAREN@[81; 82) ")" L_PAREN@[80; 81) "("
R_PAREN@[82; 83) ")" R_PAREN@[81; 82) ")"
SEMI@[83; 84) ";" R_PAREN@[82; 83) ")"
WHITESPACE@[84; 89) "\n " SEMI@[83; 84) ";"
EXPR_STMT@[89; 115) WHITESPACE@[84; 89) "\n "
CALL_EXPR@[89; 114) EXPR_STMT@[89; 115)
PATH_EXPR@[89; 90) CALL_EXPR@[89; 114)
PATH@[89; 90) PATH_EXPR@[89; 90)
PATH_SEGMENT@[89; 90) PATH@[89; 90)
NAME_REF@[89; 90) PATH_SEGMENT@[89; 90)
IDENT@[89; 90) "f" NAME_REF@[89; 90)
ARG_LIST@[90; 114) IDENT@[89; 90) "f"
L_PAREN@[90; 91) "(" ARG_LIST@[90; 114)
CALL_EXPR@[91; 113) L_PAREN@[90; 91) "("
PATH_EXPR@[91; 111) CALL_EXPR@[91; 113)
PATH@[91; 111) PATH_EXPR@[91; 111)
PATH@[91; 105) PATH@[91; 111)
PATH_SEGMENT@[91; 105) PATH@[91; 105)
L_ANGLE@[91; 92) "<" PATH_SEGMENT@[91; 105)
PATH_TYPE@[92; 95) L_ANGLE@[91; 92) "<"
PATH@[92; 95) PATH_TYPE@[92; 95)
PATH_SEGMENT@[92; 95) PATH@[92; 95)
NAME_REF@[92; 95) PATH_SEGMENT@[92; 95)
IDENT@[92; 95) "Foo" NAME_REF@[92; 95)
WHITESPACE@[95; 96) " " IDENT@[92; 95) "Foo"
AS_KW@[96; 98) "as" WHITESPACE@[95; 96) " "
WHITESPACE@[98; 99) " " AS_KW@[96; 98) "as"
PATH_TYPE@[99; 104) WHITESPACE@[98; 99) " "
PATH@[99; 104) PATH_TYPE@[99; 104)
PATH_SEGMENT@[99; 104) PATH@[99; 104)
NAME_REF@[99; 104) PATH_SEGMENT@[99; 104)
IDENT@[99; 104) "Trait" NAME_REF@[99; 104)
R_ANGLE@[104; 105) ">" IDENT@[99; 104) "Trait"
COLONCOLON@[105; 107) "::" R_ANGLE@[104; 105) ">"
PATH_SEGMENT@[107; 111) COLONCOLON@[105; 107) "::"
NAME_REF@[107; 111) PATH_SEGMENT@[107; 111)
IDENT@[107; 111) "func" NAME_REF@[107; 111)
ARG_LIST@[111; 113) IDENT@[107; 111) "func"
L_PAREN@[111; 112) "(" ARG_LIST@[111; 113)
R_PAREN@[112; 113) ")" L_PAREN@[111; 112) "("
R_PAREN@[113; 114) ")" R_PAREN@[112; 113) ")"
SEMI@[114; 115) ";" R_PAREN@[113; 114) ")"
WHITESPACE@[115; 116) "\n" SEMI@[114; 115) ";"
R_CURLY@[116; 117) "}" WHITESPACE@[115; 116) "\n"
R_CURLY@[116; 117) "}"
WHITESPACE@[117; 118) "\n" WHITESPACE@[117; 118) "\n"

View file

@ -8,21 +8,23 @@ SOURCE_FILE@[0; 21)
L_PAREN@[4; 5) "(" L_PAREN@[4; 5) "("
R_PAREN@[5; 6) ")" R_PAREN@[5; 6) ")"
WHITESPACE@[6; 7) " " WHITESPACE@[6; 7) " "
BLOCK@[7; 20) BLOCK_EXPR@[7; 20)
L_CURLY@[7; 8) "{" BLOCK@[7; 20)
WHITESPACE@[8; 9) " " L_CURLY@[7; 8) "{"
FN_DEF@[9; 18) WHITESPACE@[8; 9) " "
FN_KW@[9; 11) "fn" FN_DEF@[9; 18)
WHITESPACE@[11; 12) " " FN_KW@[9; 11) "fn"
NAME@[12; 13) WHITESPACE@[11; 12) " "
IDENT@[12; 13) "b" NAME@[12; 13)
PARAM_LIST@[13; 15) IDENT@[12; 13) "b"
L_PAREN@[13; 14) "(" PARAM_LIST@[13; 15)
R_PAREN@[14; 15) ")" L_PAREN@[13; 14) "("
WHITESPACE@[15; 16) " " R_PAREN@[14; 15) ")"
BLOCK@[16; 18) WHITESPACE@[15; 16) " "
L_CURLY@[16; 17) "{" BLOCK_EXPR@[16; 18)
R_CURLY@[17; 18) "}" BLOCK@[16; 18)
WHITESPACE@[18; 19) " " L_CURLY@[16; 17) "{"
R_CURLY@[19; 20) "}" R_CURLY@[17; 18) "}"
WHITESPACE@[18; 19) " "
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n" WHITESPACE@[20; 21) "\n"

View file

@ -40,7 +40,8 @@ SOURCE_FILE@[0; 35)
PARAM_LIST@[30; 32) PARAM_LIST@[30; 32)
L_PAREN@[30; 31) "(" L_PAREN@[30; 31) "("
R_PAREN@[31; 32) ")" R_PAREN@[31; 32) ")"
BLOCK@[32; 34) BLOCK_EXPR@[32; 34)
L_CURLY@[32; 33) "{" BLOCK@[32; 34)
R_CURLY@[33; 34) "}" L_CURLY@[32; 33) "{"
R_CURLY@[33; 34) "}"
WHITESPACE@[34; 35) "\n" WHITESPACE@[34; 35) "\n"

View file

@ -34,9 +34,10 @@ SOURCE_FILE@[0; 58)
LIFETIME@[20; 22) "\'f" LIFETIME@[20; 22) "\'f"
R_ANGLE@[22; 23) ">" R_ANGLE@[22; 23) ">"
WHITESPACE@[23; 24) " " WHITESPACE@[23; 24) " "
BLOCK@[24; 26) BLOCK_EXPR@[24; 26)
L_CURLY@[24; 25) "{" BLOCK@[24; 26)
R_CURLY@[25; 26) "}" L_CURLY@[24; 25) "{"
R_CURLY@[25; 26) "}"
WHITESPACE@[26; 27) "\n" WHITESPACE@[26; 27) "\n"
FN_DEF@[27; 57) FN_DEF@[27; 57)
FN_KW@[27; 29) "fn" FN_KW@[27; 29) "fn"
@ -75,7 +76,8 @@ SOURCE_FILE@[0; 58)
LIFETIME@[51; 53) "\'f" LIFETIME@[51; 53) "\'f"
R_ANGLE@[53; 54) ">" R_ANGLE@[53; 54) ">"
WHITESPACE@[54; 55) " " WHITESPACE@[54; 55) " "
BLOCK@[55; 57) BLOCK_EXPR@[55; 57)
L_CURLY@[55; 56) "{" BLOCK@[55; 57)
R_CURLY@[56; 57) "}" L_CURLY@[55; 56) "{"
R_CURLY@[56; 57) "}"
WHITESPACE@[57; 58) "\n" WHITESPACE@[57; 58) "\n"

View file

@ -8,88 +8,89 @@ SOURCE_FILE@[0; 91)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 90) BLOCK_EXPR@[9; 90)
L_CURLY@[9; 10) "{" BLOCK@[9; 90)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 25) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 25)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
PLACEHOLDER_PAT@[19; 20) WHITESPACE@[18; 19) " "
UNDERSCORE@[19; 20) "_" PLACEHOLDER_PAT@[19; 20)
WHITESPACE@[20; 21) " " UNDERSCORE@[19; 20) "_"
EQ@[21; 22) "=" WHITESPACE@[20; 21) " "
WHITESPACE@[22; 23) " " EQ@[21; 22) "="
PATH_EXPR@[23; 24) WHITESPACE@[22; 23) " "
PATH@[23; 24) PATH_EXPR@[23; 24)
PATH_SEGMENT@[23; 24) PATH@[23; 24)
NAME_REF@[23; 24) PATH_SEGMENT@[23; 24)
IDENT@[23; 24) "a" NAME_REF@[23; 24)
SEMI@[24; 25) ";" IDENT@[23; 24) "a"
WHITESPACE@[25; 30) "\n " SEMI@[24; 25) ";"
LET_STMT@[30; 43) WHITESPACE@[25; 30) "\n "
LET_KW@[30; 33) "let" LET_STMT@[30; 43)
WHITESPACE@[33; 34) " " LET_KW@[30; 33) "let"
PLACEHOLDER_PAT@[34; 35) WHITESPACE@[33; 34) " "
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
EQ@[36; 37) "=" WHITESPACE@[35; 36) " "
WHITESPACE@[37; 38) " " EQ@[36; 37) "="
PATH_EXPR@[38; 42) WHITESPACE@[37; 38) " "
PATH@[38; 42) PATH_EXPR@[38; 42)
PATH@[38; 39) PATH@[38; 42)
PATH_SEGMENT@[38; 39) PATH@[38; 39)
NAME_REF@[38; 39) PATH_SEGMENT@[38; 39)
IDENT@[38; 39) "a" NAME_REF@[38; 39)
COLONCOLON@[39; 41) "::" IDENT@[38; 39) "a"
PATH_SEGMENT@[41; 42) COLONCOLON@[39; 41) "::"
NAME_REF@[41; 42) PATH_SEGMENT@[41; 42)
IDENT@[41; 42) "b" NAME_REF@[41; 42)
SEMI@[42; 43) ";" IDENT@[41; 42) "b"
WHITESPACE@[43; 48) "\n " SEMI@[42; 43) ";"
LET_STMT@[48; 65) WHITESPACE@[43; 48) "\n "
LET_KW@[48; 51) "let" LET_STMT@[48; 65)
WHITESPACE@[51; 52) " " LET_KW@[48; 51) "let"
PLACEHOLDER_PAT@[52; 53) WHITESPACE@[51; 52) " "
UNDERSCORE@[52; 53) "_" PLACEHOLDER_PAT@[52; 53)
WHITESPACE@[53; 54) " " UNDERSCORE@[52; 53) "_"
EQ@[54; 55) "=" WHITESPACE@[53; 54) " "
WHITESPACE@[55; 56) " " EQ@[54; 55) "="
PATH_EXPR@[56; 64) WHITESPACE@[55; 56) " "
PATH@[56; 64) PATH_EXPR@[56; 64)
PATH_SEGMENT@[56; 64) PATH@[56; 64)
COLONCOLON@[56; 58) "::" PATH_SEGMENT@[56; 64)
NAME_REF@[58; 59) COLONCOLON@[56; 58) "::"
IDENT@[58; 59) "a" NAME_REF@[58; 59)
TYPE_ARG_LIST@[59; 64) IDENT@[58; 59) "a"
COLONCOLON@[59; 61) "::" TYPE_ARG_LIST@[59; 64)
L_ANGLE@[61; 62) "<" COLONCOLON@[59; 61) "::"
TYPE_ARG@[62; 63) L_ANGLE@[61; 62) "<"
PATH_TYPE@[62; 63) TYPE_ARG@[62; 63)
PATH@[62; 63) PATH_TYPE@[62; 63)
PATH_SEGMENT@[62; 63) PATH@[62; 63)
NAME_REF@[62; 63) PATH_SEGMENT@[62; 63)
IDENT@[62; 63) "b" NAME_REF@[62; 63)
R_ANGLE@[63; 64) ">" IDENT@[62; 63) "b"
SEMI@[64; 65) ";" R_ANGLE@[63; 64) ">"
WHITESPACE@[65; 70) "\n " SEMI@[64; 65) ";"
LET_STMT@[70; 88) WHITESPACE@[65; 70) "\n "
LET_KW@[70; 73) "let" LET_STMT@[70; 88)
WHITESPACE@[73; 74) " " LET_KW@[70; 73) "let"
PLACEHOLDER_PAT@[74; 75) WHITESPACE@[73; 74) " "
UNDERSCORE@[74; 75) "_" PLACEHOLDER_PAT@[74; 75)
WHITESPACE@[75; 76) " " UNDERSCORE@[74; 75) "_"
EQ@[76; 77) "=" WHITESPACE@[75; 76) " "
WHITESPACE@[77; 78) " " EQ@[76; 77) "="
MACRO_CALL@[78; 87) WHITESPACE@[77; 78) " "
PATH@[78; 84) MACRO_CALL@[78; 87)
PATH_SEGMENT@[78; 84) PATH@[78; 84)
NAME_REF@[78; 84) PATH_SEGMENT@[78; 84)
IDENT@[78; 84) "format" NAME_REF@[78; 84)
EXCL@[84; 85) "!" IDENT@[78; 84) "format"
TOKEN_TREE@[85; 87) EXCL@[84; 85) "!"
L_PAREN@[85; 86) "(" TOKEN_TREE@[85; 87)
R_PAREN@[86; 87) ")" L_PAREN@[85; 86) "("
SEMI@[87; 88) ";" R_PAREN@[86; 87) ")"
WHITESPACE@[88; 89) "\n" SEMI@[87; 88) ";"
R_CURLY@[89; 90) "}" WHITESPACE@[88; 89) "\n"
R_CURLY@[89; 90) "}"
WHITESPACE@[90; 91) "\n" WHITESPACE@[90; 91) "\n"

View file

@ -8,69 +8,70 @@ SOURCE_FILE@[0; 113)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 112) BLOCK_EXPR@[10; 112)
L_CURLY@[10; 11) "{" BLOCK@[10; 112)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
MATCH_EXPR@[16; 110) WHITESPACE@[11; 16) "\n "
MATCH_KW@[16; 21) "match" MATCH_EXPR@[16; 110)
WHITESPACE@[21; 22) " " MATCH_KW@[16; 21) "match"
TUPLE_EXPR@[22; 24) WHITESPACE@[21; 22) " "
L_PAREN@[22; 23) "(" TUPLE_EXPR@[22; 24)
R_PAREN@[23; 24) ")" L_PAREN@[22; 23) "("
WHITESPACE@[24; 25) " " R_PAREN@[23; 24) ")"
MATCH_ARM_LIST@[25; 110) WHITESPACE@[24; 25) " "
L_CURLY@[25; 26) "{" MATCH_ARM_LIST@[25; 110)
WHITESPACE@[26; 35) "\n " L_CURLY@[25; 26) "{"
MATCH_ARM@[35; 43) WHITESPACE@[26; 35) "\n "
LITERAL_PAT@[35; 37) MATCH_ARM@[35; 43)
MINUS@[35; 36) "-" LITERAL_PAT@[35; 37)
LITERAL@[36; 37) MINUS@[35; 36) "-"
INT_NUMBER@[36; 37) "1" LITERAL@[36; 37)
WHITESPACE@[37; 38) " " INT_NUMBER@[36; 37) "1"
FAT_ARROW@[38; 40) "=>" WHITESPACE@[37; 38) " "
WHITESPACE@[40; 41) " " FAT_ARROW@[38; 40) "=>"
TUPLE_EXPR@[41; 43) WHITESPACE@[40; 41) " "
L_PAREN@[41; 42) "(" TUPLE_EXPR@[41; 43)
R_PAREN@[42; 43) ")" L_PAREN@[41; 42) "("
COMMA@[43; 44) "," R_PAREN@[42; 43) ")"
WHITESPACE@[44; 53) "\n " COMMA@[43; 44) ","
MATCH_ARM@[53; 61) WHITESPACE@[44; 53) "\n "
LITERAL_PAT@[53; 55) MATCH_ARM@[53; 61)
LITERAL@[53; 55) LITERAL_PAT@[53; 55)
INT_NUMBER@[53; 55) "92" LITERAL@[53; 55)
WHITESPACE@[55; 56) " " INT_NUMBER@[53; 55) "92"
FAT_ARROW@[56; 58) "=>" WHITESPACE@[55; 56) " "
WHITESPACE@[58; 59) " " FAT_ARROW@[56; 58) "=>"
TUPLE_EXPR@[59; 61) WHITESPACE@[58; 59) " "
L_PAREN@[59; 60) "(" TUPLE_EXPR@[59; 61)
R_PAREN@[60; 61) ")" L_PAREN@[59; 60) "("
COMMA@[61; 62) "," R_PAREN@[60; 61) ")"
WHITESPACE@[62; 71) "\n " COMMA@[61; 62) ","
MATCH_ARM@[71; 80) WHITESPACE@[62; 71) "\n "
LITERAL_PAT@[71; 74) MATCH_ARM@[71; 80)
LITERAL@[71; 74) LITERAL_PAT@[71; 74)
CHAR@[71; 74) "\'c\'" LITERAL@[71; 74)
WHITESPACE@[74; 75) " " CHAR@[71; 74) "\'c\'"
FAT_ARROW@[75; 77) "=>" WHITESPACE@[74; 75) " "
WHITESPACE@[77; 78) " " FAT_ARROW@[75; 77) "=>"
TUPLE_EXPR@[78; 80) WHITESPACE@[77; 78) " "
L_PAREN@[78; 79) "(" TUPLE_EXPR@[78; 80)
R_PAREN@[79; 80) ")" L_PAREN@[78; 79) "("
COMMA@[80; 81) "," R_PAREN@[79; 80) ")"
WHITESPACE@[81; 90) "\n " COMMA@[80; 81) ","
MATCH_ARM@[90; 103) WHITESPACE@[81; 90) "\n "
LITERAL_PAT@[90; 97) MATCH_ARM@[90; 103)
LITERAL@[90; 97) LITERAL_PAT@[90; 97)
STRING@[90; 97) "\"hello\"" LITERAL@[90; 97)
WHITESPACE@[97; 98) " " STRING@[90; 97) "\"hello\""
FAT_ARROW@[98; 100) "=>" WHITESPACE@[97; 98) " "
WHITESPACE@[100; 101) " " FAT_ARROW@[98; 100) "=>"
TUPLE_EXPR@[101; 103) WHITESPACE@[100; 101) " "
L_PAREN@[101; 102) "(" TUPLE_EXPR@[101; 103)
R_PAREN@[102; 103) ")" L_PAREN@[101; 102) "("
COMMA@[103; 104) "," R_PAREN@[102; 103) ")"
WHITESPACE@[104; 109) "\n " COMMA@[103; 104) ","
R_CURLY@[109; 110) "}" WHITESPACE@[104; 109) "\n "
WHITESPACE@[110; 111) "\n" R_CURLY@[109; 110) "}"
R_CURLY@[111; 112) "}" WHITESPACE@[110; 111) "\n"
R_CURLY@[111; 112) "}"
WHITESPACE@[112; 113) "\n" WHITESPACE@[112; 113) "\n"

View file

@ -104,7 +104,8 @@ SOURCE_FILE@[0; 116)
TYPE_BOUND@[110; 112) TYPE_BOUND@[110; 112)
LIFETIME@[110; 112) "\'a" LIFETIME@[110; 112) "\'a"
WHITESPACE@[112; 113) "\n" WHITESPACE@[112; 113) "\n"
BLOCK@[113; 115) BLOCK_EXPR@[113; 115)
L_CURLY@[113; 114) "{" BLOCK@[113; 115)
R_CURLY@[114; 115) "}" L_CURLY@[113; 114) "{"
R_CURLY@[114; 115) "}"
WHITESPACE@[115; 116) "\n" WHITESPACE@[115; 116) "\n"

View file

@ -10,7 +10,8 @@ SOURCE_FILE@[0; 18)
L_PAREN@[12; 13) "(" L_PAREN@[12; 13) "("
R_PAREN@[13; 14) ")" R_PAREN@[13; 14) ")"
WHITESPACE@[14; 15) " " WHITESPACE@[14; 15) " "
BLOCK@[15; 17) BLOCK_EXPR@[15; 17)
L_CURLY@[15; 16) "{" BLOCK@[15; 17)
R_CURLY@[16; 17) "}" L_CURLY@[15; 16) "{"
R_CURLY@[16; 17) "}"
WHITESPACE@[17; 18) "\n" WHITESPACE@[17; 18) "\n"

View file

@ -8,75 +8,76 @@ SOURCE_FILE@[0; 112)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK@[10; 111) BLOCK_EXPR@[10; 111)
L_CURLY@[10; 11) "{" BLOCK@[10; 111)
WHITESPACE@[11; 16) "\n " L_CURLY@[10; 11) "{"
MATCH_EXPR@[16; 109) WHITESPACE@[11; 16) "\n "
MATCH_KW@[16; 21) "match" MATCH_EXPR@[16; 109)
WHITESPACE@[21; 22) " " MATCH_KW@[16; 21) "match"
LITERAL@[22; 24) WHITESPACE@[21; 22) " "
INT_NUMBER@[22; 24) "92" LITERAL@[22; 24)
WHITESPACE@[24; 25) " " INT_NUMBER@[22; 24) "92"
MATCH_ARM_LIST@[25; 109) WHITESPACE@[24; 25) " "
L_CURLY@[25; 26) "{" MATCH_ARM_LIST@[25; 109)
WHITESPACE@[26; 35) "\n " L_CURLY@[25; 26) "{"
MATCH_ARM@[35; 50) WHITESPACE@[26; 35) "\n "
RANGE_PAT@[35; 44) MATCH_ARM@[35; 50)
LITERAL_PAT@[35; 36) RANGE_PAT@[35; 44)
LITERAL@[35; 36) LITERAL_PAT@[35; 36)
INT_NUMBER@[35; 36) "0" LITERAL@[35; 36)
WHITESPACE@[36; 37) " " INT_NUMBER@[35; 36) "0"
DOTDOTDOT@[37; 40) "..." WHITESPACE@[36; 37) " "
WHITESPACE@[40; 41) " " DOTDOTDOT@[37; 40) "..."
LITERAL_PAT@[41; 44) WHITESPACE@[40; 41) " "
LITERAL@[41; 44) LITERAL_PAT@[41; 44)
INT_NUMBER@[41; 44) "100" LITERAL@[41; 44)
WHITESPACE@[44; 45) " " INT_NUMBER@[41; 44) "100"
FAT_ARROW@[45; 47) "=>" WHITESPACE@[44; 45) " "
WHITESPACE@[47; 48) " " FAT_ARROW@[45; 47) "=>"
TUPLE_EXPR@[48; 50) WHITESPACE@[47; 48) " "
L_PAREN@[48; 49) "(" TUPLE_EXPR@[48; 50)
R_PAREN@[49; 50) ")" L_PAREN@[48; 49) "("
COMMA@[50; 51) "," R_PAREN@[49; 50) ")"
WHITESPACE@[51; 60) "\n " COMMA@[50; 51) ","
MATCH_ARM@[60; 77) WHITESPACE@[51; 60) "\n "
RANGE_PAT@[60; 71) MATCH_ARM@[60; 77)
LITERAL_PAT@[60; 63) RANGE_PAT@[60; 71)
LITERAL@[60; 63) LITERAL_PAT@[60; 63)
INT_NUMBER@[60; 63) "101" LITERAL@[60; 63)
WHITESPACE@[63; 64) " " INT_NUMBER@[60; 63) "101"
DOTDOTEQ@[64; 67) "..=" WHITESPACE@[63; 64) " "
WHITESPACE@[67; 68) " " DOTDOTEQ@[64; 67) "..="
LITERAL_PAT@[68; 71) WHITESPACE@[67; 68) " "
LITERAL@[68; 71) LITERAL_PAT@[68; 71)
INT_NUMBER@[68; 71) "200" LITERAL@[68; 71)
WHITESPACE@[71; 72) " " INT_NUMBER@[68; 71) "200"
FAT_ARROW@[72; 74) "=>" WHITESPACE@[71; 72) " "
WHITESPACE@[74; 75) " " FAT_ARROW@[72; 74) "=>"
TUPLE_EXPR@[75; 77) WHITESPACE@[74; 75) " "
L_PAREN@[75; 76) "(" TUPLE_EXPR@[75; 77)
R_PAREN@[76; 77) ")" L_PAREN@[75; 76) "("
COMMA@[77; 78) "," R_PAREN@[76; 77) ")"
WHITESPACE@[78; 87) "\n " COMMA@[77; 78) ","
MATCH_ARM@[87; 102) WHITESPACE@[78; 87) "\n "
RANGE_PAT@[87; 97) MATCH_ARM@[87; 102)
LITERAL_PAT@[87; 90) RANGE_PAT@[87; 97)
LITERAL@[87; 90) LITERAL_PAT@[87; 90)
INT_NUMBER@[87; 90) "200" LITERAL@[87; 90)
WHITESPACE@[90; 91) " " INT_NUMBER@[87; 90) "200"
DOTDOT@[91; 93) ".." WHITESPACE@[90; 91) " "
WHITESPACE@[93; 94) " " DOTDOT@[91; 93) ".."
LITERAL_PAT@[94; 97) WHITESPACE@[93; 94) " "
LITERAL@[94; 97) LITERAL_PAT@[94; 97)
INT_NUMBER@[94; 97) "301" LITERAL@[94; 97)
FAT_ARROW@[97; 99) "=>" INT_NUMBER@[94; 97) "301"
WHITESPACE@[99; 100) " " FAT_ARROW@[97; 99) "=>"
TUPLE_EXPR@[100; 102) WHITESPACE@[99; 100) " "
L_PAREN@[100; 101) "(" TUPLE_EXPR@[100; 102)
R_PAREN@[101; 102) ")" L_PAREN@[100; 101) "("
COMMA@[102; 103) "," R_PAREN@[101; 102) ")"
WHITESPACE@[103; 108) "\n " COMMA@[102; 103) ","
R_CURLY@[108; 109) "}" WHITESPACE@[103; 108) "\n "
WHITESPACE@[109; 110) "\n" R_CURLY@[108; 109) "}"
R_CURLY@[110; 111) "}" WHITESPACE@[109; 110) "\n"
R_CURLY@[110; 111) "}"
WHITESPACE@[111; 112) "\n" WHITESPACE@[111; 112) "\n"

View file

@ -8,52 +8,53 @@ SOURCE_FILE@[0; 83)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 82) BLOCK_EXPR@[9; 82)
L_CURLY@[9; 10) "{" BLOCK@[9; 82)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
MATCH_EXPR@[15; 80) WHITESPACE@[10; 15) "\n "
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 80)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 80) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 80)
WHITESPACE@[25; 34) "\n " L_CURLY@[24; 25) "{"
MATCH_ARM@[34; 41) WHITESPACE@[25; 34) "\n "
PLACEHOLDER_PAT@[34; 35) MATCH_ARM@[34; 41)
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
FAT_ARROW@[36; 38) "=>" WHITESPACE@[35; 36) " "
WHITESPACE@[38; 39) " " FAT_ARROW@[36; 38) "=>"
TUPLE_EXPR@[39; 41) WHITESPACE@[38; 39) " "
L_PAREN@[39; 40) "(" TUPLE_EXPR@[39; 41)
R_PAREN@[40; 41) ")" L_PAREN@[39; 40) "("
COMMA@[41; 42) "," R_PAREN@[40; 41) ")"
WHITESPACE@[42; 51) "\n " COMMA@[41; 42) ","
MATCH_ARM@[51; 58) WHITESPACE@[42; 51) "\n "
PLACEHOLDER_PAT@[51; 52) MATCH_ARM@[51; 58)
UNDERSCORE@[51; 52) "_" PLACEHOLDER_PAT@[51; 52)
WHITESPACE@[52; 53) " " UNDERSCORE@[51; 52) "_"
FAT_ARROW@[53; 55) "=>" WHITESPACE@[52; 53) " "
WHITESPACE@[55; 56) " " FAT_ARROW@[53; 55) "=>"
BLOCK_EXPR@[56; 58) WHITESPACE@[55; 56) " "
BLOCK@[56; 58) BLOCK_EXPR@[56; 58)
L_CURLY@[56; 57) "{" BLOCK@[56; 58)
R_CURLY@[57; 58) "}" L_CURLY@[56; 57) "{"
WHITESPACE@[58; 67) "\n " R_CURLY@[57; 58) "}"
MATCH_ARM@[67; 74) WHITESPACE@[58; 67) "\n "
PLACEHOLDER_PAT@[67; 68) MATCH_ARM@[67; 74)
UNDERSCORE@[67; 68) "_" PLACEHOLDER_PAT@[67; 68)
WHITESPACE@[68; 69) " " UNDERSCORE@[67; 68) "_"
FAT_ARROW@[69; 71) "=>" WHITESPACE@[68; 69) " "
WHITESPACE@[71; 72) " " FAT_ARROW@[69; 71) "=>"
TUPLE_EXPR@[72; 74) WHITESPACE@[71; 72) " "
L_PAREN@[72; 73) "(" TUPLE_EXPR@[72; 74)
R_PAREN@[73; 74) ")" L_PAREN@[72; 73) "("
WHITESPACE@[74; 79) "\n " R_PAREN@[73; 74) ")"
R_CURLY@[79; 80) "}" WHITESPACE@[74; 79) "\n "
WHITESPACE@[80; 81) "\n" R_CURLY@[79; 80) "}"
R_CURLY@[81; 82) "}" WHITESPACE@[80; 81) "\n"
R_CURLY@[81; 82) "}"
WHITESPACE@[82; 83) "\n" WHITESPACE@[82; 83) "\n"

View file

@ -8,111 +8,112 @@ SOURCE_FILE@[0; 112)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 111) BLOCK_EXPR@[9; 111)
L_CURLY@[9; 10) "{" BLOCK@[9; 111)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 20) WHITESPACE@[10; 15) "\n "
RECORD_LIT@[15; 19) EXPR_STMT@[15; 20)
PATH@[15; 16) RECORD_LIT@[15; 19)
PATH_SEGMENT@[15; 16) PATH@[15; 16)
NAME_REF@[15; 16) PATH_SEGMENT@[15; 16)
IDENT@[15; 16) "S" NAME_REF@[15; 16)
WHITESPACE@[16; 17) " " IDENT@[15; 16) "S"
RECORD_FIELD_LIST@[17; 19) WHITESPACE@[16; 17) " "
L_CURLY@[17; 18) "{" RECORD_FIELD_LIST@[17; 19)
R_CURLY@[18; 19) "}" L_CURLY@[17; 18) "{"
SEMI@[19; 20) ";" R_CURLY@[18; 19) "}"
WHITESPACE@[20; 25) "\n " SEMI@[19; 20) ";"
EXPR_STMT@[25; 41) WHITESPACE@[20; 25) "\n "
RECORD_LIT@[25; 40) EXPR_STMT@[25; 41)
PATH@[25; 26) RECORD_LIT@[25; 40)
PATH_SEGMENT@[25; 26) PATH@[25; 26)
NAME_REF@[25; 26) PATH_SEGMENT@[25; 26)
IDENT@[25; 26) "S" NAME_REF@[25; 26)
WHITESPACE@[26; 27) " " IDENT@[25; 26) "S"
RECORD_FIELD_LIST@[27; 40) WHITESPACE@[26; 27) " "
L_CURLY@[27; 28) "{" RECORD_FIELD_LIST@[27; 40)
WHITESPACE@[28; 29) " " L_CURLY@[27; 28) "{"
RECORD_FIELD@[29; 30) WHITESPACE@[28; 29) " "
NAME_REF@[29; 30) RECORD_FIELD@[29; 30)
IDENT@[29; 30) "x" NAME_REF@[29; 30)
COMMA@[30; 31) "," IDENT@[29; 30) "x"
WHITESPACE@[31; 32) " " COMMA@[30; 31) ","
RECORD_FIELD@[32; 37) WHITESPACE@[31; 32) " "
NAME_REF@[32; 33) RECORD_FIELD@[32; 37)
IDENT@[32; 33) "y" NAME_REF@[32; 33)
COLON@[33; 34) ":" IDENT@[32; 33) "y"
WHITESPACE@[34; 35) " " COLON@[33; 34) ":"
LITERAL@[35; 37) WHITESPACE@[34; 35) " "
INT_NUMBER@[35; 37) "32" LITERAL@[35; 37)
COMMA@[37; 38) "," INT_NUMBER@[35; 37) "32"
WHITESPACE@[38; 39) " " COMMA@[37; 38) ","
R_CURLY@[39; 40) "}" WHITESPACE@[38; 39) " "
SEMI@[40; 41) ";" R_CURLY@[39; 40) "}"
WHITESPACE@[41; 46) "\n " SEMI@[40; 41) ";"
EXPR_STMT@[46; 83) WHITESPACE@[41; 46) "\n "
RECORD_LIT@[46; 82) EXPR_STMT@[46; 83)
PATH@[46; 47) RECORD_LIT@[46; 82)
PATH_SEGMENT@[46; 47) PATH@[46; 47)
NAME_REF@[46; 47) PATH_SEGMENT@[46; 47)
IDENT@[46; 47) "S" NAME_REF@[46; 47)
WHITESPACE@[47; 48) " " IDENT@[46; 47) "S"
RECORD_FIELD_LIST@[48; 82) WHITESPACE@[47; 48) " "
L_CURLY@[48; 49) "{" RECORD_FIELD_LIST@[48; 82)
WHITESPACE@[49; 50) " " L_CURLY@[48; 49) "{"
RECORD_FIELD@[50; 51) WHITESPACE@[49; 50) " "
NAME_REF@[50; 51) RECORD_FIELD@[50; 51)
IDENT@[50; 51) "x" NAME_REF@[50; 51)
COMMA@[51; 52) "," IDENT@[50; 51) "x"
WHITESPACE@[52; 53) " " COMMA@[51; 52) ","
RECORD_FIELD@[53; 58) WHITESPACE@[52; 53) " "
NAME_REF@[53; 54) RECORD_FIELD@[53; 58)
IDENT@[53; 54) "y" NAME_REF@[53; 54)
COLON@[54; 55) ":" IDENT@[53; 54) "y"
WHITESPACE@[55; 56) " " COLON@[54; 55) ":"
LITERAL@[56; 58) WHITESPACE@[55; 56) " "
INT_NUMBER@[56; 58) "32" LITERAL@[56; 58)
COMMA@[58; 59) "," INT_NUMBER@[56; 58) "32"
WHITESPACE@[59; 60) " " COMMA@[58; 59) ","
DOTDOT@[60; 62) ".." WHITESPACE@[59; 60) " "
CALL_EXPR@[62; 80) DOTDOT@[60; 62) ".."
PATH_EXPR@[62; 78) CALL_EXPR@[62; 80)
PATH@[62; 78) PATH_EXPR@[62; 78)
PATH@[62; 69) PATH@[62; 78)
PATH_SEGMENT@[62; 69) PATH@[62; 69)
NAME_REF@[62; 69) PATH_SEGMENT@[62; 69)
IDENT@[62; 69) "Default" NAME_REF@[62; 69)
COLONCOLON@[69; 71) "::" IDENT@[62; 69) "Default"
PATH_SEGMENT@[71; 78) COLONCOLON@[69; 71) "::"
NAME_REF@[71; 78) PATH_SEGMENT@[71; 78)
IDENT@[71; 78) "default" NAME_REF@[71; 78)
ARG_LIST@[78; 80) IDENT@[71; 78) "default"
L_PAREN@[78; 79) "(" ARG_LIST@[78; 80)
R_PAREN@[79; 80) ")" L_PAREN@[78; 79) "("
WHITESPACE@[80; 81) " " R_PAREN@[79; 80) ")"
R_CURLY@[81; 82) "}" WHITESPACE@[80; 81) " "
SEMI@[82; 83) ";" R_CURLY@[81; 82) "}"
WHITESPACE@[83; 88) "\n " SEMI@[82; 83) ";"
EXPR_STMT@[88; 109) WHITESPACE@[83; 88) "\n "
RECORD_LIT@[88; 108) EXPR_STMT@[88; 109)
PATH@[88; 99) RECORD_LIT@[88; 108)
PATH_SEGMENT@[88; 99) PATH@[88; 99)
NAME_REF@[88; 99) PATH_SEGMENT@[88; 99)
IDENT@[88; 99) "TupleStruct" NAME_REF@[88; 99)
WHITESPACE@[99; 100) " " IDENT@[88; 99) "TupleStruct"
RECORD_FIELD_LIST@[100; 108) WHITESPACE@[99; 100) " "
L_CURLY@[100; 101) "{" RECORD_FIELD_LIST@[100; 108)
WHITESPACE@[101; 102) " " L_CURLY@[100; 101) "{"
RECORD_FIELD@[102; 106) WHITESPACE@[101; 102) " "
NAME_REF@[102; 103) RECORD_FIELD@[102; 106)
INT_NUMBER@[102; 103) "0" NAME_REF@[102; 103)
COLON@[103; 104) ":" INT_NUMBER@[102; 103) "0"
WHITESPACE@[104; 105) " " COLON@[103; 104) ":"
LITERAL@[105; 106) WHITESPACE@[104; 105) " "
INT_NUMBER@[105; 106) "1" LITERAL@[105; 106)
WHITESPACE@[106; 107) " " INT_NUMBER@[105; 106) "1"
R_CURLY@[107; 108) "}" WHITESPACE@[106; 107) " "
SEMI@[108; 109) ";" R_CURLY@[107; 108) "}"
WHITESPACE@[109; 110) "\n" SEMI@[108; 109) ";"
R_CURLY@[110; 111) "}" WHITESPACE@[109; 110) "\n"
R_CURLY@[110; 111) "}"
WHITESPACE@[111; 112) "\n" WHITESPACE@[111; 112) "\n"

View file

@ -8,9 +8,10 @@ SOURCE_FILE@[0; 70)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 11) BLOCK_EXPR@[9; 11)
L_CURLY@[9; 10) "{" BLOCK@[9; 11)
R_CURLY@[10; 11) "}" L_CURLY@[9; 10) "{"
R_CURLY@[10; 11) "}"
WHITESPACE@[11; 12) "\n" WHITESPACE@[11; 12) "\n"
MACRO_CALL@[12; 31) MACRO_CALL@[12; 31)
PATH@[12; 23) PATH@[12; 23)

View file

@ -8,88 +8,96 @@ SOURCE_FILE@[0; 107)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 106) BLOCK_EXPR@[9; 106)
L_CURLY@[9; 10) "{" BLOCK@[9; 106)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 26) WHITESPACE@[10; 15) "\n "
IF_EXPR@[15; 25) EXPR_STMT@[15; 26)
IF_KW@[15; 17) "if" IF_EXPR@[15; 25)
WHITESPACE@[17; 18) " " IF_KW@[15; 17) "if"
CONDITION@[18; 22) WHITESPACE@[17; 18) " "
LITERAL@[18; 22) CONDITION@[18; 22)
TRUE_KW@[18; 22) "true" LITERAL@[18; 22)
WHITESPACE@[22; 23) " " TRUE_KW@[18; 22) "true"
BLOCK@[23; 25) WHITESPACE@[22; 23) " "
L_CURLY@[23; 24) "{" BLOCK_EXPR@[23; 25)
R_CURLY@[24; 25) "}" BLOCK@[23; 25)
SEMI@[25; 26) ";" L_CURLY@[23; 24) "{"
WHITESPACE@[26; 31) "\n " R_CURLY@[24; 25) "}"
EXPR_STMT@[31; 50) SEMI@[25; 26) ";"
IF_EXPR@[31; 49) WHITESPACE@[26; 31) "\n "
IF_KW@[31; 33) "if" EXPR_STMT@[31; 50)
WHITESPACE@[33; 34) " " IF_EXPR@[31; 49)
CONDITION@[34; 38) IF_KW@[31; 33) "if"
LITERAL@[34; 38) WHITESPACE@[33; 34) " "
TRUE_KW@[34; 38) "true" CONDITION@[34; 38)
WHITESPACE@[38; 39) " " LITERAL@[34; 38)
BLOCK@[39; 41) TRUE_KW@[34; 38) "true"
L_CURLY@[39; 40) "{" WHITESPACE@[38; 39) " "
R_CURLY@[40; 41) "}" BLOCK_EXPR@[39; 41)
WHITESPACE@[41; 42) " " BLOCK@[39; 41)
ELSE_KW@[42; 46) "else" L_CURLY@[39; 40) "{"
WHITESPACE@[46; 47) " " R_CURLY@[40; 41) "}"
BLOCK@[47; 49) WHITESPACE@[41; 42) " "
L_CURLY@[47; 48) "{" ELSE_KW@[42; 46) "else"
R_CURLY@[48; 49) "}" WHITESPACE@[46; 47) " "
SEMI@[49; 50) ";" BLOCK_EXPR@[47; 49)
WHITESPACE@[50; 55) "\n " BLOCK@[47; 49)
EXPR_STMT@[55; 91) L_CURLY@[47; 48) "{"
IF_EXPR@[55; 90) R_CURLY@[48; 49) "}"
IF_KW@[55; 57) "if" SEMI@[49; 50) ";"
WHITESPACE@[57; 58) " " WHITESPACE@[50; 55) "\n "
CONDITION@[58; 62) EXPR_STMT@[55; 91)
LITERAL@[58; 62) IF_EXPR@[55; 90)
TRUE_KW@[58; 62) "true" IF_KW@[55; 57) "if"
WHITESPACE@[62; 63) " " WHITESPACE@[57; 58) " "
BLOCK@[63; 65) CONDITION@[58; 62)
L_CURLY@[63; 64) "{" LITERAL@[58; 62)
R_CURLY@[64; 65) "}" TRUE_KW@[58; 62) "true"
WHITESPACE@[65; 66) " " WHITESPACE@[62; 63) " "
ELSE_KW@[66; 70) "else" BLOCK_EXPR@[63; 65)
WHITESPACE@[70; 71) " " BLOCK@[63; 65)
IF_EXPR@[71; 90) L_CURLY@[63; 64) "{"
IF_KW@[71; 73) "if" R_CURLY@[64; 65) "}"
WHITESPACE@[73; 74) " " WHITESPACE@[65; 66) " "
CONDITION@[74; 79) ELSE_KW@[66; 70) "else"
LITERAL@[74; 79) WHITESPACE@[70; 71) " "
FALSE_KW@[74; 79) "false" IF_EXPR@[71; 90)
WHITESPACE@[79; 80) " " IF_KW@[71; 73) "if"
BLOCK@[80; 82) WHITESPACE@[73; 74) " "
L_CURLY@[80; 81) "{" CONDITION@[74; 79)
R_CURLY@[81; 82) "}" LITERAL@[74; 79)
WHITESPACE@[82; 83) " " FALSE_KW@[74; 79) "false"
ELSE_KW@[83; 87) "else" WHITESPACE@[79; 80) " "
WHITESPACE@[87; 88) " " BLOCK_EXPR@[80; 82)
BLOCK@[88; 90) BLOCK@[80; 82)
L_CURLY@[88; 89) "{" L_CURLY@[80; 81) "{"
R_CURLY@[89; 90) "}" R_CURLY@[81; 82) "}"
SEMI@[90; 91) ";" WHITESPACE@[82; 83) " "
WHITESPACE@[91; 96) "\n " ELSE_KW@[83; 87) "else"
EXPR_STMT@[96; 104) WHITESPACE@[87; 88) " "
IF_EXPR@[96; 103) BLOCK_EXPR@[88; 90)
IF_KW@[96; 98) "if" BLOCK@[88; 90)
WHITESPACE@[98; 99) " " L_CURLY@[88; 89) "{"
CONDITION@[99; 100) R_CURLY@[89; 90) "}"
PATH_EXPR@[99; 100) SEMI@[90; 91) ";"
PATH@[99; 100) WHITESPACE@[91; 96) "\n "
PATH_SEGMENT@[99; 100) EXPR_STMT@[96; 104)
NAME_REF@[99; 100) IF_EXPR@[96; 103)
IDENT@[99; 100) "S" IF_KW@[96; 98) "if"
WHITESPACE@[100; 101) " " WHITESPACE@[98; 99) " "
BLOCK@[101; 103) CONDITION@[99; 100)
L_CURLY@[101; 102) "{" PATH_EXPR@[99; 100)
R_CURLY@[102; 103) "}" PATH@[99; 100)
SEMI@[103; 104) ";" PATH_SEGMENT@[99; 100)
WHITESPACE@[104; 105) "\n" NAME_REF@[99; 100)
R_CURLY@[105; 106) "}" IDENT@[99; 100) "S"
WHITESPACE@[100; 101) " "
BLOCK_EXPR@[101; 103)
BLOCK@[101; 103)
L_CURLY@[101; 102) "{"
R_CURLY@[102; 103) "}"
SEMI@[103; 104) ";"
WHITESPACE@[104; 105) "\n"
R_CURLY@[105; 106) "}"
WHITESPACE@[106; 107) "\n" WHITESPACE@[106; 107) "\n"

View file

@ -8,142 +8,143 @@ SOURCE_FILE@[0; 167)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 166) BLOCK_EXPR@[9; 166)
L_CURLY@[9; 10) "{" BLOCK@[9; 166)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 164) WHITESPACE@[10; 15) "\n "
MATCH_EXPR@[15; 163) EXPR_STMT@[15; 164)
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 163)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 163) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 163)
WHITESPACE@[25; 34) "\n " L_CURLY@[24; 25) "{"
MATCH_ARM@[34; 41) WHITESPACE@[25; 34) "\n "
PLACEHOLDER_PAT@[34; 35) MATCH_ARM@[34; 41)
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
FAT_ARROW@[36; 38) "=>" WHITESPACE@[35; 36) " "
WHITESPACE@[38; 39) " " FAT_ARROW@[36; 38) "=>"
TUPLE_EXPR@[39; 41) WHITESPACE@[38; 39) " "
L_PAREN@[39; 40) "(" TUPLE_EXPR@[39; 41)
R_PAREN@[40; 41) ")" L_PAREN@[39; 40) "("
COMMA@[41; 42) "," R_PAREN@[40; 41) ")"
WHITESPACE@[42; 51) "\n " COMMA@[41; 42) ","
MATCH_ARM@[51; 83) WHITESPACE@[42; 51) "\n "
PLACEHOLDER_PAT@[51; 52) MATCH_ARM@[51; 83)
UNDERSCORE@[51; 52) "_" PLACEHOLDER_PAT@[51; 52)
WHITESPACE@[52; 53) " " UNDERSCORE@[51; 52) "_"
MATCH_GUARD@[53; 77) WHITESPACE@[52; 53) " "
IF_KW@[53; 55) "if" MATCH_GUARD@[53; 77)
WHITESPACE@[55; 56) " " IF_KW@[53; 55) "if"
BIN_EXPR@[56; 77) WHITESPACE@[55; 56) " "
PATH_EXPR@[56; 60) BIN_EXPR@[56; 77)
PATH@[56; 60) PATH_EXPR@[56; 60)
PATH_SEGMENT@[56; 60) PATH@[56; 60)
NAME_REF@[56; 60) PATH_SEGMENT@[56; 60)
IDENT@[56; 60) "Test" NAME_REF@[56; 60)
WHITESPACE@[60; 61) " " IDENT@[56; 60) "Test"
R_ANGLE@[61; 62) ">" WHITESPACE@[60; 61) " "
WHITESPACE@[62; 63) " " R_ANGLE@[61; 62) ">"
RECORD_LIT@[63; 77) WHITESPACE@[62; 63) " "
PATH@[63; 67) RECORD_LIT@[63; 77)
PATH_SEGMENT@[63; 67) PATH@[63; 67)
NAME_REF@[63; 67) PATH_SEGMENT@[63; 67)
IDENT@[63; 67) "Test" NAME_REF@[63; 67)
RECORD_FIELD_LIST@[67; 77) IDENT@[63; 67) "Test"
L_CURLY@[67; 68) "{" RECORD_FIELD_LIST@[67; 77)
RECORD_FIELD@[68; 76) L_CURLY@[67; 68) "{"
NAME_REF@[68; 73) RECORD_FIELD@[68; 76)
IDENT@[68; 73) "field" NAME_REF@[68; 73)
COLON@[73; 74) ":" IDENT@[68; 73) "field"
WHITESPACE@[74; 75) " " COLON@[73; 74) ":"
LITERAL@[75; 76) WHITESPACE@[74; 75) " "
INT_NUMBER@[75; 76) "0" LITERAL@[75; 76)
R_CURLY@[76; 77) "}" INT_NUMBER@[75; 76) "0"
WHITESPACE@[77; 78) " " R_CURLY@[76; 77) "}"
FAT_ARROW@[78; 80) "=>" WHITESPACE@[77; 78) " "
WHITESPACE@[80; 81) " " FAT_ARROW@[78; 80) "=>"
TUPLE_EXPR@[81; 83) WHITESPACE@[80; 81) " "
L_PAREN@[81; 82) "(" TUPLE_EXPR@[81; 83)
R_PAREN@[82; 83) ")" L_PAREN@[81; 82) "("
COMMA@[83; 84) "," R_PAREN@[82; 83) ")"
WHITESPACE@[84; 93) "\n " COMMA@[83; 84) ","
MATCH_ARM@[93; 109) WHITESPACE@[84; 93) "\n "
BIND_PAT@[93; 94) MATCH_ARM@[93; 109)
NAME@[93; 94) BIND_PAT@[93; 94)
IDENT@[93; 94) "X" NAME@[93; 94)
WHITESPACE@[94; 95) " " IDENT@[93; 94) "X"
PIPE@[95; 96) "|" WHITESPACE@[94; 95) " "
WHITESPACE@[96; 97) " " PIPE@[95; 96) "|"
BIND_PAT@[97; 98) WHITESPACE@[96; 97) " "
NAME@[97; 98) BIND_PAT@[97; 98)
IDENT@[97; 98) "Y" NAME@[97; 98)
WHITESPACE@[98; 99) " " IDENT@[97; 98) "Y"
MATCH_GUARD@[99; 103) WHITESPACE@[98; 99) " "
IF_KW@[99; 101) "if" MATCH_GUARD@[99; 103)
WHITESPACE@[101; 102) " " IF_KW@[99; 101) "if"
PATH_EXPR@[102; 103) WHITESPACE@[101; 102) " "
PATH@[102; 103) PATH_EXPR@[102; 103)
PATH_SEGMENT@[102; 103) PATH@[102; 103)
NAME_REF@[102; 103) PATH_SEGMENT@[102; 103)
IDENT@[102; 103) "Z" NAME_REF@[102; 103)
WHITESPACE@[103; 104) " " IDENT@[102; 103) "Z"
FAT_ARROW@[104; 106) "=>" WHITESPACE@[103; 104) " "
WHITESPACE@[106; 107) " " FAT_ARROW@[104; 106) "=>"
TUPLE_EXPR@[107; 109) WHITESPACE@[106; 107) " "
L_PAREN@[107; 108) "(" TUPLE_EXPR@[107; 109)
R_PAREN@[108; 109) ")" L_PAREN@[107; 108) "("
COMMA@[109; 110) "," R_PAREN@[108; 109) ")"
WHITESPACE@[110; 119) "\n " COMMA@[109; 110) ","
MATCH_ARM@[119; 137) WHITESPACE@[110; 119) "\n "
PIPE@[119; 120) "|" MATCH_ARM@[119; 137)
WHITESPACE@[120; 121) " " PIPE@[119; 120) "|"
BIND_PAT@[121; 122) WHITESPACE@[120; 121) " "
NAME@[121; 122) BIND_PAT@[121; 122)
IDENT@[121; 122) "X" NAME@[121; 122)
WHITESPACE@[122; 123) " " IDENT@[121; 122) "X"
PIPE@[123; 124) "|" WHITESPACE@[122; 123) " "
WHITESPACE@[124; 125) " " PIPE@[123; 124) "|"
BIND_PAT@[125; 126) WHITESPACE@[124; 125) " "
NAME@[125; 126) BIND_PAT@[125; 126)
IDENT@[125; 126) "Y" NAME@[125; 126)
WHITESPACE@[126; 127) " " IDENT@[125; 126) "Y"
MATCH_GUARD@[127; 131) WHITESPACE@[126; 127) " "
IF_KW@[127; 129) "if" MATCH_GUARD@[127; 131)
WHITESPACE@[129; 130) " " IF_KW@[127; 129) "if"
PATH_EXPR@[130; 131) WHITESPACE@[129; 130) " "
PATH@[130; 131) PATH_EXPR@[130; 131)
PATH_SEGMENT@[130; 131) PATH@[130; 131)
NAME_REF@[130; 131) PATH_SEGMENT@[130; 131)
IDENT@[130; 131) "Z" NAME_REF@[130; 131)
WHITESPACE@[131; 132) " " IDENT@[130; 131) "Z"
FAT_ARROW@[132; 134) "=>" WHITESPACE@[131; 132) " "
WHITESPACE@[134; 135) " " FAT_ARROW@[132; 134) "=>"
TUPLE_EXPR@[135; 137) WHITESPACE@[134; 135) " "
L_PAREN@[135; 136) "(" TUPLE_EXPR@[135; 137)
R_PAREN@[136; 137) ")" L_PAREN@[135; 136) "("
COMMA@[137; 138) "," R_PAREN@[136; 137) ")"
WHITESPACE@[138; 147) "\n " COMMA@[137; 138) ","
MATCH_ARM@[147; 156) WHITESPACE@[138; 147) "\n "
PIPE@[147; 148) "|" MATCH_ARM@[147; 156)
WHITESPACE@[148; 149) " " PIPE@[147; 148) "|"
BIND_PAT@[149; 150) WHITESPACE@[148; 149) " "
NAME@[149; 150) BIND_PAT@[149; 150)
IDENT@[149; 150) "X" NAME@[149; 150)
WHITESPACE@[150; 151) " " IDENT@[149; 150) "X"
FAT_ARROW@[151; 153) "=>" WHITESPACE@[150; 151) " "
WHITESPACE@[153; 154) " " FAT_ARROW@[151; 153) "=>"
TUPLE_EXPR@[154; 156) WHITESPACE@[153; 154) " "
L_PAREN@[154; 155) "(" TUPLE_EXPR@[154; 156)
R_PAREN@[155; 156) ")" L_PAREN@[154; 155) "("
COMMA@[156; 157) "," R_PAREN@[155; 156) ")"
WHITESPACE@[157; 162) "\n " COMMA@[156; 157) ","
R_CURLY@[162; 163) "}" WHITESPACE@[157; 162) "\n "
SEMI@[163; 164) ";" R_CURLY@[162; 163) "}"
WHITESPACE@[164; 165) "\n" SEMI@[163; 164) ";"
R_CURLY@[165; 166) "}" WHITESPACE@[164; 165) "\n"
R_CURLY@[165; 166) "}"
WHITESPACE@[166; 167) "\n" WHITESPACE@[166; 167) "\n"

View file

@ -8,45 +8,46 @@ SOURCE_FILE@[0; 46)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 45) BLOCK_EXPR@[9; 45)
L_CURLY@[9; 10) "{" BLOCK@[9; 45)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 31) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 31)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
PLACEHOLDER_PAT@[19; 20) WHITESPACE@[18; 19) " "
UNDERSCORE@[19; 20) "_" PLACEHOLDER_PAT@[19; 20)
WHITESPACE@[20; 21) " " UNDERSCORE@[19; 20) "_"
EQ@[21; 22) "=" WHITESPACE@[20; 21) " "
WHITESPACE@[22; 23) " " EQ@[21; 22) "="
BIN_EXPR@[23; 30) WHITESPACE@[22; 23) " "
BLOCK_EXPR@[23; 26) BIN_EXPR@[23; 30)
BLOCK@[23; 26) BLOCK_EXPR@[23; 26)
L_CURLY@[23; 24) "{" BLOCK@[23; 26)
LITERAL@[24; 25) L_CURLY@[23; 24) "{"
INT_NUMBER@[24; 25) "1" LITERAL@[24; 25)
R_CURLY@[25; 26) "}" INT_NUMBER@[24; 25) "1"
WHITESPACE@[26; 27) " " R_CURLY@[25; 26) "}"
AMP@[27; 28) "&" WHITESPACE@[26; 27) " "
WHITESPACE@[28; 29) " " AMP@[27; 28) "&"
LITERAL@[29; 30) WHITESPACE@[28; 29) " "
INT_NUMBER@[29; 30) "2" LITERAL@[29; 30)
SEMI@[30; 31) ";" INT_NUMBER@[29; 30) "2"
WHITESPACE@[31; 36) "\n " SEMI@[30; 31) ";"
EXPR_STMT@[36; 39) WHITESPACE@[31; 36) "\n "
BLOCK_EXPR@[36; 39) EXPR_STMT@[36; 39)
BLOCK@[36; 39) BLOCK_EXPR@[36; 39)
L_CURLY@[36; 37) "{" BLOCK@[36; 39)
LITERAL@[37; 38) L_CURLY@[36; 37) "{"
INT_NUMBER@[37; 38) "1" LITERAL@[37; 38)
R_CURLY@[38; 39) "}" INT_NUMBER@[37; 38) "1"
WHITESPACE@[39; 40) " " R_CURLY@[38; 39) "}"
EXPR_STMT@[40; 43) WHITESPACE@[39; 40) " "
REF_EXPR@[40; 42) EXPR_STMT@[40; 43)
AMP@[40; 41) "&" REF_EXPR@[40; 42)
LITERAL@[41; 42) AMP@[40; 41) "&"
INT_NUMBER@[41; 42) "2" LITERAL@[41; 42)
SEMI@[42; 43) ";" INT_NUMBER@[41; 42) "2"
WHITESPACE@[43; 44) "\n" SEMI@[42; 43) ";"
R_CURLY@[44; 45) "}" WHITESPACE@[43; 44) "\n"
R_CURLY@[44; 45) "}"
WHITESPACE@[45; 46) "\n" WHITESPACE@[45; 46) "\n"

View file

@ -8,37 +8,38 @@ SOURCE_FILE@[0; 47)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 46) BLOCK_EXPR@[9; 46)
L_CURLY@[9; 10) "{" BLOCK@[9; 46)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 28) WHITESPACE@[10; 15) "\n "
MATCH_EXPR@[15; 27) EXPR_STMT@[15; 28)
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 27)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 27) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 27)
WHITESPACE@[25; 26) " " L_CURLY@[24; 25) "{"
R_CURLY@[26; 27) "}" WHITESPACE@[25; 26) " "
SEMI@[27; 28) ";" R_CURLY@[26; 27) "}"
WHITESPACE@[28; 33) "\n " SEMI@[27; 28) ";"
EXPR_STMT@[33; 44) WHITESPACE@[28; 33) "\n "
MATCH_EXPR@[33; 43) EXPR_STMT@[33; 44)
MATCH_KW@[33; 38) "match" MATCH_EXPR@[33; 43)
WHITESPACE@[38; 39) " " MATCH_KW@[33; 38) "match"
PATH_EXPR@[39; 40) WHITESPACE@[38; 39) " "
PATH@[39; 40) PATH_EXPR@[39; 40)
PATH_SEGMENT@[39; 40) PATH@[39; 40)
NAME_REF@[39; 40) PATH_SEGMENT@[39; 40)
IDENT@[39; 40) "S" NAME_REF@[39; 40)
WHITESPACE@[40; 41) " " IDENT@[39; 40) "S"
MATCH_ARM_LIST@[41; 43) WHITESPACE@[40; 41) " "
L_CURLY@[41; 42) "{" MATCH_ARM_LIST@[41; 43)
R_CURLY@[42; 43) "}" L_CURLY@[41; 42) "{"
SEMI@[43; 44) ";" R_CURLY@[42; 43) "}"
WHITESPACE@[44; 45) "\n" SEMI@[43; 44) ";"
R_CURLY@[45; 46) "}" WHITESPACE@[44; 45) "\n"
R_CURLY@[45; 46) "}"
WHITESPACE@[46; 47) "\n" WHITESPACE@[46; 47) "\n"

View file

@ -8,21 +8,22 @@ SOURCE_FILE@[0; 40)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 39) BLOCK_EXPR@[9; 39)
L_CURLY@[9; 10) "{" BLOCK@[9; 39)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 22) WHITESPACE@[10; 15) "\n "
RETURN_EXPR@[15; 21) EXPR_STMT@[15; 22)
RETURN_KW@[15; 21) "return" RETURN_EXPR@[15; 21)
SEMI@[21; 22) ";" RETURN_KW@[15; 21) "return"
WHITESPACE@[22; 27) "\n " SEMI@[21; 22) ";"
EXPR_STMT@[27; 37) WHITESPACE@[22; 27) "\n "
RETURN_EXPR@[27; 36) EXPR_STMT@[27; 37)
RETURN_KW@[27; 33) "return" RETURN_EXPR@[27; 36)
WHITESPACE@[33; 34) " " RETURN_KW@[27; 33) "return"
LITERAL@[34; 36) WHITESPACE@[33; 34) " "
INT_NUMBER@[34; 36) "92" LITERAL@[34; 36)
SEMI@[36; 37) ";" INT_NUMBER@[34; 36) "92"
WHITESPACE@[37; 38) "\n" SEMI@[36; 37) ";"
R_CURLY@[38; 39) "}" WHITESPACE@[37; 38) "\n"
R_CURLY@[38; 39) "}"
WHITESPACE@[39; 40) "\n" WHITESPACE@[39; 40) "\n"

View file

@ -8,55 +8,56 @@ SOURCE_FILE@[0; 84)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 83) BLOCK_EXPR@[9; 83)
L_CURLY@[9; 10) "{" BLOCK@[9; 83)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
MATCH_EXPR@[15; 81) WHITESPACE@[10; 15) "\n "
MATCH_KW@[15; 20) "match" MATCH_EXPR@[15; 81)
WHITESPACE@[20; 21) " " MATCH_KW@[15; 20) "match"
TUPLE_EXPR@[21; 23) WHITESPACE@[20; 21) " "
L_PAREN@[21; 22) "(" TUPLE_EXPR@[21; 23)
R_PAREN@[22; 23) ")" L_PAREN@[21; 22) "("
WHITESPACE@[23; 24) " " R_PAREN@[22; 23) ")"
MATCH_ARM_LIST@[24; 81) WHITESPACE@[23; 24) " "
L_CURLY@[24; 25) "{" MATCH_ARM_LIST@[24; 81)
WHITESPACE@[25; 34) "\n " L_CURLY@[24; 25) "{"
MATCH_ARM@[34; 41) WHITESPACE@[25; 34) "\n "
PLACEHOLDER_PAT@[34; 35) MATCH_ARM@[34; 41)
UNDERSCORE@[34; 35) "_" PLACEHOLDER_PAT@[34; 35)
WHITESPACE@[35; 36) " " UNDERSCORE@[34; 35) "_"
FAT_ARROW@[36; 38) "=>" WHITESPACE@[35; 36) " "
WHITESPACE@[38; 39) " " FAT_ARROW@[36; 38) "=>"
BLOCK_EXPR@[39; 41) WHITESPACE@[38; 39) " "
BLOCK@[39; 41) BLOCK_EXPR@[39; 41)
L_CURLY@[39; 40) "{" BLOCK@[39; 41)
R_CURLY@[40; 41) "}" L_CURLY@[39; 40) "{"
WHITESPACE@[41; 50) "\n " R_CURLY@[40; 41) "}"
MATCH_ARM@[50; 58) WHITESPACE@[41; 50) "\n "
TUPLE_PAT@[50; 52) MATCH_ARM@[50; 58)
L_PAREN@[50; 51) "(" TUPLE_PAT@[50; 52)
R_PAREN@[51; 52) ")" L_PAREN@[50; 51) "("
WHITESPACE@[52; 53) " " R_PAREN@[51; 52) ")"
FAT_ARROW@[53; 55) "=>" WHITESPACE@[52; 53) " "
WHITESPACE@[55; 56) " " FAT_ARROW@[53; 55) "=>"
BLOCK_EXPR@[56; 58) WHITESPACE@[55; 56) " "
BLOCK@[56; 58) BLOCK_EXPR@[56; 58)
L_CURLY@[56; 57) "{" BLOCK@[56; 58)
R_CURLY@[57; 58) "}" L_CURLY@[56; 57) "{"
WHITESPACE@[58; 67) "\n " R_CURLY@[57; 58) "}"
MATCH_ARM@[67; 75) WHITESPACE@[58; 67) "\n "
SLICE_PAT@[67; 69) MATCH_ARM@[67; 75)
L_BRACK@[67; 68) "[" SLICE_PAT@[67; 69)
R_BRACK@[68; 69) "]" L_BRACK@[67; 68) "["
WHITESPACE@[69; 70) " " R_BRACK@[68; 69) "]"
FAT_ARROW@[70; 72) "=>" WHITESPACE@[69; 70) " "
WHITESPACE@[72; 73) " " FAT_ARROW@[70; 72) "=>"
BLOCK_EXPR@[73; 75) WHITESPACE@[72; 73) " "
BLOCK@[73; 75) BLOCK_EXPR@[73; 75)
L_CURLY@[73; 74) "{" BLOCK@[73; 75)
R_CURLY@[74; 75) "}" L_CURLY@[73; 74) "{"
WHITESPACE@[75; 80) "\n " R_CURLY@[74; 75) "}"
R_CURLY@[80; 81) "}" WHITESPACE@[75; 80) "\n "
WHITESPACE@[81; 82) "\n" R_CURLY@[80; 81) "}"
R_CURLY@[82; 83) "}" WHITESPACE@[81; 82) "\n"
R_CURLY@[82; 83) "}"
WHITESPACE@[83; 84) "\n" WHITESPACE@[83; 84) "\n"

View file

@ -8,9 +8,10 @@ SOURCE_FILE@[0; 65)
L_PAREN@[4; 5) "(" L_PAREN@[4; 5) "("
R_PAREN@[5; 6) ")" R_PAREN@[5; 6) ")"
WHITESPACE@[6; 7) " " WHITESPACE@[6; 7) " "
BLOCK@[7; 9) BLOCK_EXPR@[7; 9)
L_CURLY@[7; 8) "{" BLOCK@[7; 9)
R_CURLY@[8; 9) "}" L_CURLY@[7; 8) "{"
R_CURLY@[8; 9) "}"
WHITESPACE@[9; 10) "\n" WHITESPACE@[9; 10) "\n"
FN_DEF@[10; 31) FN_DEF@[10; 31)
FN_KW@[10; 12) "fn" FN_KW@[10; 12) "fn"
@ -21,22 +22,23 @@ SOURCE_FILE@[0; 65)
L_PAREN@[14; 15) "(" L_PAREN@[14; 15) "("
R_PAREN@[15; 16) ")" R_PAREN@[15; 16) ")"
WHITESPACE@[16; 17) " " WHITESPACE@[16; 17) " "
BLOCK@[17; 31) BLOCK_EXPR@[17; 31)
L_CURLY@[17; 18) "{" BLOCK@[17; 31)
WHITESPACE@[18; 19) " " L_CURLY@[17; 18) "{"
LET_STMT@[19; 29) WHITESPACE@[18; 19) " "
LET_KW@[19; 22) "let" LET_STMT@[19; 29)
WHITESPACE@[22; 23) " " LET_KW@[19; 22) "let"
PLACEHOLDER_PAT@[23; 24) WHITESPACE@[22; 23) " "
UNDERSCORE@[23; 24) "_" PLACEHOLDER_PAT@[23; 24)
WHITESPACE@[24; 25) " " UNDERSCORE@[23; 24) "_"
EQ@[25; 26) "=" WHITESPACE@[24; 25) " "
WHITESPACE@[26; 27) " " EQ@[25; 26) "="
LITERAL@[27; 28) WHITESPACE@[26; 27) " "
INT_NUMBER@[27; 28) "1" LITERAL@[27; 28)
SEMI@[28; 29) ";" INT_NUMBER@[27; 28) "1"
WHITESPACE@[29; 30) " " SEMI@[28; 29) ";"
R_CURLY@[30; 31) "}" WHITESPACE@[29; 30) " "
R_CURLY@[30; 31) "}"
WHITESPACE@[31; 32) "\n" WHITESPACE@[31; 32) "\n"
FN_DEF@[32; 48) FN_DEF@[32; 48)
FN_KW@[32; 34) "fn" FN_KW@[32; 34) "fn"
@ -47,20 +49,21 @@ SOURCE_FILE@[0; 65)
L_PAREN@[36; 37) "(" L_PAREN@[36; 37) "("
R_PAREN@[37; 38) ")" R_PAREN@[37; 38) ")"
WHITESPACE@[38; 39) " " WHITESPACE@[38; 39) " "
BLOCK@[39; 48) BLOCK_EXPR@[39; 48)
L_CURLY@[39; 40) "{" BLOCK@[39; 48)
WHITESPACE@[40; 41) " " L_CURLY@[39; 40) "{"
EXPR_STMT@[41; 43) WHITESPACE@[40; 41) " "
LITERAL@[41; 42) EXPR_STMT@[41; 43)
INT_NUMBER@[41; 42) "1" LITERAL@[41; 42)
SEMI@[42; 43) ";" INT_NUMBER@[41; 42) "1"
WHITESPACE@[43; 44) " " SEMI@[42; 43) ";"
EXPR_STMT@[44; 46) WHITESPACE@[43; 44) " "
LITERAL@[44; 45) EXPR_STMT@[44; 46)
INT_NUMBER@[44; 45) "2" LITERAL@[44; 45)
SEMI@[45; 46) ";" INT_NUMBER@[44; 45) "2"
WHITESPACE@[46; 47) " " SEMI@[45; 46) ";"
R_CURLY@[47; 48) "}" WHITESPACE@[46; 47) " "
R_CURLY@[47; 48) "}"
WHITESPACE@[48; 49) "\n" WHITESPACE@[48; 49) "\n"
FN_DEF@[49; 64) FN_DEF@[49; 64)
FN_KW@[49; 51) "fn" FN_KW@[49; 51) "fn"
@ -71,16 +74,17 @@ SOURCE_FILE@[0; 65)
L_PAREN@[53; 54) "(" L_PAREN@[53; 54) "("
R_PAREN@[54; 55) ")" R_PAREN@[54; 55) ")"
WHITESPACE@[55; 56) " " WHITESPACE@[55; 56) " "
BLOCK@[56; 64) BLOCK_EXPR@[56; 64)
L_CURLY@[56; 57) "{" BLOCK@[56; 64)
WHITESPACE@[57; 58) " " L_CURLY@[56; 57) "{"
EXPR_STMT@[58; 60) WHITESPACE@[57; 58) " "
LITERAL@[58; 59) EXPR_STMT@[58; 60)
INT_NUMBER@[58; 59) "1" LITERAL@[58; 59)
SEMI@[59; 60) ";" INT_NUMBER@[58; 59) "1"
WHITESPACE@[60; 61) " " SEMI@[59; 60) ";"
LITERAL@[61; 62) WHITESPACE@[60; 61) " "
INT_NUMBER@[61; 62) "2" LITERAL@[61; 62)
WHITESPACE@[62; 63) " " INT_NUMBER@[61; 62) "2"
R_CURLY@[63; 64) "}" WHITESPACE@[62; 63) " "
R_CURLY@[63; 64) "}"
WHITESPACE@[64; 65) "\n" WHITESPACE@[64; 65) "\n"

View file

@ -33,7 +33,8 @@ SOURCE_FILE@[0; 29)
NAME_REF@[21; 25) NAME_REF@[21; 25)
IDENT@[21; 25) "Copy" IDENT@[21; 25) "Copy"
WHITESPACE@[25; 26) " " WHITESPACE@[25; 26) " "
BLOCK@[26; 28) BLOCK_EXPR@[26; 28)
L_CURLY@[26; 27) "{" BLOCK@[26; 28)
R_CURLY@[27; 28) "}" L_CURLY@[26; 27) "{"
R_CURLY@[27; 28) "}"
WHITESPACE@[28; 29) "\n" WHITESPACE@[28; 29) "\n"

View file

@ -8,18 +8,19 @@ SOURCE_FILE@[0; 21)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 20) BLOCK_EXPR@[9; 20)
L_CURLY@[9; 10) "{" BLOCK@[9; 20)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
EXPR_STMT@[15; 18) WHITESPACE@[10; 15) "\n "
TRY_EXPR@[15; 17) EXPR_STMT@[15; 18)
PATH_EXPR@[15; 16) TRY_EXPR@[15; 17)
PATH@[15; 16) PATH_EXPR@[15; 16)
PATH_SEGMENT@[15; 16) PATH@[15; 16)
NAME_REF@[15; 16) PATH_SEGMENT@[15; 16)
IDENT@[15; 16) "x" NAME_REF@[15; 16)
QUESTION@[16; 17) "?" IDENT@[15; 16) "x"
SEMI@[17; 18) ";" QUESTION@[16; 17) "?"
WHITESPACE@[18; 19) "\n" SEMI@[17; 18) ";"
R_CURLY@[19; 20) "}" WHITESPACE@[18; 19) "\n"
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n" WHITESPACE@[20; 21) "\n"

View file

@ -8,23 +8,24 @@ SOURCE_FILE@[0; 26)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 25) BLOCK_EXPR@[9; 25)
L_CURLY@[9; 10) "{" BLOCK@[9; 25)
WHITESPACE@[10; 11) " " L_CURLY@[9; 10) "{"
LET_STMT@[11; 23) WHITESPACE@[10; 11) " "
LET_KW@[11; 14) "let" LET_STMT@[11; 23)
WHITESPACE@[14; 15) " " LET_KW@[11; 14) "let"
BIND_PAT@[15; 16) WHITESPACE@[14; 15) " "
NAME@[15; 16) BIND_PAT@[15; 16)
IDENT@[15; 16) "x" NAME@[15; 16)
WHITESPACE@[16; 17) " " IDENT@[15; 16) "x"
EQ@[17; 18) "=" WHITESPACE@[16; 17) " "
WHITESPACE@[18; 19) " " EQ@[17; 18) "="
RANGE_EXPR@[19; 22) WHITESPACE@[18; 19) " "
LITERAL@[19; 20) RANGE_EXPR@[19; 22)
INT_NUMBER@[19; 20) "1" LITERAL@[19; 20)
DOTDOT@[20; 22) ".." INT_NUMBER@[19; 20) "1"
SEMI@[22; 23) ";" DOTDOT@[20; 22) ".."
WHITESPACE@[23; 24) " " SEMI@[22; 23) ";"
R_CURLY@[24; 25) "}" WHITESPACE@[23; 24) " "
R_CURLY@[24; 25) "}"
WHITESPACE@[25; 26) "\n" WHITESPACE@[25; 26) "\n"

View file

@ -88,9 +88,10 @@ SOURCE_FILE@[0; 200)
NAME_REF@[68; 76) NAME_REF@[68; 76)
IDENT@[68; 76) "Iterator" IDENT@[68; 76) "Iterator"
WHITESPACE@[76; 77) " " WHITESPACE@[76; 77) " "
BLOCK@[77; 79) BLOCK_EXPR@[77; 79)
L_CURLY@[77; 78) "{" BLOCK@[77; 79)
R_CURLY@[78; 79) "}" L_CURLY@[77; 78) "{"
R_CURLY@[78; 79) "}"
WHITESPACE@[79; 80) "\n" WHITESPACE@[79; 80) "\n"
FN_DEF@[80; 134) FN_DEF@[80; 134)
FN_KW@[80; 82) "fn" FN_KW@[80; 82) "fn"
@ -153,9 +154,10 @@ SOURCE_FILE@[0; 200)
NAME_REF@[123; 131) NAME_REF@[123; 131)
IDENT@[123; 131) "Iterator" IDENT@[123; 131) "Iterator"
WHITESPACE@[131; 132) " " WHITESPACE@[131; 132) " "
BLOCK@[132; 134) BLOCK_EXPR@[132; 134)
L_CURLY@[132; 133) "{" BLOCK@[132; 134)
R_CURLY@[133; 134) "}" L_CURLY@[132; 133) "{"
R_CURLY@[133; 134) "}"
WHITESPACE@[134; 135) "\n" WHITESPACE@[134; 135) "\n"
FN_DEF@[135; 199) FN_DEF@[135; 199)
FN_KW@[135; 137) "fn" FN_KW@[135; 137) "fn"
@ -234,7 +236,8 @@ SOURCE_FILE@[0; 200)
NAME_REF@[188; 196) NAME_REF@[188; 196)
IDENT@[188; 196) "Iterator" IDENT@[188; 196) "Iterator"
WHITESPACE@[196; 197) " " WHITESPACE@[196; 197) " "
BLOCK@[197; 199) BLOCK_EXPR@[197; 199)
L_CURLY@[197; 198) "{" BLOCK@[197; 199)
R_CURLY@[198; 199) "}" L_CURLY@[197; 198) "{"
R_CURLY@[198; 199) "}"
WHITESPACE@[199; 200) "\n" WHITESPACE@[199; 200) "\n"

View file

@ -8,47 +8,48 @@ SOURCE_FILE@[0; 52)
L_PAREN@[6; 7) "(" L_PAREN@[6; 7) "("
R_PAREN@[7; 8) ")" R_PAREN@[7; 8) ")"
WHITESPACE@[8; 9) " " WHITESPACE@[8; 9) " "
BLOCK@[9; 51) BLOCK_EXPR@[9; 51)
L_CURLY@[9; 10) "{" BLOCK@[9; 51)
WHITESPACE@[10; 15) "\n " L_CURLY@[9; 10) "{"
LET_STMT@[15; 26) WHITESPACE@[10; 15) "\n "
LET_KW@[15; 18) "let" LET_STMT@[15; 26)
WHITESPACE@[18; 19) " " LET_KW@[15; 18) "let"
PLACEHOLDER_PAT@[19; 20) WHITESPACE@[18; 19) " "
UNDERSCORE@[19; 20) "_" PLACEHOLDER_PAT@[19; 20)
WHITESPACE@[20; 21) " " UNDERSCORE@[19; 20) "_"
EQ@[21; 22) "=" WHITESPACE@[20; 21) " "
WHITESPACE@[22; 23) " " EQ@[21; 22) "="
REF_EXPR@[23; 25) WHITESPACE@[22; 23) " "
AMP@[23; 24) "&" REF_EXPR@[23; 25)
LITERAL@[24; 25) AMP@[23; 24) "&"
INT_NUMBER@[24; 25) "1" LITERAL@[24; 25)
SEMI@[25; 26) ";" INT_NUMBER@[24; 25) "1"
WHITESPACE@[26; 31) "\n " SEMI@[25; 26) ";"
LET_STMT@[31; 49) WHITESPACE@[26; 31) "\n "
LET_KW@[31; 34) "let" LET_STMT@[31; 49)
WHITESPACE@[34; 35) " " LET_KW@[31; 34) "let"
PLACEHOLDER_PAT@[35; 36) WHITESPACE@[34; 35) " "
UNDERSCORE@[35; 36) "_" PLACEHOLDER_PAT@[35; 36)
WHITESPACE@[36; 37) " " UNDERSCORE@[35; 36) "_"
EQ@[37; 38) "=" WHITESPACE@[36; 37) " "
WHITESPACE@[38; 39) " " EQ@[37; 38) "="
REF_EXPR@[39; 48) WHITESPACE@[38; 39) " "
AMP@[39; 40) "&" REF_EXPR@[39; 48)
MUT_KW@[40; 43) "mut" AMP@[39; 40) "&"
WHITESPACE@[43; 44) " " MUT_KW@[40; 43) "mut"
REF_EXPR@[44; 48) WHITESPACE@[43; 44) " "
AMP@[44; 45) "&" REF_EXPR@[44; 48)
CALL_EXPR@[45; 48) AMP@[44; 45) "&"
PATH_EXPR@[45; 46) CALL_EXPR@[45; 48)
PATH@[45; 46) PATH_EXPR@[45; 46)
PATH_SEGMENT@[45; 46) PATH@[45; 46)
NAME_REF@[45; 46) PATH_SEGMENT@[45; 46)
IDENT@[45; 46) "f" NAME_REF@[45; 46)
ARG_LIST@[46; 48) IDENT@[45; 46) "f"
L_PAREN@[46; 47) "(" ARG_LIST@[46; 48)
R_PAREN@[47; 48) ")" L_PAREN@[46; 47) "("
SEMI@[48; 49) ";" R_PAREN@[47; 48) ")"
WHITESPACE@[49; 50) "\n" SEMI@[48; 49) ";"
R_CURLY@[50; 51) "}" WHITESPACE@[49; 50) "\n"
R_CURLY@[50; 51) "}"
WHITESPACE@[51; 52) "\n" WHITESPACE@[51; 52) "\n"

Some files were not shown because too many files have changed in this diff Show more