3926: Rename some tokens r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot]
2020-04-10 15:07:36 +00:00
committed by GitHub
221 changed files with 1777 additions and 3858 deletions
@@ -1,6 +1,6 @@
use hir::HirDisplay;
use ra_syntax::{
ast::{self, AstNode, AstToken, LetStmt, NameOwner, TypeAscriptionOwner},
ast::{self, AstNode, LetStmt, NameOwner, TypeAscriptionOwner},
TextRange,
};
@@ -35,7 +35,7 @@ pub(crate) fn add_explicit_type(ctx: AssistCtx) -> Option<Assist> {
let name = pat.name()?;
let name_range = name.syntax().text_range();
let stmt_range = stmt.syntax().text_range();
let eq_range = stmt.eq_token()?.syntax().text_range();
let eq_range = stmt.eq_token()?.text_range();
// Assist should only be applicable if cursor is between 'let' and '='
let let_range = TextRange::from_to(stmt_range.start(), eq_range.start());
let cursor_in_range = ctx.frange.range.is_subrange(&let_range);
+1 -1
View File
@@ -1,5 +1,5 @@
use ra_syntax::{
ast::{self, AstNode, AstToken, NameOwner, TypeParamsOwner},
ast::{self, AstNode, NameOwner, TypeParamsOwner},
TextUnit,
};
use stdx::{format_to, SepBy};
+1 -2
View File
@@ -1,8 +1,7 @@
use hir::Adt;
use ra_syntax::{
ast::{
self, AstNode, AstToken, NameOwner, StructKind, TypeAscriptionOwner, TypeParamsOwner,
VisibilityOwner,
self, AstNode, NameOwner, StructKind, TypeAscriptionOwner, TypeParamsOwner, VisibilityOwner,
},
TextUnit, T,
};
@@ -61,7 +61,7 @@ pub(crate) fn introduce_variable(ctx: AssistCtx) -> Option<Assist> {
};
if is_full_stmt {
tested_by!(test_introduce_var_expr_stmt);
if full_stmt.unwrap().semi_token().is_none() {
if full_stmt.unwrap().semicolon_token().is_none() {
buf.push_str(";");
}
edit.replace(expr.syntax().text_range(), buf);
@@ -3,7 +3,7 @@
use ra_syntax::{
algo::{neighbor, SyntaxRewriter},
ast::{self, edit::AstNodeEdit, make},
AstNode, AstToken, Direction, InsertPosition, SyntaxElement, T,
AstNode, Direction, InsertPosition, SyntaxElement, T,
};
use crate::{Assist, AssistCtx, AssistId};
@@ -82,7 +82,7 @@ fn try_merge_trees(old: &ast::UseTree, new: &ast::UseTree) -> Option<ast::UseTre
.filter(|it| it.kind() != T!['{'] && it.kind() != T!['}']),
);
let use_tree_list = lhs.use_tree_list()?;
let pos = InsertPosition::Before(use_tree_list.r_curly_token()?.syntax().clone().into());
let pos = InsertPosition::Before(use_tree_list.r_curly_token()?.into());
let use_tree_list = use_tree_list.insert_children(pos, to_insert);
Some(lhs.with_use_tree_list(use_tree_list))
}
@@ -2,6 +2,7 @@
ast::{self, edit::AstNodeEdit, make, AstNode, NameOwner, TypeBoundsOwner},
match_ast,
SyntaxKind::*,
T,
};
use crate::{Assist, AssistCtx, AssistId};
@@ -42,7 +43,7 @@ pub(crate) fn move_bounds_to_where_clause(ctx: AssistCtx) -> Option<Assist> {
ast::EnumDef(it) => it.variant_list()?.syntax().clone().into(),
ast::StructDef(it) => {
it.syntax().children_with_tokens()
.find(|it| it.kind() == RECORD_FIELD_DEF_LIST || it.kind() == SEMI)?
.find(|it| it.kind() == RECORD_FIELD_DEF_LIST || it.kind() == T![;])?
},
_ => return None
}
+1 -1
View File
@@ -287,7 +287,7 @@ fn add_module(&mut self, current_module: Option<Idx<ModuleData>>, module: ast::M
let visibility = RawVisibility::from_ast_with_hygiene(module.visibility(), &self.hygiene);
let ast_id = self.source_ast_id_map.ast_id(&module);
if module.semi_token().is_some() {
if module.semicolon_token().is_some() {
let item =
self.raw_items.modules.alloc(ModuleData::Declaration { name, visibility, ast_id });
self.push_item(current_module, attrs, RawItemKind::Module(item));
@@ -35,7 +35,7 @@
use ra_assists::utils::get_missing_impl_items;
use ra_syntax::{
ast::{self, edit, ImplDef},
AstNode, SyntaxKind, SyntaxNode, TextRange,
AstNode, SyntaxKind, SyntaxNode, TextRange, T,
};
use ra_text_edit::TextEdit;
@@ -204,7 +204,7 @@ fn make_const_compl_syntax(const_: &ast::ConstDef) -> String {
let end = const_
.syntax()
.children_with_tokens()
.find(|s| s.kind() == SyntaxKind::SEMI || s.kind() == SyntaxKind::EQ)
.find(|s| s.kind() == T![;] || s.kind() == T![=])
.map_or(const_end, |f| f.text_range().start());
let len = end - start;
+4 -4
View File
@@ -165,7 +165,7 @@ fn foo() {
PATH_SEGMENT@[16; 22)
NAME_REF@[16; 22)
IDENT@[16; 22) "assert"
EXCL@[22; 23) "!"
BANG@[22; 23) "!"
TOKEN_TREE@[23; 57)
L_PAREN@[23; 24) "("
STRING@[24; 52) "\"\n fn foo() {\n ..."
@@ -173,7 +173,7 @@ fn foo() {
WHITESPACE@[53; 54) " "
STRING@[54; 56) "\"\""
R_PAREN@[56; 57) ")"
SEMI@[57; 58) ";"
SEMICOLON@[57; 58) ";"
WHITESPACE@[58; 59) "\n"
R_CURLY@[59; 60) "}"
"#
@@ -226,7 +226,7 @@ fn foo() {
PATH_SEGMENT@[16; 22)
NAME_REF@[16; 22)
IDENT@[16; 22) "assert"
EXCL@[22; 23) "!"
BANG@[22; 23) "!"
TOKEN_TREE@[23; 57)
L_PAREN@[23; 24) "("
STRING@[24; 52) "\"\n fn foo() {\n ..."
@@ -234,7 +234,7 @@ fn foo() {
WHITESPACE@[53; 54) " "
STRING@[54; 56) "\"\""
R_PAREN@[56; 57) ")"
SEMI@[57; 58) ";"
SEMICOLON@[57; 58) ";"
"#
.trim()
);
+1 -1
View File
@@ -63,7 +63,7 @@ fn on_char_typed_inner(
fn on_eq_typed(file: &SourceFile, offset: TextUnit) -> Option<SingleFileChange> {
assert_eq!(file.syntax().text().char_at(offset), Some('='));
let let_stmt: ast::LetStmt = find_node_at_offset(file.syntax(), offset)?;
if let_stmt.semi_token().is_some() {
if let_stmt.semicolon_token().is_some() {
return None;
}
if let Some(expr) = let_stmt.initializer() {
+10 -10
View File
@@ -252,7 +252,7 @@ macro_rules! foo {
STAR@[11; 12) "*"
LITERAL@[12; 13)
INT_NUMBER@[12; 13) "2"
SEMI@[13; 14) ";"
SEMICOLON@[13; 14) ";"
R_CURLY@[14; 15) "}""#,
);
}
@@ -605,7 +605,7 @@ macro_rules! foo {
EQ@[4; 5) "="
LITERAL@[5; 6)
INT_NUMBER@[5; 6) "0"
SEMI@[6; 7) ";"
SEMICOLON@[6; 7) ";"
EXPR_STMT@[7; 14)
BIN_EXPR@[7; 13)
PATH_EXPR@[7; 8)
@@ -620,7 +620,7 @@ macro_rules! foo {
PLUS@[11; 12) "+"
LITERAL@[12; 13)
INT_NUMBER@[12; 13) "1"
SEMI@[13; 14) ";"
SEMICOLON@[13; 14) ";"
EXPR_STMT@[14; 15)
PATH_EXPR@[14; 15)
PATH@[14; 15)
@@ -953,7 +953,7 @@ macro_rules! foo {
PATH_SEGMENT@[0; 3)
NAME_REF@[0; 3)
IDENT@[0; 3) "abs"
EXCL@[3; 4) "!"
BANG@[3; 4) "!"
TOKEN_TREE@[4; 10)
L_PAREN@[4; 5) "("
EQ@[5; 6) "="
@@ -1073,14 +1073,14 @@ macro_rules! vec {
PATH_SEGMENT@[9; 12)
NAME_REF@[9; 12)
IDENT@[9; 12) "Vec"
COLONCOLON@[12; 14) "::"
COLON2@[12; 14) "::"
PATH_SEGMENT@[14; 17)
NAME_REF@[14; 17)
IDENT@[14; 17) "new"
ARG_LIST@[17; 19)
L_PAREN@[17; 18) "("
R_PAREN@[18; 19) ")"
SEMI@[19; 20) ";"
SEMICOLON@[19; 20) ";"
EXPR_STMT@[20; 33)
METHOD_CALL_EXPR@[20; 32)
PATH_EXPR@[20; 21)
@@ -1096,7 +1096,7 @@ macro_rules! vec {
LITERAL@[27; 31)
INT_NUMBER@[27; 31) "1u32"
R_PAREN@[31; 32) ")"
SEMI@[32; 33) ";"
SEMICOLON@[32; 33) ";"
EXPR_STMT@[33; 43)
METHOD_CALL_EXPR@[33; 42)
PATH_EXPR@[33; 34)
@@ -1112,7 +1112,7 @@ macro_rules! vec {
LITERAL@[40; 41)
INT_NUMBER@[40; 41) "2"
R_PAREN@[41; 42) ")"
SEMI@[42; 43) ";"
SEMICOLON@[42; 43) ";"
PATH_EXPR@[43; 44)
PATH@[43; 44)
PATH_SEGMENT@[43; 44)
@@ -1760,7 +1760,7 @@ macro_rules! with_std { ($($i:item)*) => ($(#[cfg(feature = "std")]$i)*) }
MOD_KW@[21; 24) "mod"
NAME@[24; 25)
IDENT@[24; 25) "m"
SEMI@[25; 26) ";"
SEMICOLON@[25; 26) ";"
MODULE@[26; 52)
ATTR@[26; 47)
POUND@[26; 27) "#"
@@ -1779,7 +1779,7 @@ macro_rules! with_std { ($($i:item)*) => ($(#[cfg(feature = "std")]$i)*) }
MOD_KW@[47; 50) "mod"
NAME@[50; 51)
IDENT@[50; 51) "f"
SEMI@[51; 52) ";""###,
SEMICOLON@[51; 52) ";""###,
);
}
+2 -1
View File
@@ -339,7 +339,8 @@ fn expr_bp(p: &mut Parser, mut r: Restrictions, bp: u8) -> (Option<CompletedMark
(Some(lhs), BlockLike::NotBlock)
}
const LHS_FIRST: TokenSet = atom::ATOM_EXPR_FIRST.union(token_set![AMP, STAR, EXCL, DOT, MINUS]);
const LHS_FIRST: TokenSet =
atom::ATOM_EXPR_FIRST.union(token_set![T![&], T![*], T![!], T![.], T![-]]);
fn lhs(p: &mut Parser, r: Restrictions) -> Option<(CompletedMarker, BlockLike)> {
let m;
+13 -2
View File
@@ -3,8 +3,19 @@
use super::*;
pub(super) const TYPE_FIRST: TokenSet = paths::PATH_FIRST.union(token_set![
L_PAREN, EXCL, STAR, L_BRACK, AMP, UNDERSCORE, FN_KW, UNSAFE_KW, EXTERN_KW, FOR_KW, IMPL_KW,
DYN_KW, L_ANGLE,
T!['('],
T!['['],
T![<],
T![!],
T![*],
T![&],
T![_],
T![fn],
T![unsafe],
T![extern],
T![for],
T![impl],
T![dyn],
]);
const TYPE_RECOVERY_SET: TokenSet = token_set![R_PAREN, COMMA, L_DOLLAR];
+18 -310
View File
@@ -9,7 +9,7 @@ pub enum SyntaxKind {
TOMBSTONE,
#[doc(hidden)]
EOF,
SEMI,
SEMICOLON,
COMMA,
L_PAREN,
R_PAREN,
@@ -33,15 +33,15 @@ pub enum SyntaxKind {
PERCENT,
UNDERSCORE,
DOT,
DOTDOT,
DOTDOTDOT,
DOTDOTEQ,
DOT2,
DOT3,
DOT2EQ,
COLON,
COLONCOLON,
COLON2,
EQ,
EQEQ,
EQ2,
FAT_ARROW,
EXCL,
BANG,
NEQ,
MINUS,
THIN_ARROW,
@@ -55,8 +55,8 @@ pub enum SyntaxKind {
SLASHEQ,
STAREQ,
PERCENTEQ,
AMPAMP,
PIPEPIPE,
AMP2,
PIPE2,
SHL,
SHR,
SHLEQ,
@@ -265,12 +265,12 @@ pub fn is_keyword(self) -> bool {
}
pub fn is_punct(self) -> bool {
match self {
SEMI | COMMA | L_PAREN | R_PAREN | L_CURLY | R_CURLY | L_BRACK | R_BRACK | L_ANGLE
| R_ANGLE | AT | POUND | TILDE | QUESTION | DOLLAR | AMP | PIPE | PLUS | STAR
| SLASH | CARET | PERCENT | UNDERSCORE | DOT | DOTDOT | DOTDOTDOT | DOTDOTEQ
| COLON | COLONCOLON | EQ | EQEQ | FAT_ARROW | EXCL | NEQ | MINUS | THIN_ARROW
| LTEQ | GTEQ | PLUSEQ | MINUSEQ | PIPEEQ | AMPEQ | CARETEQ | SLASHEQ | STAREQ
| PERCENTEQ | AMPAMP | PIPEPIPE | SHL | SHR | SHLEQ | SHREQ => true,
SEMICOLON | COMMA | L_PAREN | R_PAREN | L_CURLY | R_CURLY | L_BRACK | R_BRACK
| L_ANGLE | R_ANGLE | AT | POUND | TILDE | QUESTION | DOLLAR | AMP | PIPE | PLUS
| STAR | SLASH | CARET | PERCENT | UNDERSCORE | DOT | DOT2 | DOT3 | DOT2EQ | COLON
| COLON2 | EQ | EQ2 | FAT_ARROW | BANG | NEQ | MINUS | THIN_ARROW | LTEQ | GTEQ
| PLUSEQ | MINUSEQ | PIPEEQ | AMPEQ | CARETEQ | SLASHEQ | STAREQ | PERCENTEQ | AMP2
| PIPE2 | SHL | SHR | SHLEQ | SHREQ => true,
_ => false,
}
}
@@ -329,7 +329,7 @@ pub fn from_keyword(ident: &str) -> Option<SyntaxKind> {
}
pub fn from_char(c: char) -> Option<SyntaxKind> {
let tok = match c {
';' => SEMI,
';' => SEMICOLON,
',' => COMMA,
'(' => L_PAREN,
')' => R_PAREN,
@@ -355,7 +355,7 @@ pub fn from_char(c: char) -> Option<SyntaxKind> {
'.' => DOT,
':' => COLON,
'=' => EQ,
'!' => EXCL,
'!' => BANG,
'-' => MINUS,
_ => return None,
};
@@ -363,296 +363,4 @@ pub fn from_char(c: char) -> Option<SyntaxKind> {
}
}
#[macro_export]
macro_rules! T {
( ; ) => {
$crate::SyntaxKind::SEMI
};
( , ) => {
$crate::SyntaxKind::COMMA
};
( '(' ) => {
$crate::SyntaxKind::L_PAREN
};
( ')' ) => {
$crate::SyntaxKind::R_PAREN
};
( '{' ) => {
$crate::SyntaxKind::L_CURLY
};
( '}' ) => {
$crate::SyntaxKind::R_CURLY
};
( '[' ) => {
$crate::SyntaxKind::L_BRACK
};
( ']' ) => {
$crate::SyntaxKind::R_BRACK
};
( < ) => {
$crate::SyntaxKind::L_ANGLE
};
( > ) => {
$crate::SyntaxKind::R_ANGLE
};
( @ ) => {
$crate::SyntaxKind::AT
};
( # ) => {
$crate::SyntaxKind::POUND
};
( ~ ) => {
$crate::SyntaxKind::TILDE
};
( ? ) => {
$crate::SyntaxKind::QUESTION
};
( $ ) => {
$crate::SyntaxKind::DOLLAR
};
( & ) => {
$crate::SyntaxKind::AMP
};
( | ) => {
$crate::SyntaxKind::PIPE
};
( + ) => {
$crate::SyntaxKind::PLUS
};
( * ) => {
$crate::SyntaxKind::STAR
};
( / ) => {
$crate::SyntaxKind::SLASH
};
( ^ ) => {
$crate::SyntaxKind::CARET
};
( % ) => {
$crate::SyntaxKind::PERCENT
};
( _ ) => {
$crate::SyntaxKind::UNDERSCORE
};
( . ) => {
$crate::SyntaxKind::DOT
};
( .. ) => {
$crate::SyntaxKind::DOTDOT
};
( ... ) => {
$crate::SyntaxKind::DOTDOTDOT
};
( ..= ) => {
$crate::SyntaxKind::DOTDOTEQ
};
( : ) => {
$crate::SyntaxKind::COLON
};
( :: ) => {
$crate::SyntaxKind::COLONCOLON
};
( = ) => {
$crate::SyntaxKind::EQ
};
( == ) => {
$crate::SyntaxKind::EQEQ
};
( => ) => {
$crate::SyntaxKind::FAT_ARROW
};
( ! ) => {
$crate::SyntaxKind::EXCL
};
( != ) => {
$crate::SyntaxKind::NEQ
};
( - ) => {
$crate::SyntaxKind::MINUS
};
( -> ) => {
$crate::SyntaxKind::THIN_ARROW
};
( <= ) => {
$crate::SyntaxKind::LTEQ
};
( >= ) => {
$crate::SyntaxKind::GTEQ
};
( += ) => {
$crate::SyntaxKind::PLUSEQ
};
( -= ) => {
$crate::SyntaxKind::MINUSEQ
};
( |= ) => {
$crate::SyntaxKind::PIPEEQ
};
( &= ) => {
$crate::SyntaxKind::AMPEQ
};
( ^= ) => {
$crate::SyntaxKind::CARETEQ
};
( /= ) => {
$crate::SyntaxKind::SLASHEQ
};
( *= ) => {
$crate::SyntaxKind::STAREQ
};
( %= ) => {
$crate::SyntaxKind::PERCENTEQ
};
( && ) => {
$crate::SyntaxKind::AMPAMP
};
( || ) => {
$crate::SyntaxKind::PIPEPIPE
};
( << ) => {
$crate::SyntaxKind::SHL
};
( >> ) => {
$crate::SyntaxKind::SHR
};
( <<= ) => {
$crate::SyntaxKind::SHLEQ
};
( >>= ) => {
$crate::SyntaxKind::SHREQ
};
( as ) => {
$crate::SyntaxKind::AS_KW
};
( async ) => {
$crate::SyntaxKind::ASYNC_KW
};
( await ) => {
$crate::SyntaxKind::AWAIT_KW
};
( box ) => {
$crate::SyntaxKind::BOX_KW
};
( break ) => {
$crate::SyntaxKind::BREAK_KW
};
( const ) => {
$crate::SyntaxKind::CONST_KW
};
( continue ) => {
$crate::SyntaxKind::CONTINUE_KW
};
( crate ) => {
$crate::SyntaxKind::CRATE_KW
};
( dyn ) => {
$crate::SyntaxKind::DYN_KW
};
( else ) => {
$crate::SyntaxKind::ELSE_KW
};
( enum ) => {
$crate::SyntaxKind::ENUM_KW
};
( extern ) => {
$crate::SyntaxKind::EXTERN_KW
};
( false ) => {
$crate::SyntaxKind::FALSE_KW
};
( fn ) => {
$crate::SyntaxKind::FN_KW
};
( for ) => {
$crate::SyntaxKind::FOR_KW
};
( if ) => {
$crate::SyntaxKind::IF_KW
};
( impl ) => {
$crate::SyntaxKind::IMPL_KW
};
( in ) => {
$crate::SyntaxKind::IN_KW
};
( let ) => {
$crate::SyntaxKind::LET_KW
};
( loop ) => {
$crate::SyntaxKind::LOOP_KW
};
( macro ) => {
$crate::SyntaxKind::MACRO_KW
};
( match ) => {
$crate::SyntaxKind::MATCH_KW
};
( mod ) => {
$crate::SyntaxKind::MOD_KW
};
( move ) => {
$crate::SyntaxKind::MOVE_KW
};
( mut ) => {
$crate::SyntaxKind::MUT_KW
};
( pub ) => {
$crate::SyntaxKind::PUB_KW
};
( ref ) => {
$crate::SyntaxKind::REF_KW
};
( return ) => {
$crate::SyntaxKind::RETURN_KW
};
( self ) => {
$crate::SyntaxKind::SELF_KW
};
( static ) => {
$crate::SyntaxKind::STATIC_KW
};
( struct ) => {
$crate::SyntaxKind::STRUCT_KW
};
( super ) => {
$crate::SyntaxKind::SUPER_KW
};
( trait ) => {
$crate::SyntaxKind::TRAIT_KW
};
( true ) => {
$crate::SyntaxKind::TRUE_KW
};
( try ) => {
$crate::SyntaxKind::TRY_KW
};
( type ) => {
$crate::SyntaxKind::TYPE_KW
};
( unsafe ) => {
$crate::SyntaxKind::UNSAFE_KW
};
( use ) => {
$crate::SyntaxKind::USE_KW
};
( where ) => {
$crate::SyntaxKind::WHERE_KW
};
( while ) => {
$crate::SyntaxKind::WHILE_KW
};
( auto ) => {
$crate::SyntaxKind::AUTO_KW
};
( default ) => {
$crate::SyntaxKind::DEFAULT_KW
};
( existential ) => {
$crate::SyntaxKind::EXISTENTIAL_KW
};
( union ) => {
$crate::SyntaxKind::UNION_KW
};
( raw ) => {
$crate::SyntaxKind::RAW_KW
};
}
macro_rules ! T { [ ; ] => { $ crate :: SyntaxKind :: SEMICOLON } ; [ , ] => { $ crate :: SyntaxKind :: COMMA } ; [ '(' ] => { $ crate :: SyntaxKind :: L_PAREN } ; [ ')' ] => { $ crate :: SyntaxKind :: R_PAREN } ; [ '{' ] => { $ crate :: SyntaxKind :: L_CURLY } ; [ '}' ] => { $ crate :: SyntaxKind :: R_CURLY } ; [ '[' ] => { $ crate :: SyntaxKind :: L_BRACK } ; [ ']' ] => { $ crate :: SyntaxKind :: R_BRACK } ; [ < ] => { $ crate :: SyntaxKind :: L_ANGLE } ; [ > ] => { $ crate :: SyntaxKind :: R_ANGLE } ; [ @ ] => { $ crate :: SyntaxKind :: AT } ; [ # ] => { $ crate :: SyntaxKind :: POUND } ; [ ~ ] => { $ crate :: SyntaxKind :: TILDE } ; [ ? ] => { $ crate :: SyntaxKind :: QUESTION } ; [ $ ] => { $ crate :: SyntaxKind :: DOLLAR } ; [ & ] => { $ crate :: SyntaxKind :: AMP } ; [ | ] => { $ crate :: SyntaxKind :: PIPE } ; [ + ] => { $ crate :: SyntaxKind :: PLUS } ; [ * ] => { $ crate :: SyntaxKind :: STAR } ; [ / ] => { $ crate :: SyntaxKind :: SLASH } ; [ ^ ] => { $ crate :: SyntaxKind :: CARET } ; [ % ] => { $ crate :: SyntaxKind :: PERCENT } ; [ _ ] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [ . ] => { $ crate :: SyntaxKind :: DOT } ; [ .. ] => { $ crate :: SyntaxKind :: DOT2 } ; [ ... ] => { $ crate :: SyntaxKind :: DOT3 } ; [ ..= ] => { $ crate :: SyntaxKind :: DOT2EQ } ; [ : ] => { $ crate :: SyntaxKind :: COLON } ; [ :: ] => { $ crate :: SyntaxKind :: COLON2 } ; [ = ] => { $ crate :: SyntaxKind :: EQ } ; [ == ] => { $ crate :: SyntaxKind :: EQ2 } ; [ => ] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [ ! ] => { $ crate :: SyntaxKind :: BANG } ; [ != ] => { $ crate :: SyntaxKind :: NEQ } ; [ - ] => { $ crate :: SyntaxKind :: MINUS } ; [ -> ] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [ <= ] => { $ crate :: SyntaxKind :: LTEQ } ; [ >= ] => { $ crate :: SyntaxKind :: GTEQ } ; [ += ] => { $ crate :: SyntaxKind :: PLUSEQ } ; [ -= ] => { $ crate :: SyntaxKind :: MINUSEQ } ; [ |= ] => { $ crate :: SyntaxKind :: PIPEEQ } ; [ &= ] => { $ crate :: SyntaxKind :: AMPEQ } ; [ ^= ] => { $ crate :: SyntaxKind :: CARETEQ } ; [ /= ] => { $ crate :: SyntaxKind :: SLASHEQ } ; [ *= ] => { $ crate :: SyntaxKind :: STAREQ } ; [ %= ] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [ && ] => { $ crate :: SyntaxKind :: AMP2 } ; [ || ] => { $ crate :: SyntaxKind :: PIPE2 } ; [ << ] => { $ crate :: SyntaxKind :: SHL } ; [ >> ] => { $ crate :: SyntaxKind :: SHR } ; [ <<= ] => { $ crate :: SyntaxKind :: SHLEQ } ; [ >>= ] => { $ crate :: SyntaxKind :: SHREQ } ; [ as ] => { $ crate :: SyntaxKind :: AS_KW } ; [ async ] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [ await ] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [ box ] => { $ crate :: SyntaxKind :: BOX_KW } ; [ break ] => { $ crate :: SyntaxKind :: BREAK_KW } ; [ const ] => { $ crate :: SyntaxKind :: CONST_KW } ; [ continue ] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [ crate ] => { $ crate :: SyntaxKind :: CRATE_KW } ; [ dyn ] => { $ crate :: SyntaxKind :: DYN_KW } ; [ else ] => { $ crate :: SyntaxKind :: ELSE_KW } ; [ enum ] => { $ crate :: SyntaxKind :: ENUM_KW } ; [ extern ] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [ false ] => { $ crate :: SyntaxKind :: FALSE_KW } ; [ fn ] => { $ crate :: SyntaxKind :: FN_KW } ; [ for ] => { $ crate :: SyntaxKind :: FOR_KW } ; [ if ] => { $ crate :: SyntaxKind :: IF_KW } ; [ impl ] => { $ crate :: SyntaxKind :: IMPL_KW } ; [ in ] => { $ crate :: SyntaxKind :: IN_KW } ; [ let ] => { $ crate :: SyntaxKind :: LET_KW } ; [ loop ] => { $ crate :: SyntaxKind :: LOOP_KW } ; [ macro ] => { $ crate :: SyntaxKind :: MACRO_KW } ; [ match ] => { $ crate :: SyntaxKind :: MATCH_KW } ; [ mod ] => { $ crate :: SyntaxKind :: MOD_KW } ; [ move ] => { $ crate :: SyntaxKind :: MOVE_KW } ; [ mut ] => { $ crate :: SyntaxKind :: MUT_KW } ; [ pub ] => { $ crate :: SyntaxKind :: PUB_KW } ; [ ref ] => { $ crate :: SyntaxKind :: REF_KW } ; [ return ] => { $ crate :: SyntaxKind :: RETURN_KW } ; [ self ] => { $ crate :: SyntaxKind :: SELF_KW } ; [ static ] => { $ crate :: SyntaxKind :: STATIC_KW } ; [ struct ] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [ super ] => { $ crate :: SyntaxKind :: SUPER_KW } ; [ trait ] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [ true ] => { $ crate :: SyntaxKind :: TRUE_KW } ; [ try ] => { $ crate :: SyntaxKind :: TRY_KW } ; [ type ] => { $ crate :: SyntaxKind :: TYPE_KW } ; [ unsafe ] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [ use ] => { $ crate :: SyntaxKind :: USE_KW } ; [ where ] => { $ crate :: SyntaxKind :: WHERE_KW } ; [ while ] => { $ crate :: SyntaxKind :: WHILE_KW } ; [ auto ] => { $ crate :: SyntaxKind :: AUTO_KW } ; [ default ] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [ existential ] => { $ crate :: SyntaxKind :: EXISTENTIAL_KW } ; [ union ] => { $ crate :: SyntaxKind :: UNION_KW } ; [ raw ] => { $ crate :: SyntaxKind :: RAW_KW } ; [ lifetime ] => { $ crate :: SyntaxKind :: LIFETIME } ; [ ident ] => { $ crate :: SyntaxKind :: IDENT } ; }
+2 -6
View File
@@ -80,7 +80,7 @@ fn next(&mut self) -> Option<N> {
}
mod support {
use super::{AstChildren, AstNode, AstToken, SyntaxKind, SyntaxNode, SyntaxToken};
use super::{AstChildren, AstNode, SyntaxKind, SyntaxNode, SyntaxToken};
pub(super) fn child<N: AstNode>(parent: &SyntaxNode) -> Option<N> {
parent.children().find_map(N::cast)
@@ -90,11 +90,7 @@ pub(super) fn children<N: AstNode>(parent: &SyntaxNode) -> AstChildren<N> {
AstChildren::new(parent)
}
pub(super) fn token<T: AstToken>(parent: &SyntaxNode) -> Option<T> {
parent.children_with_tokens().filter_map(|it| it.into_token()).find_map(T::cast)
}
pub(super) fn token2(parent: &SyntaxNode, kind: SyntaxKind) -> Option<SyntaxToken> {
pub(super) fn token(parent: &SyntaxNode, kind: SyntaxKind) -> Option<SyntaxToken> {
parent.children_with_tokens().filter_map(|it| it.into_token()).find(|it| it.kind() == kind)
}
}
+7 -7
View File
@@ -32,9 +32,9 @@ pub fn with_body(&self, body: ast::Block) -> ast::FnDef {
let mut to_insert: ArrayVec<[SyntaxElement; 2]> = ArrayVec::new();
let old_body_or_semi: SyntaxElement = if let Some(old_body) = self.body() {
old_body.syntax().clone().into()
} else if let Some(semi) = self.semi_token() {
} else if let Some(semi) = self.semicolon_token() {
to_insert.push(make::tokens::single_space().into());
semi.syntax.clone().into()
semi.into()
} else {
to_insert.push(make::tokens::single_space().into());
to_insert.push(body.syntax().clone().into());
@@ -98,7 +98,7 @@ pub fn append_item(&self, item: ast::ImplItem) -> ast::ItemList {
None => match self.l_curly_token() {
Some(it) => (
" ".to_string() + &leading_indent(self.syntax()).unwrap_or_default(),
InsertPosition::After(it.syntax().clone().into()),
InsertPosition::After(it.into()),
),
None => return self.clone(),
},
@@ -142,7 +142,7 @@ pub fn insert_field(
macro_rules! after_l_curly {
() => {{
let anchor = match self.l_curly_token() {
Some(it) => it.syntax().clone().into(),
Some(it) => it.into(),
None => return self.clone(),
};
InsertPosition::After(anchor)
@@ -189,15 +189,15 @@ macro_rules! after_field {
impl ast::TypeParam {
#[must_use]
pub fn remove_bounds(&self) -> ast::TypeParam {
let colon = match self.colon() {
let colon = match self.colon_token() {
Some(it) => it,
None => return self.clone(),
};
let end = match self.type_bound_list() {
Some(it) => it.syntax().clone().into(),
None => colon.syntax().clone().into(),
None => colon.clone().into(),
};
self.replace_children(colon.syntax().clone().into()..=end, iter::empty())
self.replace_children(colon.into()..=end, iter::empty())
}
}
+23 -21
View File
@@ -5,7 +5,7 @@
use ra_parser::SyntaxKind;
use crate::{
ast::{self, support, AstNode, AstToken, AttrInput, NameOwner, SyntaxNode},
ast::{self, support, AstNode, AttrInput, NameOwner, SyntaxNode},
SmolStr, SyntaxElement, SyntaxToken, T,
};
@@ -21,11 +21,7 @@ pub fn text(&self) -> &SmolStr {
}
pub fn as_tuple_field(&self) -> Option<usize> {
if let Some(ast::NameRefToken::IntNumber(token)) = self.name_ref_token_token() {
token.text().as_str().parse().ok()
} else {
None
}
self.text().parse().ok()
}
}
@@ -81,7 +77,7 @@ pub fn kind(&self) -> AttrKind {
first_token.and_then(|token| token.next_token()).as_ref().map(SyntaxToken::kind);
match (first_token_kind, second_token_kind) {
(Some(SyntaxKind::POUND), Some(SyntaxKind::EXCL)) => AttrKind::Inner,
(Some(SyntaxKind::POUND), Some(T![!])) => AttrKind::Inner,
_ => AttrKind::Outer,
}
}
@@ -315,7 +311,7 @@ pub enum TypeBoundKind {
/// for<'a> ...
ForType(ast::ForType),
/// 'a
Lifetime(ast::Lifetime),
Lifetime(SyntaxToken),
}
impl ast::TypeBound {
@@ -331,23 +327,23 @@ pub fn kind(&self) -> TypeBoundKind {
}
}
pub fn const_question_token(&self) -> Option<ast::Question> {
pub fn const_question_token(&self) -> Option<SyntaxToken> {
self.syntax()
.children_with_tokens()
.filter_map(|it| it.into_token())
.take_while(|it| it.kind() != T![const])
.find_map(ast::Question::cast)
.find(|it| it.kind() == T![?])
}
pub fn question_token(&self) -> Option<ast::Question> {
pub fn question_token(&self) -> Option<SyntaxToken> {
if self.const_token().is_some() {
self.syntax()
.children_with_tokens()
.filter_map(|it| it.into_token())
.skip_while(|it| it.kind() != T![const])
.find_map(ast::Question::cast)
.find(|it| it.kind() == T![?])
} else {
support::token(&self.syntax)
support::token(&self.syntax, T![?])
}
}
}
@@ -388,12 +384,12 @@ pub fn is_macro_rules(&self) -> Option<ast::Name> {
}
impl ast::LifetimeParam {
pub fn lifetime_bounds(&self) -> impl Iterator<Item = ast::Lifetime> {
pub fn lifetime_bounds(&self) -> impl Iterator<Item = SyntaxToken> {
self.syntax()
.children_with_tokens()
.filter_map(|it| it.into_token())
.skip_while(|x| x.kind() != T![:])
.filter_map(ast::Lifetime::cast)
.filter(|it| it.kind() == T![lifetime])
}
}
@@ -401,7 +397,7 @@ impl ast::RangePat {
pub fn start(&self) -> Option<ast::Pat> {
self.syntax()
.children_with_tokens()
.take_while(|it| !ast::RangeSeparator::can_cast(it.kind()))
.take_while(|it| !(it.kind() == T![..] || it.kind() == T![..=]))
.filter_map(|it| it.into_node())
.find_map(ast::Pat::cast)
}
@@ -409,18 +405,24 @@ pub fn start(&self) -> Option<ast::Pat> {
pub fn end(&self) -> Option<ast::Pat> {
self.syntax()
.children_with_tokens()
.skip_while(|it| !ast::RangeSeparator::can_cast(it.kind()))
.skip_while(|it| !(it.kind() == T![..] || it.kind() == T![..=]))
.filter_map(|it| it.into_node())
.find_map(ast::Pat::cast)
}
}
impl ast::TokenTree {
pub fn left_delimiter(&self) -> Option<ast::LeftDelimiter> {
self.syntax().first_child_or_token()?.into_token().and_then(ast::LeftDelimiter::cast)
pub fn left_delimiter_token(&self) -> Option<SyntaxToken> {
self.syntax().first_child_or_token()?.into_token().filter(|it| match it.kind() {
T!['{'] | T!['('] | T!['['] => true,
_ => false,
})
}
pub fn right_delimiter(&self) -> Option<ast::RightDelimiter> {
self.syntax().last_child_or_token()?.into_token().and_then(ast::RightDelimiter::cast)
pub fn right_delimiter_token(&self) -> Option<SyntaxToken> {
self.syntax().last_child_or_token()?.into_token().filter(|it| match it.kind() {
T!['{'] | T!['('] | T!['['] => true,
_ => false,
})
}
}
+347 -205
View File
@@ -1,11 +1,11 @@
//! Generated file, do not edit by hand, see `xtask/src/codegen`
use super::tokens::*;
use crate::{
ast::{self, support, AstChildren, AstNode},
SyntaxKind::{self, *},
SyntaxNode, SyntaxToken,
SyntaxNode, SyntaxToken, T,
};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SourceFile {
pub(crate) syntax: SyntaxNode,
@@ -26,6 +26,7 @@ impl ast::AttrsOwner for SourceFile {}
impl SourceFile {
pub fn modules(&self) -> AstChildren<Module> { support::children(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FnDef {
pub(crate) syntax: SyntaxNode,
@@ -48,16 +49,17 @@ impl ast::DocCommentsOwner for FnDef {}
impl ast::AttrsOwner for FnDef {}
impl FnDef {
pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CONST_KW) }
pub fn default_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, DEFAULT_KW) }
pub fn async_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, ASYNC_KW) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNSAFE_KW) }
pub fn fn_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, FN_KW) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RetType {
pub(crate) syntax: SyntaxNode,
@@ -74,9 +76,10 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RetType {
pub fn thin_arrow_token(&self) -> Option<ThinArrow> { support::token(&self.syntax) }
pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct StructDef {
pub(crate) syntax: SyntaxNode,
@@ -98,10 +101,11 @@ impl ast::TypeParamsOwner for StructDef {}
impl ast::AttrsOwner for StructDef {}
impl ast::DocCommentsOwner for StructDef {}
impl StructDef {
pub fn struct_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, STRUCT_KW) }
pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) }
pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct UnionDef {
pub(crate) syntax: SyntaxNode,
@@ -123,11 +127,12 @@ impl ast::TypeParamsOwner for UnionDef {}
impl ast::AttrsOwner for UnionDef {}
impl ast::DocCommentsOwner for UnionDef {}
impl UnionDef {
pub fn union_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNION_KW) }
pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) }
pub fn record_field_def_list(&self) -> Option<RecordFieldDefList> {
support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordFieldDefList {
pub(crate) syntax: SyntaxNode,
@@ -144,10 +149,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RecordFieldDefList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn fields(&self) -> AstChildren<RecordFieldDef> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordFieldDef {
pub(crate) syntax: SyntaxNode,
@@ -169,6 +175,7 @@ impl ast::AttrsOwner for RecordFieldDef {}
impl ast::DocCommentsOwner for RecordFieldDef {}
impl ast::TypeAscriptionOwner for RecordFieldDef {}
impl RecordFieldDef {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TupleFieldDefList {
pub(crate) syntax: SyntaxNode,
@@ -185,10 +192,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TupleFieldDefList {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn fields(&self) -> AstChildren<TupleFieldDef> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TupleFieldDef {
pub(crate) syntax: SyntaxNode,
@@ -209,6 +217,7 @@ impl ast::AttrsOwner for TupleFieldDef {}
impl TupleFieldDef {
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct EnumDef {
pub(crate) syntax: SyntaxNode,
@@ -230,9 +239,10 @@ impl ast::TypeParamsOwner for EnumDef {}
impl ast::AttrsOwner for EnumDef {}
impl ast::DocCommentsOwner for EnumDef {}
impl EnumDef {
pub fn enum_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, ENUM_KW) }
pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) }
pub fn variant_list(&self) -> Option<EnumVariantList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct EnumVariantList {
pub(crate) syntax: SyntaxNode,
@@ -249,10 +259,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl EnumVariantList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn variants(&self) -> AstChildren<EnumVariant> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct EnumVariant {
pub(crate) syntax: SyntaxNode,
@@ -274,9 +285,10 @@ impl ast::DocCommentsOwner for EnumVariant {}
impl ast::AttrsOwner for EnumVariant {}
impl EnumVariant {
pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TraitDef {
pub(crate) syntax: SyntaxNode,
@@ -299,11 +311,12 @@ impl ast::DocCommentsOwner for TraitDef {}
impl ast::TypeParamsOwner for TraitDef {}
impl ast::TypeBoundsOwner for TraitDef {}
impl TraitDef {
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNSAFE_KW) }
pub fn auto_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, AUTO_KW) }
pub fn trait_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, TRAIT_KW) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) }
pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) }
pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Module {
pub(crate) syntax: SyntaxNode,
@@ -324,10 +337,11 @@ impl ast::NameOwner for Module {}
impl ast::AttrsOwner for Module {}
impl ast::DocCommentsOwner for Module {}
impl Module {
pub fn mod_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MOD_KW) }
pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) }
pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ItemList {
pub(crate) syntax: SyntaxNode,
@@ -345,10 +359,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::ModuleItemOwner for ItemList {}
impl ItemList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn impl_items(&self) -> AstChildren<ImplItem> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ConstDef {
pub(crate) syntax: SyntaxNode,
@@ -371,12 +386,13 @@ impl ast::AttrsOwner for ConstDef {}
impl ast::DocCommentsOwner for ConstDef {}
impl ast::TypeAscriptionOwner for ConstDef {}
impl ConstDef {
pub fn default_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, DEFAULT_KW) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CONST_KW) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct StaticDef {
pub(crate) syntax: SyntaxNode,
@@ -399,12 +415,13 @@ impl ast::AttrsOwner for StaticDef {}
impl ast::DocCommentsOwner for StaticDef {}
impl ast::TypeAscriptionOwner for StaticDef {}
impl StaticDef {
pub fn static_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, STATIC_KW) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeAliasDef {
pub(crate) syntax: SyntaxNode,
@@ -427,12 +444,13 @@ impl ast::AttrsOwner for TypeAliasDef {}
impl ast::DocCommentsOwner for TypeAliasDef {}
impl ast::TypeBoundsOwner for TypeAliasDef {}
impl TypeAliasDef {
pub fn default_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, DEFAULT_KW) }
pub fn type_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, TYPE_KW) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ImplDef {
pub(crate) syntax: SyntaxNode,
@@ -451,14 +469,15 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::TypeParamsOwner for ImplDef {}
impl ast::AttrsOwner for ImplDef {}
impl ImplDef {
pub fn default_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, DEFAULT_KW) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CONST_KW) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNSAFE_KW) }
pub fn impl_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, IMPL_KW) }
pub fn excl_token(&self) -> Option<Excl> { support::token(&self.syntax) }
pub fn for_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, FOR_KW) }
pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ParenType {
pub(crate) syntax: SyntaxNode,
@@ -475,10 +494,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ParenType {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TupleType {
pub(crate) syntax: SyntaxNode,
@@ -495,10 +515,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TupleType {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn fields(&self) -> AstChildren<TypeRef> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct NeverType {
pub(crate) syntax: SyntaxNode,
@@ -515,8 +536,9 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl NeverType {
pub fn excl_token(&self) -> Option<Excl> { support::token(&self.syntax) }
pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PathType {
pub(crate) syntax: SyntaxNode,
@@ -535,6 +557,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl PathType {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PointerType {
pub(crate) syntax: SyntaxNode,
@@ -551,11 +574,12 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl PointerType {
pub fn star_token(&self) -> Option<Star> { support::token(&self.syntax) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CONST_KW) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ArrayType {
pub(crate) syntax: SyntaxNode,
@@ -572,12 +596,13 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ArrayType {
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SliceType {
pub(crate) syntax: SyntaxNode,
@@ -594,10 +619,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl SliceType {
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ReferenceType {
pub(crate) syntax: SyntaxNode,
@@ -614,11 +640,14 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ReferenceType {
pub fn amp_token(&self) -> Option<Amp> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PlaceholderType {
pub(crate) syntax: SyntaxNode,
@@ -635,8 +664,9 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl PlaceholderType {
pub fn underscore_token(&self) -> Option<Underscore> { support::token(&self.syntax) }
pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FnPointerType {
pub(crate) syntax: SyntaxNode,
@@ -654,11 +684,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl FnPointerType {
pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNSAFE_KW) }
pub fn fn_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, FN_KW) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ForType {
pub(crate) syntax: SyntaxNode,
@@ -675,10 +706,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ForType {
pub fn for_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, FOR_KW) }
pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
pub fn type_param_list(&self) -> Option<TypeParamList> { support::child(&self.syntax) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ImplTraitType {
pub(crate) syntax: SyntaxNode,
@@ -696,8 +728,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::TypeBoundsOwner for ImplTraitType {}
impl ImplTraitType {
pub fn impl_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, IMPL_KW) }
pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct DynTraitType {
pub(crate) syntax: SyntaxNode,
@@ -715,8 +748,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::TypeBoundsOwner for DynTraitType {}
impl DynTraitType {
pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, DYN_KW) }
pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TupleExpr {
pub(crate) syntax: SyntaxNode,
@@ -734,10 +768,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for TupleExpr {}
impl TupleExpr {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ArrayExpr {
pub(crate) syntax: SyntaxNode,
@@ -755,11 +790,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for ArrayExpr {}
impl ArrayExpr {
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ParenExpr {
pub(crate) syntax: SyntaxNode,
@@ -777,10 +813,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for ParenExpr {}
impl ParenExpr {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PathExpr {
pub(crate) syntax: SyntaxNode,
@@ -799,6 +836,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl PathExpr {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LambdaExpr {
pub(crate) syntax: SyntaxNode,
@@ -816,13 +854,14 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for LambdaExpr {}
impl LambdaExpr {
pub fn static_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, STATIC_KW) }
pub fn async_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, ASYNC_KW) }
pub fn move_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MOVE_KW) }
pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) }
pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct IfExpr {
pub(crate) syntax: SyntaxNode,
@@ -840,9 +879,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for IfExpr {}
impl IfExpr {
pub fn if_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, IF_KW) }
pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LoopExpr {
pub(crate) syntax: SyntaxNode,
@@ -861,8 +901,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for LoopExpr {}
impl ast::LoopBodyOwner for LoopExpr {}
impl LoopExpr {
pub fn loop_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, LOOP_KW) }
pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TryBlockExpr {
pub(crate) syntax: SyntaxNode,
@@ -880,9 +921,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for TryBlockExpr {}
impl TryBlockExpr {
pub fn try_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, TRY_KW) }
pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) }
pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ForExpr {
pub(crate) syntax: SyntaxNode,
@@ -901,11 +943,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for ForExpr {}
impl ast::LoopBodyOwner for ForExpr {}
impl ForExpr {
pub fn for_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, FOR_KW) }
pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn in_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, IN_KW) }
pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }
pub fn iterable(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct WhileExpr {
pub(crate) syntax: SyntaxNode,
@@ -924,9 +967,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for WhileExpr {}
impl ast::LoopBodyOwner for WhileExpr {}
impl WhileExpr {
pub fn while_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, WHILE_KW) }
pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) }
pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ContinueExpr {
pub(crate) syntax: SyntaxNode,
@@ -945,10 +989,13 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for ContinueExpr {}
impl ContinueExpr {
pub fn continue_token(&self) -> Option<SyntaxToken> {
support::token2(&self.syntax, CONTINUE_KW)
support::token(&self.syntax, T![continue])
}
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BreakExpr {
pub(crate) syntax: SyntaxNode,
@@ -966,10 +1013,13 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for BreakExpr {}
impl BreakExpr {
pub fn break_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, BREAK_KW) }
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Label {
pub(crate) syntax: SyntaxNode,
@@ -986,8 +1036,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Label {
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockExpr {
pub(crate) syntax: SyntaxNode,
@@ -1006,9 +1059,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for BlockExpr {}
impl BlockExpr {
pub fn label(&self) -> Option<Label> { support::child(&self.syntax) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, UNSAFE_KW) }
pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
pub fn block(&self) -> Option<Block> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ReturnExpr {
pub(crate) syntax: SyntaxNode,
@@ -1028,6 +1082,7 @@ impl ast::AttrsOwner for ReturnExpr {}
impl ReturnExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct CallExpr {
pub(crate) syntax: SyntaxNode,
@@ -1047,6 +1102,7 @@ impl ast::ArgListOwner for CallExpr {}
impl CallExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MethodCallExpr {
pub(crate) syntax: SyntaxNode,
@@ -1066,10 +1122,11 @@ impl ast::AttrsOwner for MethodCallExpr {}
impl ast::ArgListOwner for MethodCallExpr {}
impl MethodCallExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn dot_token(&self) -> Option<Dot> { support::token(&self.syntax) }
pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
pub fn type_arg_list(&self) -> Option<TypeArgList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct IndexExpr {
pub(crate) syntax: SyntaxNode,
@@ -1087,9 +1144,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for IndexExpr {}
impl IndexExpr {
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FieldExpr {
pub(crate) syntax: SyntaxNode,
@@ -1108,9 +1166,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for FieldExpr {}
impl FieldExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn dot_token(&self) -> Option<Dot> { support::token(&self.syntax) }
pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct AwaitExpr {
pub(crate) syntax: SyntaxNode,
@@ -1129,9 +1188,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for AwaitExpr {}
impl AwaitExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn dot_token(&self) -> Option<Dot> { support::token(&self.syntax) }
pub fn await_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, AWAIT_KW) }
pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TryExpr {
pub(crate) syntax: SyntaxNode,
@@ -1149,9 +1209,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for TryExpr {}
impl TryExpr {
pub fn try_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, TRY_KW) }
pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct CastExpr {
pub(crate) syntax: SyntaxNode,
@@ -1170,9 +1231,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for CastExpr {}
impl CastExpr {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn as_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, AS_KW) }
pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RefExpr {
pub(crate) syntax: SyntaxNode,
@@ -1190,11 +1252,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for RefExpr {}
impl RefExpr {
pub fn amp_token(&self) -> Option<Amp> { support::token(&self.syntax) }
pub fn raw_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, RAW_KW) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PrefixExpr {
pub(crate) syntax: SyntaxNode,
@@ -1212,9 +1275,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for PrefixExpr {}
impl PrefixExpr {
pub fn prefix_op_token(&self) -> Option<PrefixOp> { support::token(&self.syntax) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BoxExpr {
pub(crate) syntax: SyntaxNode,
@@ -1232,9 +1295,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for BoxExpr {}
impl BoxExpr {
pub fn box_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, BOX_KW) }
pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RangeExpr {
pub(crate) syntax: SyntaxNode,
@@ -1251,9 +1315,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for RangeExpr {}
impl RangeExpr {
pub fn range_op_token(&self) -> Option<RangeOp> { support::token(&self.syntax) }
}
impl RangeExpr {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BinExpr {
pub(crate) syntax: SyntaxNode,
@@ -1270,9 +1333,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for BinExpr {}
impl BinExpr {
pub fn bin_op_token(&self) -> Option<BinOp> { support::token(&self.syntax) }
}
impl BinExpr {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Literal {
pub(crate) syntax: SyntaxNode,
@@ -1288,9 +1350,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Literal {
pub fn literal_token_token(&self) -> Option<LiteralToken> { support::token(&self.syntax) }
}
impl Literal {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MatchExpr {
pub(crate) syntax: SyntaxNode,
@@ -1308,10 +1369,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for MatchExpr {}
impl MatchExpr {
pub fn match_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MATCH_KW) }
pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MatchArmList {
pub(crate) syntax: SyntaxNode,
@@ -1329,10 +1391,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for MatchArmList {}
impl MatchArmList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MatchArm {
pub(crate) syntax: SyntaxNode,
@@ -1352,9 +1415,10 @@ impl ast::AttrsOwner for MatchArm {}
impl MatchArm {
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) }
pub fn fat_arrow_token(&self) -> Option<FatArrow> { support::token(&self.syntax) }
pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MatchGuard {
pub(crate) syntax: SyntaxNode,
@@ -1371,9 +1435,10 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl MatchGuard {
pub fn if_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, IF_KW) }
pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordLit {
pub(crate) syntax: SyntaxNode,
@@ -1393,6 +1458,7 @@ impl RecordLit {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordFieldList {
pub(crate) syntax: SyntaxNode,
@@ -1409,12 +1475,13 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RecordFieldList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) }
pub fn dotdot_token(&self) -> Option<Dotdot> { support::token(&self.syntax) }
pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordField {
pub(crate) syntax: SyntaxNode,
@@ -1433,9 +1500,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for RecordField {}
impl RecordField {
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
pub fn colon_token(&self) -> Option<Colon> { support::token(&self.syntax) }
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct OrPat {
pub(crate) syntax: SyntaxNode,
@@ -1454,6 +1522,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl OrPat {
pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ParenPat {
pub(crate) syntax: SyntaxNode,
@@ -1470,10 +1539,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ParenPat {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RefPat {
pub(crate) syntax: SyntaxNode,
@@ -1490,10 +1560,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RefPat {
pub fn amp_token(&self) -> Option<Amp> { support::token(&self.syntax) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BoxPat {
pub(crate) syntax: SyntaxNode,
@@ -1510,9 +1581,10 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl BoxPat {
pub fn box_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, BOX_KW) }
pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BindPat {
pub(crate) syntax: SyntaxNode,
@@ -1531,11 +1603,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for BindPat {}
impl ast::NameOwner for BindPat {}
impl BindPat {
pub fn ref_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, REF_KW) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, MUT_KW) }
pub fn at_token(&self) -> Option<At> { support::token(&self.syntax) }
pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PlaceholderPat {
pub(crate) syntax: SyntaxNode,
@@ -1552,8 +1625,9 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl PlaceholderPat {
pub fn underscore_token(&self) -> Option<Underscore> { support::token(&self.syntax) }
pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct DotDotPat {
pub(crate) syntax: SyntaxNode,
@@ -1570,8 +1644,9 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl DotDotPat {
pub fn dotdot_token(&self) -> Option<Dotdot> { support::token(&self.syntax) }
pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PathPat {
pub(crate) syntax: SyntaxNode,
@@ -1590,6 +1665,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl PathPat {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SlicePat {
pub(crate) syntax: SyntaxNode,
@@ -1606,10 +1682,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl SlicePat {
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RangePat {
pub(crate) syntax: SyntaxNode,
@@ -1625,9 +1702,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RangePat {
pub fn range_separator_token(&self) -> Option<RangeSeparator> { support::token(&self.syntax) }
}
impl RangePat {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LiteralPat {
pub(crate) syntax: SyntaxNode,
@@ -1646,6 +1722,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl LiteralPat {
pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MacroPat {
pub(crate) syntax: SyntaxNode,
@@ -1664,6 +1741,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl MacroPat {
pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordPat {
pub(crate) syntax: SyntaxNode,
@@ -1685,6 +1763,7 @@ pub fn record_field_pat_list(&self) -> Option<RecordFieldPatList> {
}
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordFieldPatList {
pub(crate) syntax: SyntaxNode,
@@ -1701,15 +1780,16 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl RecordFieldPatList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn pats(&self) -> AstChildren<RecordInnerPat> { support::children(&self.syntax) }
pub fn record_field_pats(&self) -> AstChildren<RecordFieldPat> {
support::children(&self.syntax)
}
pub fn bind_pats(&self) -> AstChildren<BindPat> { support::children(&self.syntax) }
pub fn dotdot_token(&self) -> Option<Dotdot> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RecordFieldPat {
pub(crate) syntax: SyntaxNode,
@@ -1728,9 +1808,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for RecordFieldPat {}
impl ast::NameOwner for RecordFieldPat {}
impl RecordFieldPat {
pub fn colon_token(&self) -> Option<Colon> { support::token(&self.syntax) }
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TupleStructPat {
pub(crate) syntax: SyntaxNode,
@@ -1748,10 +1829,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TupleStructPat {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TuplePat {
pub(crate) syntax: SyntaxNode,
@@ -1768,10 +1850,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TuplePat {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Visibility {
pub(crate) syntax: SyntaxNode,
@@ -1788,11 +1871,12 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Visibility {
pub fn pub_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, PUB_KW) }
pub fn super_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, SUPER_KW) }
pub fn self_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, SELF_KW) }
pub fn crate_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CRATE_KW) }
pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) }
pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }
pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Name {
pub(crate) syntax: SyntaxNode,
@@ -1809,8 +1893,9 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Name {
pub fn ident_token(&self) -> Option<Ident> { support::token(&self.syntax) }
pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct NameRef {
pub(crate) syntax: SyntaxNode,
@@ -1826,9 +1911,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl NameRef {
pub fn name_ref_token_token(&self) -> Option<NameRefToken> { support::token(&self.syntax) }
}
impl NameRef {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MacroCall {
pub(crate) syntax: SyntaxNode,
@@ -1849,10 +1933,11 @@ impl ast::AttrsOwner for MacroCall {}
impl ast::DocCommentsOwner for MacroCall {}
impl MacroCall {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn excl_token(&self) -> Option<Excl> { support::token(&self.syntax) }
pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Attr {
pub(crate) syntax: SyntaxNode,
@@ -1869,14 +1954,15 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Attr {
pub fn pound_token(&self) -> Option<Pound> { support::token(&self.syntax) }
pub fn excl_token(&self) -> Option<Excl> { support::token(&self.syntax) }
pub fn l_brack_token(&self) -> Option<LBrack> { support::token(&self.syntax) }
pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }
pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn input(&self) -> Option<AttrInput> { support::child(&self.syntax) }
pub fn r_brack_token(&self) -> Option<RBrack> { support::token(&self.syntax) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TokenTree {
pub(crate) syntax: SyntaxNode,
@@ -1893,6 +1979,7 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TokenTree {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeParamList {
pub(crate) syntax: SyntaxNode,
@@ -1909,13 +1996,14 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TypeParamList {
pub fn l_angle_token(&self) -> Option<LAngle> { support::token(&self.syntax) }
pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) }
pub fn type_params(&self) -> AstChildren<TypeParam> { support::children(&self.syntax) }
pub fn lifetime_params(&self) -> AstChildren<LifetimeParam> { support::children(&self.syntax) }
pub fn const_params(&self) -> AstChildren<ConstParam> { support::children(&self.syntax) }
pub fn r_angle_token(&self) -> Option<RAngle> { support::token(&self.syntax) }
pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeParam {
pub(crate) syntax: SyntaxNode,
@@ -1935,9 +2023,10 @@ impl ast::NameOwner for TypeParam {}
impl ast::AttrsOwner for TypeParam {}
impl ast::TypeBoundsOwner for TypeParam {}
impl TypeParam {
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn default_type(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ConstParam {
pub(crate) syntax: SyntaxNode,
@@ -1957,9 +2046,10 @@ impl ast::NameOwner for ConstParam {}
impl ast::AttrsOwner for ConstParam {}
impl ast::TypeAscriptionOwner for ConstParam {}
impl ConstParam {
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LifetimeParam {
pub(crate) syntax: SyntaxNode,
@@ -1977,8 +2067,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::AttrsOwner for LifetimeParam {}
impl LifetimeParam {
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeBound {
pub(crate) syntax: SyntaxNode,
@@ -1995,10 +2088,13 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TypeBound {
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CONST_KW) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeBoundList {
pub(crate) syntax: SyntaxNode,
@@ -2017,6 +2113,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl TypeBoundList {
pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct WherePred {
pub(crate) syntax: SyntaxNode,
@@ -2034,9 +2131,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::TypeBoundsOwner for WherePred {}
impl WherePred {
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct WhereClause {
pub(crate) syntax: SyntaxNode,
@@ -2053,9 +2153,10 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl WhereClause {
pub fn where_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, WHERE_KW) }
pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) }
pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Abi {
pub(crate) syntax: SyntaxNode,
@@ -2071,9 +2172,8 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Abi {
pub fn string_token(&self) -> Option<String> { support::token(&self.syntax) }
}
impl Abi {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprStmt {
pub(crate) syntax: SyntaxNode,
@@ -2092,8 +2192,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for ExprStmt {}
impl ExprStmt {
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LetStmt {
pub(crate) syntax: SyntaxNode,
@@ -2112,12 +2213,13 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for LetStmt {}
impl ast::TypeAscriptionOwner for LetStmt {}
impl LetStmt {
pub fn let_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, LET_KW) }
pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn semi_token(&self) -> Option<Semi> { support::token(&self.syntax) }
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Condition {
pub(crate) syntax: SyntaxNode,
@@ -2134,11 +2236,12 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl Condition {
pub fn let_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, LET_KW) }
pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Block {
pub(crate) syntax: SyntaxNode,
@@ -2157,11 +2260,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for Block {}
impl ast::ModuleItemOwner for Block {}
impl Block {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ParamList {
pub(crate) syntax: SyntaxNode,
@@ -2178,11 +2282,12 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ParamList {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) }
pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SelfParam {
pub(crate) syntax: SyntaxNode,
@@ -2201,10 +2306,13 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::TypeAscriptionOwner for SelfParam {}
impl ast::AttrsOwner for SelfParam {}
impl SelfParam {
pub fn amp_token(&self) -> Option<Amp> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn self_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, SELF_KW) }
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Param {
pub(crate) syntax: SyntaxNode,
@@ -2224,8 +2332,9 @@ impl ast::TypeAscriptionOwner for Param {}
impl ast::AttrsOwner for Param {}
impl Param {
pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
pub fn dotdotdot_token(&self) -> Option<Dotdotdot> { support::token(&self.syntax) }
pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct UseItem {
pub(crate) syntax: SyntaxNode,
@@ -2244,9 +2353,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for UseItem {}
impl ast::VisibilityOwner for UseItem {}
impl UseItem {
pub fn use_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, USE_KW) }
pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) }
pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct UseTree {
pub(crate) syntax: SyntaxNode,
@@ -2264,10 +2374,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl UseTree {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn star_token(&self) -> Option<Star> { support::token(&self.syntax) }
pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) }
pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Alias {
pub(crate) syntax: SyntaxNode,
@@ -2285,8 +2396,9 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::NameOwner for Alias {}
impl Alias {
pub fn as_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, AS_KW) }
pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct UseTreeList {
pub(crate) syntax: SyntaxNode,
@@ -2303,10 +2415,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl UseTreeList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExternCrateItem {
pub(crate) syntax: SyntaxNode,
@@ -2325,11 +2438,12 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::AttrsOwner for ExternCrateItem {}
impl ast::VisibilityOwner for ExternCrateItem {}
impl ExternCrateItem {
pub fn extern_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, EXTERN_KW) }
pub fn crate_token(&self) -> Option<SyntaxToken> { support::token2(&self.syntax, CRATE_KW) }
pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }
pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ArgList {
pub(crate) syntax: SyntaxNode,
@@ -2346,10 +2460,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ArgList {
pub fn l_paren_token(&self) -> Option<LParen> { support::token(&self.syntax) }
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
pub fn r_paren_token(&self) -> Option<RParen> { support::token(&self.syntax) }
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Path {
pub(crate) syntax: SyntaxNode,
@@ -2369,6 +2484,7 @@ impl Path {
pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) }
pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct PathSegment {
pub(crate) syntax: SyntaxNode,
@@ -2385,15 +2501,16 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl PathSegment {
pub fn coloncolon_token(&self) -> Option<Coloncolon> { support::token(&self.syntax) }
pub fn l_angle_token(&self) -> Option<LAngle> { support::token(&self.syntax) }
pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
pub fn type_arg_list(&self) -> Option<TypeArgList> { support::child(&self.syntax) }
pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) }
pub fn r_angle_token(&self) -> Option<RAngle> { support::token(&self.syntax) }
pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeArgList {
pub(crate) syntax: SyntaxNode,
@@ -2410,15 +2527,16 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl TypeArgList {
pub fn coloncolon_token(&self) -> Option<Coloncolon> { support::token(&self.syntax) }
pub fn l_angle_token(&self) -> Option<LAngle> { support::token(&self.syntax) }
pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) }
pub fn type_args(&self) -> AstChildren<TypeArg> { support::children(&self.syntax) }
pub fn lifetime_args(&self) -> AstChildren<LifetimeArg> { support::children(&self.syntax) }
pub fn assoc_type_args(&self) -> AstChildren<AssocTypeArg> { support::children(&self.syntax) }
pub fn const_args(&self) -> AstChildren<ConstArg> { support::children(&self.syntax) }
pub fn r_angle_token(&self) -> Option<RAngle> { support::token(&self.syntax) }
pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TypeArg {
pub(crate) syntax: SyntaxNode,
@@ -2437,6 +2555,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl TypeArg {
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct AssocTypeArg {
pub(crate) syntax: SyntaxNode,
@@ -2455,9 +2574,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
impl ast::TypeBoundsOwner for AssocTypeArg {}
impl AssocTypeArg {
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LifetimeArg {
pub(crate) syntax: SyntaxNode,
@@ -2474,8 +2594,11 @@ fn cast(syntax: SyntaxNode) -> Option<Self> {
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl LifetimeArg {
pub fn lifetime_token(&self) -> Option<Lifetime> { support::token(&self.syntax) }
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![lifetime])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ConstArg {
pub(crate) syntax: SyntaxNode,
@@ -2493,9 +2616,10 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ConstArg {
pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MacroItems {
pub(crate) syntax: SyntaxNode,
@@ -2513,6 +2637,7 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::ModuleItemOwner for MacroItems {}
impl MacroItems {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MacroStmts {
pub(crate) syntax: SyntaxNode,
@@ -2532,6 +2657,7 @@ impl MacroStmts {
pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExternItemList {
pub(crate) syntax: SyntaxNode,
@@ -2549,10 +2675,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ast::ModuleItemOwner for ExternItemList {}
impl ExternItemList {
pub fn l_curly_token(&self) -> Option<LCurly> { support::token(&self.syntax) }
pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) }
pub fn r_curly_token(&self) -> Option<RCurly> { support::token(&self.syntax) }
pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExternBlock {
pub(crate) syntax: SyntaxNode,
@@ -2572,6 +2699,7 @@ impl ExternBlock {
pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MetaItem {
pub(crate) syntax: SyntaxNode,
@@ -2589,10 +2717,11 @@ fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl MetaItem {
pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
pub fn eq_token(&self) -> Option<Eq> { support::token(&self.syntax) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn attr_input(&self) -> Option<AttrInput> { support::child(&self.syntax) }
pub fn nested_meta_items(&self) -> AstChildren<MetaItem> { support::children(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct MacroDef {
pub(crate) syntax: SyntaxNode,
@@ -2612,6 +2741,7 @@ impl MacroDef {
pub fn name(&self) -> Option<Name> { support::child(&self.syntax) }
pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum NominalDef {
StructDef(StructDef),
@@ -2654,6 +2784,7 @@ fn syntax(&self) -> &SyntaxNode {
impl ast::NameOwner for NominalDef {}
impl ast::TypeParamsOwner for NominalDef {}
impl ast::AttrsOwner for NominalDef {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum GenericParam {
LifetimeParam(LifetimeParam),
@@ -2693,6 +2824,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum GenericArg {
LifetimeArg(LifetimeArg),
@@ -2738,6 +2870,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum TypeRef {
ParenType(ParenType),
@@ -2839,6 +2972,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ModuleItem {
StructDef(StructDef),
@@ -2949,6 +3083,7 @@ fn syntax(&self) -> &SyntaxNode {
impl ast::NameOwner for ModuleItem {}
impl ast::AttrsOwner for ModuleItem {}
impl ast::VisibilityOwner for ModuleItem {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ImplItem {
FnDef(FnDef),
@@ -2990,6 +3125,7 @@ fn syntax(&self) -> &SyntaxNode {
}
impl ast::NameOwner for ImplItem {}
impl ast::AttrsOwner for ImplItem {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ExternItem {
FnDef(FnDef),
@@ -3026,6 +3162,7 @@ fn syntax(&self) -> &SyntaxNode {
impl ast::NameOwner for ExternItem {}
impl ast::AttrsOwner for ExternItem {}
impl ast::VisibilityOwner for ExternItem {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Expr {
TupleExpr(TupleExpr),
@@ -3239,6 +3376,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
impl ast::AttrsOwner for Expr {}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Pat {
OrPat(OrPat),
@@ -3352,6 +3490,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum RecordInnerPat {
RecordFieldPat(RecordFieldPat),
@@ -3385,6 +3524,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum AttrInput {
Literal(Literal),
@@ -3418,6 +3558,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Stmt {
LetStmt(LetStmt),
@@ -3451,6 +3592,7 @@ fn syntax(&self) -> &SyntaxNode {
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum FieldDefList {
RecordFieldDefList(RecordFieldDefList),
+12 -1817
View File
@@ -5,1246 +5,7 @@
SyntaxKind::{self, *},
SyntaxToken,
};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Semi {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Semi {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Semi {
fn can_cast(kind: SyntaxKind) -> bool { kind == SEMI }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Comma {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Comma {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Comma {
fn can_cast(kind: SyntaxKind) -> bool { kind == COMMA }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LParen {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for LParen {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for LParen {
fn can_cast(kind: SyntaxKind) -> bool { kind == L_PAREN }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RParen {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RParen {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RParen {
fn can_cast(kind: SyntaxKind) -> bool { kind == R_PAREN }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LCurly {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for LCurly {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for LCurly {
fn can_cast(kind: SyntaxKind) -> bool { kind == L_CURLY }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RCurly {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RCurly {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RCurly {
fn can_cast(kind: SyntaxKind) -> bool { kind == R_CURLY }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LBrack {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for LBrack {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for LBrack {
fn can_cast(kind: SyntaxKind) -> bool { kind == L_BRACK }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RBrack {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RBrack {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RBrack {
fn can_cast(kind: SyntaxKind) -> bool { kind == R_BRACK }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LAngle {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for LAngle {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for LAngle {
fn can_cast(kind: SyntaxKind) -> bool { kind == L_ANGLE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RAngle {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RAngle {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RAngle {
fn can_cast(kind: SyntaxKind) -> bool { kind == R_ANGLE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct At {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for At {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for At {
fn can_cast(kind: SyntaxKind) -> bool { kind == AT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Pound {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Pound {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Pound {
fn can_cast(kind: SyntaxKind) -> bool { kind == POUND }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Tilde {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Tilde {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Tilde {
fn can_cast(kind: SyntaxKind) -> bool { kind == TILDE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Question {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Question {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Question {
fn can_cast(kind: SyntaxKind) -> bool { kind == QUESTION }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dollar {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Dollar {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Dollar {
fn can_cast(kind: SyntaxKind) -> bool { kind == DOLLAR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Amp {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Amp {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Amp {
fn can_cast(kind: SyntaxKind) -> bool { kind == AMP }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Pipe {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Pipe {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Pipe {
fn can_cast(kind: SyntaxKind) -> bool { kind == PIPE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Plus {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Plus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Plus {
fn can_cast(kind: SyntaxKind) -> bool { kind == PLUS }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Star {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Star {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Star {
fn can_cast(kind: SyntaxKind) -> bool { kind == STAR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Slash {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Slash {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Slash {
fn can_cast(kind: SyntaxKind) -> bool { kind == SLASH }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Caret {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Caret {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Caret {
fn can_cast(kind: SyntaxKind) -> bool { kind == CARET }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Percent {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Percent {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Percent {
fn can_cast(kind: SyntaxKind) -> bool { kind == PERCENT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Underscore {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Underscore {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Underscore {
fn can_cast(kind: SyntaxKind) -> bool { kind == UNDERSCORE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dot {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Dot {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Dot {
fn can_cast(kind: SyntaxKind) -> bool { kind == DOT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dotdot {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Dotdot {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Dotdot {
fn can_cast(kind: SyntaxKind) -> bool { kind == DOTDOT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dotdotdot {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Dotdotdot {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Dotdotdot {
fn can_cast(kind: SyntaxKind) -> bool { kind == DOTDOTDOT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dotdoteq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Dotdoteq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Dotdoteq {
fn can_cast(kind: SyntaxKind) -> bool { kind == DOTDOTEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Colon {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Colon {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Colon {
fn can_cast(kind: SyntaxKind) -> bool { kind == COLON }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Coloncolon {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Coloncolon {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Coloncolon {
fn can_cast(kind: SyntaxKind) -> bool { kind == COLONCOLON }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Eq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Eq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Eq {
fn can_cast(kind: SyntaxKind) -> bool { kind == EQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Eqeq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Eqeq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Eqeq {
fn can_cast(kind: SyntaxKind) -> bool { kind == EQEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FatArrow {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for FatArrow {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for FatArrow {
fn can_cast(kind: SyntaxKind) -> bool { kind == FAT_ARROW }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Excl {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Excl {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Excl {
fn can_cast(kind: SyntaxKind) -> bool { kind == EXCL }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Neq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Neq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Neq {
fn can_cast(kind: SyntaxKind) -> bool { kind == NEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Minus {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Minus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Minus {
fn can_cast(kind: SyntaxKind) -> bool { kind == MINUS }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ThinArrow {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for ThinArrow {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for ThinArrow {
fn can_cast(kind: SyntaxKind) -> bool { kind == THIN_ARROW }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Lteq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Lteq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Lteq {
fn can_cast(kind: SyntaxKind) -> bool { kind == LTEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Gteq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Gteq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Gteq {
fn can_cast(kind: SyntaxKind) -> bool { kind == GTEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Pluseq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Pluseq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Pluseq {
fn can_cast(kind: SyntaxKind) -> bool { kind == PLUSEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Minuseq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Minuseq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Minuseq {
fn can_cast(kind: SyntaxKind) -> bool { kind == MINUSEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Pipeeq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Pipeeq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Pipeeq {
fn can_cast(kind: SyntaxKind) -> bool { kind == PIPEEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Ampeq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Ampeq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Ampeq {
fn can_cast(kind: SyntaxKind) -> bool { kind == AMPEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Careteq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Careteq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Careteq {
fn can_cast(kind: SyntaxKind) -> bool { kind == CARETEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Slasheq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Slasheq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Slasheq {
fn can_cast(kind: SyntaxKind) -> bool { kind == SLASHEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Stareq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Stareq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Stareq {
fn can_cast(kind: SyntaxKind) -> bool { kind == STAREQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Percenteq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Percenteq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Percenteq {
fn can_cast(kind: SyntaxKind) -> bool { kind == PERCENTEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Ampamp {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Ampamp {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Ampamp {
fn can_cast(kind: SyntaxKind) -> bool { kind == AMPAMP }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Pipepipe {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Pipepipe {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Pipepipe {
fn can_cast(kind: SyntaxKind) -> bool { kind == PIPEPIPE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Shl {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Shl {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Shl {
fn can_cast(kind: SyntaxKind) -> bool { kind == SHL }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Shr {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Shr {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Shr {
fn can_cast(kind: SyntaxKind) -> bool { kind == SHR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Shleq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Shleq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Shleq {
fn can_cast(kind: SyntaxKind) -> bool { kind == SHLEQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Shreq {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Shreq {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Shreq {
fn can_cast(kind: SyntaxKind) -> bool { kind == SHREQ }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct IntNumber {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for IntNumber {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for IntNumber {
fn can_cast(kind: SyntaxKind) -> bool { kind == INT_NUMBER }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FloatNumber {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for FloatNumber {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for FloatNumber {
fn can_cast(kind: SyntaxKind) -> bool { kind == FLOAT_NUMBER }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Char {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Char {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Char {
fn can_cast(kind: SyntaxKind) -> bool { kind == CHAR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Byte {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Byte {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Byte {
fn can_cast(kind: SyntaxKind) -> bool { kind == BYTE }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct String {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for String {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for String {
fn can_cast(kind: SyntaxKind) -> bool { kind == STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RawString {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RawString {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RawString {
fn can_cast(kind: SyntaxKind) -> bool { kind == RAW_STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ByteString {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for ByteString {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for ByteString {
fn can_cast(kind: SyntaxKind) -> bool { kind == BYTE_STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RawByteString {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RawByteString {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RawByteString {
fn can_cast(kind: SyntaxKind) -> bool { kind == RAW_BYTE_STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Error {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Error {
fn can_cast(kind: SyntaxKind) -> bool { kind == ERROR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Ident {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Ident {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Ident {
fn can_cast(kind: SyntaxKind) -> bool { kind == IDENT }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Whitespace {
pub(crate) syntax: SyntaxToken,
@@ -1265,26 +26,7 @@ fn cast(syntax: SyntaxToken) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Lifetime {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Lifetime {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Lifetime {
fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Comment {
pub(crate) syntax: SyntaxToken,
@@ -1305,17 +47,18 @@ fn cast(syntax: SyntaxToken) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Shebang {
pub struct String {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for Shebang {
impl std::fmt::Display for String {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for Shebang {
fn can_cast(kind: SyntaxKind) -> bool { kind == SHEBANG }
impl AstToken for String {
fn can_cast(kind: SyntaxKind) -> bool { kind == STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
@@ -1325,17 +68,18 @@ fn cast(syntax: SyntaxToken) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct LDollar {
pub struct RawString {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for LDollar {
impl std::fmt::Display for RawString {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for LDollar {
fn can_cast(kind: SyntaxKind) -> bool { kind == L_DOLLAR }
impl AstToken for RawString {
fn can_cast(kind: SyntaxKind) -> bool { kind == RAW_STRING }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
@@ -1345,552 +89,3 @@ fn cast(syntax: SyntaxToken) -> Option<Self> {
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RDollar {
pub(crate) syntax: SyntaxToken,
}
impl std::fmt::Display for RDollar {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(&self.syntax, f)
}
}
impl AstToken for RDollar {
fn can_cast(kind: SyntaxKind) -> bool { kind == R_DOLLAR }
fn cast(syntax: SyntaxToken) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxToken { &self.syntax }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum LeftDelimiter {
LParen(LParen),
LBrack(LBrack),
LCurly(LCurly),
}
impl From<LParen> for LeftDelimiter {
fn from(node: LParen) -> LeftDelimiter { LeftDelimiter::LParen(node) }
}
impl From<LBrack> for LeftDelimiter {
fn from(node: LBrack) -> LeftDelimiter { LeftDelimiter::LBrack(node) }
}
impl From<LCurly> for LeftDelimiter {
fn from(node: LCurly) -> LeftDelimiter { LeftDelimiter::LCurly(node) }
}
impl std::fmt::Display for LeftDelimiter {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for LeftDelimiter {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
L_PAREN | L_BRACK | L_CURLY => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
L_PAREN => LeftDelimiter::LParen(LParen { syntax }),
L_BRACK => LeftDelimiter::LBrack(LBrack { syntax }),
L_CURLY => LeftDelimiter::LCurly(LCurly { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
LeftDelimiter::LParen(it) => &it.syntax,
LeftDelimiter::LBrack(it) => &it.syntax,
LeftDelimiter::LCurly(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum RightDelimiter {
RParen(RParen),
RBrack(RBrack),
RCurly(RCurly),
}
impl From<RParen> for RightDelimiter {
fn from(node: RParen) -> RightDelimiter { RightDelimiter::RParen(node) }
}
impl From<RBrack> for RightDelimiter {
fn from(node: RBrack) -> RightDelimiter { RightDelimiter::RBrack(node) }
}
impl From<RCurly> for RightDelimiter {
fn from(node: RCurly) -> RightDelimiter { RightDelimiter::RCurly(node) }
}
impl std::fmt::Display for RightDelimiter {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for RightDelimiter {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
R_PAREN | R_BRACK | R_CURLY => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
R_PAREN => RightDelimiter::RParen(RParen { syntax }),
R_BRACK => RightDelimiter::RBrack(RBrack { syntax }),
R_CURLY => RightDelimiter::RCurly(RCurly { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
RightDelimiter::RParen(it) => &it.syntax,
RightDelimiter::RBrack(it) => &it.syntax,
RightDelimiter::RCurly(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum RangeSeparator {
Dotdot(Dotdot),
Dotdotdot(Dotdotdot),
Dotdoteq(Dotdoteq),
}
impl From<Dotdot> for RangeSeparator {
fn from(node: Dotdot) -> RangeSeparator { RangeSeparator::Dotdot(node) }
}
impl From<Dotdotdot> for RangeSeparator {
fn from(node: Dotdotdot) -> RangeSeparator { RangeSeparator::Dotdotdot(node) }
}
impl From<Dotdoteq> for RangeSeparator {
fn from(node: Dotdoteq) -> RangeSeparator { RangeSeparator::Dotdoteq(node) }
}
impl std::fmt::Display for RangeSeparator {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for RangeSeparator {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
DOTDOT | DOTDOTDOT | DOTDOTEQ => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
DOTDOT => RangeSeparator::Dotdot(Dotdot { syntax }),
DOTDOTDOT => RangeSeparator::Dotdotdot(Dotdotdot { syntax }),
DOTDOTEQ => RangeSeparator::Dotdoteq(Dotdoteq { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
RangeSeparator::Dotdot(it) => &it.syntax,
RangeSeparator::Dotdotdot(it) => &it.syntax,
RangeSeparator::Dotdoteq(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum BinOp {
Pipepipe(Pipepipe),
Ampamp(Ampamp),
Eqeq(Eqeq),
Neq(Neq),
Lteq(Lteq),
Gteq(Gteq),
LAngle(LAngle),
RAngle(RAngle),
Plus(Plus),
Star(Star),
Minus(Minus),
Slash(Slash),
Percent(Percent),
Shl(Shl),
Shr(Shr),
Caret(Caret),
Pipe(Pipe),
Amp(Amp),
Eq(Eq),
Pluseq(Pluseq),
Slasheq(Slasheq),
Stareq(Stareq),
Percenteq(Percenteq),
Shreq(Shreq),
Shleq(Shleq),
Minuseq(Minuseq),
Pipeeq(Pipeeq),
Ampeq(Ampeq),
Careteq(Careteq),
}
impl From<Pipepipe> for BinOp {
fn from(node: Pipepipe) -> BinOp { BinOp::Pipepipe(node) }
}
impl From<Ampamp> for BinOp {
fn from(node: Ampamp) -> BinOp { BinOp::Ampamp(node) }
}
impl From<Eqeq> for BinOp {
fn from(node: Eqeq) -> BinOp { BinOp::Eqeq(node) }
}
impl From<Neq> for BinOp {
fn from(node: Neq) -> BinOp { BinOp::Neq(node) }
}
impl From<Lteq> for BinOp {
fn from(node: Lteq) -> BinOp { BinOp::Lteq(node) }
}
impl From<Gteq> for BinOp {
fn from(node: Gteq) -> BinOp { BinOp::Gteq(node) }
}
impl From<LAngle> for BinOp {
fn from(node: LAngle) -> BinOp { BinOp::LAngle(node) }
}
impl From<RAngle> for BinOp {
fn from(node: RAngle) -> BinOp { BinOp::RAngle(node) }
}
impl From<Plus> for BinOp {
fn from(node: Plus) -> BinOp { BinOp::Plus(node) }
}
impl From<Star> for BinOp {
fn from(node: Star) -> BinOp { BinOp::Star(node) }
}
impl From<Minus> for BinOp {
fn from(node: Minus) -> BinOp { BinOp::Minus(node) }
}
impl From<Slash> for BinOp {
fn from(node: Slash) -> BinOp { BinOp::Slash(node) }
}
impl From<Percent> for BinOp {
fn from(node: Percent) -> BinOp { BinOp::Percent(node) }
}
impl From<Shl> for BinOp {
fn from(node: Shl) -> BinOp { BinOp::Shl(node) }
}
impl From<Shr> for BinOp {
fn from(node: Shr) -> BinOp { BinOp::Shr(node) }
}
impl From<Caret> for BinOp {
fn from(node: Caret) -> BinOp { BinOp::Caret(node) }
}
impl From<Pipe> for BinOp {
fn from(node: Pipe) -> BinOp { BinOp::Pipe(node) }
}
impl From<Amp> for BinOp {
fn from(node: Amp) -> BinOp { BinOp::Amp(node) }
}
impl From<Eq> for BinOp {
fn from(node: Eq) -> BinOp { BinOp::Eq(node) }
}
impl From<Pluseq> for BinOp {
fn from(node: Pluseq) -> BinOp { BinOp::Pluseq(node) }
}
impl From<Slasheq> for BinOp {
fn from(node: Slasheq) -> BinOp { BinOp::Slasheq(node) }
}
impl From<Stareq> for BinOp {
fn from(node: Stareq) -> BinOp { BinOp::Stareq(node) }
}
impl From<Percenteq> for BinOp {
fn from(node: Percenteq) -> BinOp { BinOp::Percenteq(node) }
}
impl From<Shreq> for BinOp {
fn from(node: Shreq) -> BinOp { BinOp::Shreq(node) }
}
impl From<Shleq> for BinOp {
fn from(node: Shleq) -> BinOp { BinOp::Shleq(node) }
}
impl From<Minuseq> for BinOp {
fn from(node: Minuseq) -> BinOp { BinOp::Minuseq(node) }
}
impl From<Pipeeq> for BinOp {
fn from(node: Pipeeq) -> BinOp { BinOp::Pipeeq(node) }
}
impl From<Ampeq> for BinOp {
fn from(node: Ampeq) -> BinOp { BinOp::Ampeq(node) }
}
impl From<Careteq> for BinOp {
fn from(node: Careteq) -> BinOp { BinOp::Careteq(node) }
}
impl std::fmt::Display for BinOp {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for BinOp {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
PIPEPIPE | AMPAMP | EQEQ | NEQ | LTEQ | GTEQ | L_ANGLE | R_ANGLE | PLUS | STAR
| MINUS | SLASH | PERCENT | SHL | SHR | CARET | PIPE | AMP | EQ | PLUSEQ | SLASHEQ
| STAREQ | PERCENTEQ | SHREQ | SHLEQ | MINUSEQ | PIPEEQ | AMPEQ | CARETEQ => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
PIPEPIPE => BinOp::Pipepipe(Pipepipe { syntax }),
AMPAMP => BinOp::Ampamp(Ampamp { syntax }),
EQEQ => BinOp::Eqeq(Eqeq { syntax }),
NEQ => BinOp::Neq(Neq { syntax }),
LTEQ => BinOp::Lteq(Lteq { syntax }),
GTEQ => BinOp::Gteq(Gteq { syntax }),
L_ANGLE => BinOp::LAngle(LAngle { syntax }),
R_ANGLE => BinOp::RAngle(RAngle { syntax }),
PLUS => BinOp::Plus(Plus { syntax }),
STAR => BinOp::Star(Star { syntax }),
MINUS => BinOp::Minus(Minus { syntax }),
SLASH => BinOp::Slash(Slash { syntax }),
PERCENT => BinOp::Percent(Percent { syntax }),
SHL => BinOp::Shl(Shl { syntax }),
SHR => BinOp::Shr(Shr { syntax }),
CARET => BinOp::Caret(Caret { syntax }),
PIPE => BinOp::Pipe(Pipe { syntax }),
AMP => BinOp::Amp(Amp { syntax }),
EQ => BinOp::Eq(Eq { syntax }),
PLUSEQ => BinOp::Pluseq(Pluseq { syntax }),
SLASHEQ => BinOp::Slasheq(Slasheq { syntax }),
STAREQ => BinOp::Stareq(Stareq { syntax }),
PERCENTEQ => BinOp::Percenteq(Percenteq { syntax }),
SHREQ => BinOp::Shreq(Shreq { syntax }),
SHLEQ => BinOp::Shleq(Shleq { syntax }),
MINUSEQ => BinOp::Minuseq(Minuseq { syntax }),
PIPEEQ => BinOp::Pipeeq(Pipeeq { syntax }),
AMPEQ => BinOp::Ampeq(Ampeq { syntax }),
CARETEQ => BinOp::Careteq(Careteq { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
BinOp::Pipepipe(it) => &it.syntax,
BinOp::Ampamp(it) => &it.syntax,
BinOp::Eqeq(it) => &it.syntax,
BinOp::Neq(it) => &it.syntax,
BinOp::Lteq(it) => &it.syntax,
BinOp::Gteq(it) => &it.syntax,
BinOp::LAngle(it) => &it.syntax,
BinOp::RAngle(it) => &it.syntax,
BinOp::Plus(it) => &it.syntax,
BinOp::Star(it) => &it.syntax,
BinOp::Minus(it) => &it.syntax,
BinOp::Slash(it) => &it.syntax,
BinOp::Percent(it) => &it.syntax,
BinOp::Shl(it) => &it.syntax,
BinOp::Shr(it) => &it.syntax,
BinOp::Caret(it) => &it.syntax,
BinOp::Pipe(it) => &it.syntax,
BinOp::Amp(it) => &it.syntax,
BinOp::Eq(it) => &it.syntax,
BinOp::Pluseq(it) => &it.syntax,
BinOp::Slasheq(it) => &it.syntax,
BinOp::Stareq(it) => &it.syntax,
BinOp::Percenteq(it) => &it.syntax,
BinOp::Shreq(it) => &it.syntax,
BinOp::Shleq(it) => &it.syntax,
BinOp::Minuseq(it) => &it.syntax,
BinOp::Pipeeq(it) => &it.syntax,
BinOp::Ampeq(it) => &it.syntax,
BinOp::Careteq(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum PrefixOp {
Minus(Minus),
Excl(Excl),
Star(Star),
}
impl From<Minus> for PrefixOp {
fn from(node: Minus) -> PrefixOp { PrefixOp::Minus(node) }
}
impl From<Excl> for PrefixOp {
fn from(node: Excl) -> PrefixOp { PrefixOp::Excl(node) }
}
impl From<Star> for PrefixOp {
fn from(node: Star) -> PrefixOp { PrefixOp::Star(node) }
}
impl std::fmt::Display for PrefixOp {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for PrefixOp {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
MINUS | EXCL | STAR => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
MINUS => PrefixOp::Minus(Minus { syntax }),
EXCL => PrefixOp::Excl(Excl { syntax }),
STAR => PrefixOp::Star(Star { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
PrefixOp::Minus(it) => &it.syntax,
PrefixOp::Excl(it) => &it.syntax,
PrefixOp::Star(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum RangeOp {
Dotdot(Dotdot),
Dotdoteq(Dotdoteq),
}
impl From<Dotdot> for RangeOp {
fn from(node: Dotdot) -> RangeOp { RangeOp::Dotdot(node) }
}
impl From<Dotdoteq> for RangeOp {
fn from(node: Dotdoteq) -> RangeOp { RangeOp::Dotdoteq(node) }
}
impl std::fmt::Display for RangeOp {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for RangeOp {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
DOTDOT | DOTDOTEQ => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
DOTDOT => RangeOp::Dotdot(Dotdot { syntax }),
DOTDOTEQ => RangeOp::Dotdoteq(Dotdoteq { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
RangeOp::Dotdot(it) => &it.syntax,
RangeOp::Dotdoteq(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum LiteralToken {
IntNumber(IntNumber),
FloatNumber(FloatNumber),
String(String),
RawString(RawString),
ByteString(ByteString),
RawByteString(RawByteString),
Char(Char),
Byte(Byte),
}
impl From<IntNumber> for LiteralToken {
fn from(node: IntNumber) -> LiteralToken { LiteralToken::IntNumber(node) }
}
impl From<FloatNumber> for LiteralToken {
fn from(node: FloatNumber) -> LiteralToken { LiteralToken::FloatNumber(node) }
}
impl From<String> for LiteralToken {
fn from(node: String) -> LiteralToken { LiteralToken::String(node) }
}
impl From<RawString> for LiteralToken {
fn from(node: RawString) -> LiteralToken { LiteralToken::RawString(node) }
}
impl From<ByteString> for LiteralToken {
fn from(node: ByteString) -> LiteralToken { LiteralToken::ByteString(node) }
}
impl From<RawByteString> for LiteralToken {
fn from(node: RawByteString) -> LiteralToken { LiteralToken::RawByteString(node) }
}
impl From<Char> for LiteralToken {
fn from(node: Char) -> LiteralToken { LiteralToken::Char(node) }
}
impl From<Byte> for LiteralToken {
fn from(node: Byte) -> LiteralToken { LiteralToken::Byte(node) }
}
impl std::fmt::Display for LiteralToken {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for LiteralToken {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
INT_NUMBER | FLOAT_NUMBER | STRING | RAW_STRING | BYTE_STRING | RAW_BYTE_STRING
| CHAR | BYTE => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
INT_NUMBER => LiteralToken::IntNumber(IntNumber { syntax }),
FLOAT_NUMBER => LiteralToken::FloatNumber(FloatNumber { syntax }),
STRING => LiteralToken::String(String { syntax }),
RAW_STRING => LiteralToken::RawString(RawString { syntax }),
BYTE_STRING => LiteralToken::ByteString(ByteString { syntax }),
RAW_BYTE_STRING => LiteralToken::RawByteString(RawByteString { syntax }),
CHAR => LiteralToken::Char(Char { syntax }),
BYTE => LiteralToken::Byte(Byte { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
LiteralToken::IntNumber(it) => &it.syntax,
LiteralToken::FloatNumber(it) => &it.syntax,
LiteralToken::String(it) => &it.syntax,
LiteralToken::RawString(it) => &it.syntax,
LiteralToken::ByteString(it) => &it.syntax,
LiteralToken::RawByteString(it) => &it.syntax,
LiteralToken::Char(it) => &it.syntax,
LiteralToken::Byte(it) => &it.syntax,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum NameRefToken {
Ident(Ident),
IntNumber(IntNumber),
}
impl From<Ident> for NameRefToken {
fn from(node: Ident) -> NameRefToken { NameRefToken::Ident(node) }
}
impl From<IntNumber> for NameRefToken {
fn from(node: IntNumber) -> NameRefToken { NameRefToken::IntNumber(node) }
}
impl std::fmt::Display for NameRefToken {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl AstToken for NameRefToken {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
IDENT | INT_NUMBER => true,
_ => false,
}
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
let res = match syntax.kind() {
IDENT => NameRefToken::Ident(Ident { syntax }),
INT_NUMBER => NameRefToken::IntNumber(IntNumber { syntax }),
_ => return None,
};
Some(res)
}
fn syntax(&self) -> &SyntaxToken {
match self {
NameRefToken::Ident(it) => &it.syntax,
NameRefToken::IntNumber(it) => &it.syntax,
}
}
}
+3 -2
View File
@@ -6,6 +6,7 @@
use crate::{
ast::{self, support, AstChildren, AstNode, AstToken},
syntax_node::SyntaxElementChildren,
SyntaxToken, T,
};
pub trait TypeAscriptionOwner: AstNode {
@@ -63,8 +64,8 @@ fn type_bound_list(&self) -> Option<ast::TypeBoundList> {
support::child(self.syntax())
}
fn colon(&self) -> Option<ast::Colon> {
support::token(self.syntax())
fn colon_token(&self) -> Option<SyntaxToken> {
support::token(self.syntax(), T![:])
}
}
+38 -39
View File
@@ -4,7 +4,7 @@
use crate::{
SyntaxError,
SyntaxKind::{self, *},
TextRange, TextUnit,
TextRange, TextUnit, T,
};
/// A token of Rust source.
@@ -115,21 +115,20 @@ fn rustc_token_kind_to_syntax_kind(
// being `u16` that come from `rowan::SyntaxKind`.
let syntax_kind = {
use rustc_lexer::TokenKind as TK;
match rustc_token_kind {
TK::LineComment => COMMENT,
rustc_lexer::TokenKind::LineComment => COMMENT,
TK::BlockComment { terminated: true } => COMMENT,
TK::BlockComment { terminated: false } => {
rustc_lexer::TokenKind::BlockComment { terminated: true } => COMMENT,
rustc_lexer::TokenKind::BlockComment { terminated: false } => {
return (
COMMENT,
Some("Missing trailing `*/` symbols to terminate the block comment"),
);
}
TK::Whitespace => WHITESPACE,
rustc_lexer::TokenKind::Whitespace => WHITESPACE,
TK::Ident => {
rustc_lexer::TokenKind::Ident => {
if token_text == "_" {
UNDERSCORE
} else {
@@ -137,42 +136,42 @@ fn rustc_token_kind_to_syntax_kind(
}
}
TK::RawIdent => IDENT,
TK::Literal { kind, .. } => return match_literal_kind(&kind),
rustc_lexer::TokenKind::RawIdent => IDENT,
rustc_lexer::TokenKind::Literal { kind, .. } => return match_literal_kind(&kind),
TK::Lifetime { starts_with_number: false } => LIFETIME,
TK::Lifetime { starts_with_number: true } => {
rustc_lexer::TokenKind::Lifetime { starts_with_number: false } => LIFETIME,
rustc_lexer::TokenKind::Lifetime { starts_with_number: true } => {
return (LIFETIME, Some("Lifetime name cannot start with a number"))
}
TK::Semi => SEMI,
TK::Comma => COMMA,
TK::Dot => DOT,
TK::OpenParen => L_PAREN,
TK::CloseParen => R_PAREN,
TK::OpenBrace => L_CURLY,
TK::CloseBrace => R_CURLY,
TK::OpenBracket => L_BRACK,
TK::CloseBracket => R_BRACK,
TK::At => AT,
TK::Pound => POUND,
TK::Tilde => TILDE,
TK::Question => QUESTION,
TK::Colon => COLON,
TK::Dollar => DOLLAR,
TK::Eq => EQ,
TK::Not => EXCL,
TK::Lt => L_ANGLE,
TK::Gt => R_ANGLE,
TK::Minus => MINUS,
TK::And => AMP,
TK::Or => PIPE,
TK::Plus => PLUS,
TK::Star => STAR,
TK::Slash => SLASH,
TK::Caret => CARET,
TK::Percent => PERCENT,
TK::Unknown => ERROR,
rustc_lexer::TokenKind::Semi => T![;],
rustc_lexer::TokenKind::Comma => T![,],
rustc_lexer::TokenKind::Dot => T![.],
rustc_lexer::TokenKind::OpenParen => T!['('],
rustc_lexer::TokenKind::CloseParen => T![')'],
rustc_lexer::TokenKind::OpenBrace => T!['{'],
rustc_lexer::TokenKind::CloseBrace => T!['}'],
rustc_lexer::TokenKind::OpenBracket => T!['['],
rustc_lexer::TokenKind::CloseBracket => T![']'],
rustc_lexer::TokenKind::At => T![@],
rustc_lexer::TokenKind::Pound => T![#],
rustc_lexer::TokenKind::Tilde => T![~],
rustc_lexer::TokenKind::Question => T![?],
rustc_lexer::TokenKind::Colon => T![:],
rustc_lexer::TokenKind::Dollar => T![$],
rustc_lexer::TokenKind::Eq => T![=],
rustc_lexer::TokenKind::Not => T![!],
rustc_lexer::TokenKind::Lt => T![<],
rustc_lexer::TokenKind::Gt => T![>],
rustc_lexer::TokenKind::Minus => T![-],
rustc_lexer::TokenKind::And => T![&],
rustc_lexer::TokenKind::Or => T![|],
rustc_lexer::TokenKind::Plus => T![+],
rustc_lexer::TokenKind::Star => T![*],
rustc_lexer::TokenKind::Slash => T![/],
rustc_lexer::TokenKind::Caret => T![^],
rustc_lexer::TokenKind::Percent => T![%],
rustc_lexer::TokenKind::Unknown => ERROR,
}
};
@@ -6,5 +6,5 @@ WHITESPACE 1 " "
IDENT 1 "a"
WHITESPACE 1 " "
IDENT 5 "quote"
EXCL 1 "!"
BANG 1 "!"
> error[0; 4) token("r## ") msg(Missing `"` symbol after `#` symbols to begin the raw string literal)
@@ -6,5 +6,5 @@ WHITESPACE 1 " "
IDENT 1 "a"
WHITESPACE 1 " "
IDENT 5 "quote"
EXCL 1 "!"
BANG 1 "!"
> error[0; 5) token("br## ") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal)
@@ -1,4 +1,4 @@
SEMI 1 ";"
SEMICOLON 1 ";"
WHITESPACE 1 " "
COMMA 1 ","
WHITESPACE 1 " "
@@ -65,9 +65,9 @@ WHITESPACE 1 " "
EQ 1 "="
R_ANGLE 1 ">"
WHITESPACE 1 "\n"
EXCL 1 "!"
BANG 1 "!"
WHITESPACE 1 " "
EXCL 1 "!"
BANG 1 "!"
EQ 1 "="
WHITESPACE 1 "\n"
MINUS 1 "-"
@@ -3,7 +3,7 @@ SOURCE_FILE@[0; 42)
WHITESPACE@[20; 21) "\n"
ATTR@[21; 23)
POUND@[21; 22) "#"
EXCL@[22; 23) "!"
BANG@[22; 23) "!"
ERROR@[23; 24)
SLASH@[23; 24) "/"
USE_ITEM@[24; 28)
@@ -29,11 +29,11 @@ SOURCE_FILE@[0; 42)
error [23; 23): expected `[`
error [23; 23): expected an item
error [27; 27): expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error [28; 28): expected SEMI
error [31; 31): expected EXCL
error [28; 28): expected SEMICOLON
error [31; 31): expected BANG
error [31; 31): expected `{`, `[`, `(`
error [31; 31): expected SEMI
error [31; 31): expected SEMICOLON
error [31; 31): expected an item
error [35; 35): expected EXCL
error [35; 35): expected BANG
error [41; 41): expected `{`, `[`, `(`
error [41; 41): expected SEMI
error [41; 41): expected SEMICOLON
@@ -34,6 +34,6 @@ SOURCE_FILE@[0; 40)
WHITESPACE@[37; 38) "\n"
R_CURLY@[38; 39) "}"
ERROR@[39; 40)
SEMI@[39; 40) ";"
SEMICOLON@[39; 40) ";"
error [39; 39): expected item, found `;`
consider removing this semicolon
@@ -8,9 +8,9 @@ SOURCE_FILE@[0; 12)
PATH_SEGMENT@[4; 7)
NAME_REF@[4; 7)
IDENT@[4; 7) "foo"
COLONCOLON@[7; 9) "::"
COLON2@[7; 9) "::"
PATH_SEGMENT@[9; 11)
ERROR@[9; 11)
INT_NUMBER@[9; 11) "92"
SEMI@[11; 12) ";"
SEMICOLON@[11; 12) ";"
error [9; 9): expected identifier
@@ -7,7 +7,7 @@ SOURCE_FILE@[0; 31)
WHITESPACE@[9; 10) " "
NAME@[10; 11)
IDENT@[10; 11) "S"
SEMI@[11; 12) ";"
SEMICOLON@[11; 12) ";"
WHITESPACE@[12; 14) "\n\n"
ERROR@[14; 15)
R_CURLY@[14; 15) "}"
@@ -76,6 +76,6 @@ SOURCE_FILE@[0; 95)
WHITESPACE@[92; 93) "\n"
R_CURLY@[93; 94) "}"
WHITESPACE@[94; 95) "\n"
error [17; 17): expected EXCL
error [19; 19): expected SEMI
error [17; 17): expected BANG
error [19; 19): expected SEMICOLON
error [20; 20): expected an item
@@ -43,7 +43,7 @@ SOURCE_FILE@[0; 43)
WHITESPACE@[39; 40) " "
NAME@[40; 41)
IDENT@[40; 41) "T"
SEMI@[41; 42) ";"
SEMICOLON@[41; 42) ";"
WHITESPACE@[42; 43) "\n"
error [9; 9): expected type parameter
error [11; 11): expected COMMA
@@ -53,6 +53,6 @@ error [12; 12): expected an item
error [14; 14): expected an item
error [15; 15): expected an item
error [17; 17): expected an item
error [24; 24): expected SEMI
error [24; 24): expected SEMICOLON
error [24; 24): expected expression
error [25; 25): expected SEMI
error [25; 25): expected SEMICOLON
@@ -37,9 +37,9 @@ SOURCE_FILE@[0; 42)
R_PAREN@[35; 36) ")"
WHITESPACE@[36; 37) " "
R_CURLY@[37; 38) "}"
SEMI@[38; 39) ";"
SEMICOLON@[38; 39) ";"
WHITESPACE@[39; 40) "\n"
R_CURLY@[40; 41) "}"
WHITESPACE@[41; 42) "\n"
error [24; 24): expected `{`
error [24; 24): expected SEMI
error [24; 24): expected SEMICOLON
@@ -8,6 +8,6 @@ SOURCE_FILE@[0; 19)
WHITESPACE@[13; 14) " "
NAME@[14; 17)
IDENT@[14; 17) "Foo"
SEMI@[17; 18) ";"
SEMICOLON@[17; 18) ";"
WHITESPACE@[18; 19) "\n"
error [6; 6): expected existential, fn, trait or impl
@@ -106,7 +106,7 @@ SOURCE_FILE@[0; 389)
WHITESPACE@[122; 123)
LITERAL@[123; 124)
INT_NUMBER@[123; 124) "0"
SEMI@[124; 125)
SEMICOLON@[124; 125)
WHITESPACE@[125; 130)
LET_STMT@[130; 389)
LET_KW@[130; 133)
@@ -226,7 +226,7 @@ SOURCE_FILE@[0; 389)
err: `expected pattern`
PARAM@[236; 237)
ERROR@[236; 237)
EXCL@[236; 237)
BANG@[236; 237)
err: `expected COMMA`
PARAM@[237; 242)
BIND_PAT@[237; 242)
@@ -272,7 +272,7 @@ SOURCE_FILE@[0; 389)
err: `expected pattern`
PARAM@[283; 284)
ERROR@[283; 284)
SEMI@[283; 284)
SEMICOLON@[283; 284)
err: `expected COMMA`
WHITESPACE@[284; 297)
err: `expected pattern`
@@ -327,7 +327,7 @@ SOURCE_FILE@[0; 389)
err: `expected pattern`
PARAM@[346; 347)
ERROR@[346; 347)
SEMI@[346; 347)
SEMICOLON@[346; 347)
err: `expected COMMA`
WHITESPACE@[347; 360)
err: `expected pattern`
@@ -371,7 +371,7 @@ SOURCE_FILE@[0; 389)
err: `expected pattern`
PARAM@[385; 386)
ERROR@[385; 386)
SEMI@[385; 386)
SEMICOLON@[385; 386)
err: `expected COMMA`
WHITESPACE@[386; 387)
err: `expected pattern`
@@ -67,7 +67,7 @@ SOURCE_FILE@[0; 86)
ERROR@[82; 83)
R_PAREN@[82; 83) ")"
ERROR@[83; 84)
SEMI@[83; 84) ";"
SEMICOLON@[83; 84) ";"
WHITESPACE@[84; 86) "\n\n"
error [67; 67): expected type
error [68; 68): expected COMMA
@@ -80,7 +80,7 @@ error [68; 68): expected COMMA
error [72; 72): expected COMMA
error [72; 72): expected a type
error [72; 72): expected R_PAREN
error [72; 72): expected SEMI
error [72; 72): expected SEMICOLON
error [72; 72): expected an item
error [73; 73): expected an item
error [79; 79): expected an item
@@ -37,8 +37,8 @@ SOURCE_FILE@[0; 56)
WHITESPACE@[49; 50) " "
LITERAL@[50; 52)
INT_NUMBER@[50; 52) "92"
SEMI@[52; 53) ";"
SEMICOLON@[52; 53) ";"
WHITESPACE@[53; 54) "\n"
R_CURLY@[54; 55) "}"
WHITESPACE@[55; 56) "\n"
error [38; 38): expected SEMI
error [38; 38): expected SEMICOLON
@@ -34,7 +34,7 @@ SOURCE_FILE@[0; 47)
WHITESPACE@[32; 33) " "
LITERAL@[33; 35)
INT_NUMBER@[33; 35) "92"
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 41) "\n "
BIN_EXPR@[41; 44)
LITERAL@[41; 42)
@@ -60,7 +60,7 @@ SOURCE_FILE@[0; 183)
ARG_LIST@[82; 84)
L_PAREN@[82; 83) "("
R_PAREN@[83; 84) ")"
SEMI@[84; 85) ";"
SEMICOLON@[84; 85) ";"
WHITESPACE@[85; 94) "\n "
METHOD_CALL_EXPR@[94; 155)
FIELD_EXPR@[94; 105)
@@ -107,7 +107,7 @@ SOURCE_FILE@[0; 183)
PATH_SEGMENT@[146; 149)
NAME_REF@[146; 149)
IDENT@[146; 149) "vec"
EXCL@[149; 150) "!"
BANG@[149; 150) "!"
TOKEN_TREE@[150; 152)
L_BRACK@[150; 151) "["
R_BRACK@[151; 152) "]"
@@ -32,7 +32,7 @@ SOURCE_FILE@[0; 139)
WHITESPACE@[38; 39) " "
LITERAL@[39; 40)
INT_NUMBER@[39; 40) "1"
SEMI@[40; 41) ";"
SEMICOLON@[40; 41) ";"
WHITESPACE@[41; 46) "\n "
LET_STMT@[46; 49)
LET_KW@[46; 49) "let"
@@ -48,7 +48,7 @@ SOURCE_FILE@[0; 139)
WHITESPACE@[63; 64) " "
LITERAL@[64; 66)
INT_NUMBER@[64; 66) "92"
SEMI@[66; 67) ";"
SEMICOLON@[66; 67) ";"
WHITESPACE@[67; 72) "\n "
LET_STMT@[72; 75)
LET_KW@[72; 75) "let"
@@ -96,12 +96,12 @@ SOURCE_FILE@[0; 139)
R_CURLY@[137; 138) "}"
WHITESPACE@[138; 139) "\n"
error [24; 24): expected expression
error [24; 24): expected SEMI
error [24; 24): expected SEMICOLON
error [49; 49): expected pattern
error [49; 49): expected SEMI
error [49; 49): expected SEMICOLON
error [75; 75): expected pattern
error [75; 75): expected SEMI
error [75; 75): expected SEMICOLON
error [98; 98): expected pattern
error [98; 98): expected SEMI
error [98; 98): expected SEMICOLON
error [124; 124): expected pattern
error [124; 124): expected SEMI
error [124; 124): expected SEMICOLON
@@ -150,34 +150,34 @@ SOURCE_FILE@[0; 112)
WHITESPACE@[111; 112) "\n"
error [16; 16): expected expression
error [17; 17): expected R_BRACK
error [17; 17): expected SEMI
error [17; 17): expected SEMICOLON
error [17; 17): expected expression
error [18; 18): expected SEMI
error [18; 18): expected SEMICOLON
error [25; 25): expected a name
error [26; 26): expected `;`, `{`, or `(`
error [30; 30): expected pattern
error [31; 31): expected SEMI
error [31; 31): expected SEMICOLON
error [53; 53): expected expression
error [54; 54): expected SEMI
error [54; 54): expected SEMICOLON
error [54; 54): expected expression
error [55; 55): expected SEMI
error [55; 55): expected SEMICOLON
error [60; 60): expected type
error [60; 60): expected `{`
error [60; 60): expected expression
error [61; 61): expected SEMI
error [61; 61): expected SEMICOLON
error [65; 65): expected pattern
error [65; 65): expected SEMI
error [65; 65): expected SEMICOLON
error [65; 65): expected expression
error [92; 92): expected expression
error [93; 93): expected SEMI
error [93; 93): expected SEMICOLON
error [93; 93): expected expression
error [94; 94): expected SEMI
error [94; 94): expected SEMICOLON
error [95; 95): expected expression
error [96; 96): expected SEMI
error [96; 96): expected SEMICOLON
error [96; 96): expected expression
error [97; 97): expected SEMI
error [97; 97): expected SEMICOLON
error [103; 103): expected a name
error [104; 104): expected `{`
error [108; 108): expected pattern
error [108; 108): expected SEMI
error [108; 108): expected SEMICOLON
error [108; 108): expected expression
@@ -17,7 +17,7 @@ SOURCE_FILE@[0; 94)
PATH_SEGMENT@[16; 19)
NAME_REF@[16; 19)
IDENT@[16; 19) "foo"
EXCL@[19; 20) "!"
BANG@[19; 20) "!"
WHITESPACE@[20; 21) " "
TOKEN_TREE@[21; 49)
L_PAREN@[21; 22) "("
@@ -144,7 +144,7 @@ SOURCE_FILE@[0; 240)
EXPR_STMT@[121; 123)
ERROR@[121; 122)
R_ANGLE@[121; 122) ">"
SEMI@[122; 123) ";"
SEMICOLON@[122; 123) ";"
WHITESPACE@[123; 128) "\n "
LET_STMT@[128; 141)
LET_KW@[128; 131) "let"
@@ -219,7 +219,7 @@ SOURCE_FILE@[0; 240)
R_PAREN@[177; 178) ")"
R_ANGLE@[178; 179) ">"
ERROR@[179; 180)
SEMI@[179; 180) ";"
SEMICOLON@[179; 180) ";"
WHITESPACE@[180; 185) "\n "
LET_STMT@[185; 235)
LET_KW@[185; 188) "let"
@@ -286,24 +286,24 @@ SOURCE_FILE@[0; 240)
EXPR_STMT@[235; 237)
ERROR@[235; 236)
R_ANGLE@[235; 236) ">"
SEMI@[236; 237) ";"
SEMICOLON@[236; 237) ";"
WHITESPACE@[237; 238) "\n"
R_CURLY@[238; 239) "}"
WHITESPACE@[239; 240) "\n"
error [88; 88): expected COMMA
error [88; 88): expected R_ANGLE
error [121; 121): expected SEMI
error [121; 121): expected SEMICOLON
error [121; 121): expected expression
error [140; 140): expected type
error [141; 141): expected R_PAREN
error [141; 141): expected COMMA
error [141; 141): expected R_ANGLE
error [141; 141): expected SEMI
error [146; 146): expected SEMI
error [141; 141): expected SEMICOLON
error [146; 146): expected SEMICOLON
error [146; 146): expected expression
error [147; 147): expected SEMI
error [147; 147): expected SEMICOLON
error [148; 148): expected expression
error [149; 149): expected SEMI
error [149; 149): expected SEMICOLON
error [154; 154): expected pattern
error [155; 155): expected IN_KW
error [155; 155): expected expression
@@ -314,8 +314,8 @@ error [179; 179): expected expression
error [180; 180): expected COMMA
error [180; 180): expected expression
error [180; 180): expected R_PAREN
error [180; 180): expected SEMI
error [180; 180): expected SEMICOLON
error [215; 215): expected COMMA
error [215; 215): expected R_ANGLE
error [235; 235): expected SEMI
error [235; 235): expected SEMICOLON
error [235; 235): expected expression
@@ -78,7 +78,7 @@ SOURCE_FILE@[0; 575)
WHITESPACE@[183; 184) " "
LITERAL@[184; 185)
INT_NUMBER@[184; 185) "1"
SEMI@[185; 186) ";"
SEMICOLON@[185; 186) ";"
WHITESPACE@[186; 191) "\n "
ENUM_DEF@[191; 223)
ENUM_KW@[191; 195) "enum"
@@ -185,7 +185,7 @@ SOURCE_FILE@[0; 575)
WHITESPACE@[507; 508) " "
ERROR@[508; 509)
UNDERSCORE@[508; 509) "_"
SEMI@[509; 510) ";"
SEMICOLON@[509; 510) ";"
WHITESPACE@[510; 511) " "
COMMENT@[511; 572) "//~ ERROR: expected e ..."
WHITESPACE@[572; 573) "\n"
@@ -27,7 +27,7 @@ SOURCE_FILE@[0; 350)
WHITESPACE@[30; 39) "\n "
ATTR@[39; 83)
POUND@[39; 40) "#"
EXCL@[40; 41) "!"
BANG@[40; 41) "!"
L_BRACK@[41; 42) "["
PATH@[42; 45)
PATH_SEGMENT@[42; 45)
@@ -42,7 +42,7 @@ SOURCE_FILE@[0; 350)
COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
WHITESPACE@[122; 127) "\n "
R_CURLY@[127; 128) "}"
SEMI@[128; 129) ";"
SEMICOLON@[128; 129) ";"
WHITESPACE@[129; 134) "\n "
EXPR_STMT@[134; 257)
IF_EXPR@[134; 257)
@@ -58,7 +58,7 @@ SOURCE_FILE@[0; 350)
WHITESPACE@[143; 152) "\n "
ATTR@[152; 171)
POUND@[152; 153) "#"
EXCL@[153; 154) "!"
BANG@[153; 154) "!"
L_BRACK@[154; 155) "["
PATH@[155; 158)
PATH_SEGMENT@[155; 158)
@@ -72,7 +72,7 @@ SOURCE_FILE@[0; 350)
WHITESPACE@[171; 180) "\n "
ATTR@[180; 212)
POUND@[180; 181) "#"
EXCL@[181; 182) "!"
BANG@[181; 182) "!"
L_BRACK@[182; 183) "["
PATH@[183; 186)
PATH_SEGMENT@[183; 186)
@@ -101,7 +101,7 @@ SOURCE_FILE@[0; 350)
WHITESPACE@[274; 283) "\n "
ATTR@[283; 302)
POUND@[283; 284) "#"
EXCL@[284; 285) "!"
BANG@[284; 285) "!"
L_BRACK@[285; 286) "["
PATH@[286; 289)
PATH_SEGMENT@[286; 289)
@@ -38,7 +38,7 @@ SOURCE_FILE@[0; 293)
ATTR@[51; 52)
POUND@[51; 52) "#"
ERROR@[52; 53)
EXCL@[52; 53) "!"
BANG@[52; 53) "!"
ARRAY_EXPR@[53; 78)
L_BRACK@[53; 54) "["
CALL_EXPR@[54; 77)
@@ -104,7 +104,7 @@ SOURCE_FILE@[0; 293)
ATTR@[160; 161)
POUND@[160; 161) "#"
ERROR@[161; 162)
EXCL@[161; 162) "!"
BANG@[161; 162) "!"
ARRAY_EXPR@[162; 179)
L_BRACK@[162; 163) "["
CALL_EXPR@[163; 178)
@@ -149,7 +149,7 @@ SOURCE_FILE@[0; 293)
ATTR@[231; 232)
POUND@[231; 232) "#"
ERROR@[232; 233)
EXCL@[232; 233) "!"
BANG@[232; 233) "!"
ARRAY_EXPR@[233; 250)
L_BRACK@[233; 234) "["
CALL_EXPR@[234; 249)
@@ -34,7 +34,7 @@ SOURCE_FILE@[0; 91)
TUPLE_EXPR@[32; 34)
L_PAREN@[32; 33) "("
R_PAREN@[33; 34) ")"
SEMI@[34; 35) ";"
SEMICOLON@[34; 35) ";"
WHITESPACE@[35; 40) "\n "
LET_STMT@[40; 51)
LET_KW@[40; 43) "let"
@@ -58,7 +58,7 @@ SOURCE_FILE@[0; 91)
TUPLE_EXPR@[56; 58)
L_PAREN@[56; 57) "("
R_PAREN@[57; 58) ")"
SEMI@[58; 59) ";"
SEMICOLON@[58; 59) ";"
WHITESPACE@[59; 64) "\n "
LET_STMT@[64; 79)
LET_KW@[64; 67) "let"
@@ -84,13 +84,13 @@ SOURCE_FILE@[0; 91)
TUPLE_EXPR@[84; 86)
L_PAREN@[84; 85) "("
R_PAREN@[85; 86) ")"
SEMI@[86; 87) ";"
SEMICOLON@[86; 87) ";"
WHITESPACE@[87; 88) "\n"
R_CURLY@[88; 89) "}"
WHITESPACE@[89; 91) "\n\n"
error [24; 24): expected a name
error [27; 27): expected SEMI
error [27; 27): expected SEMICOLON
error [48; 48): expected a name
error [51; 51): expected SEMI
error [51; 51): expected SEMICOLON
error [76; 76): expected a name
error [79; 79): expected SEMI
error [79; 79): expected SEMICOLON
@@ -8,11 +8,11 @@ SOURCE_FILE@[0; 48)
PATH_SEGMENT@[4; 7)
NAME_REF@[4; 7)
IDENT@[4; 7) "foo"
COLONCOLON@[7; 9) "::"
COLON2@[7; 9) "::"
PATH_SEGMENT@[9; 12)
NAME_REF@[9; 12)
IDENT@[9; 12) "bar"
SEMI@[12; 13) ";"
SEMICOLON@[12; 13) ";"
WHITESPACE@[13; 14) "\n"
USE_ITEM@[14; 17)
USE_KW@[14; 17) "use"
@@ -25,11 +25,11 @@ SOURCE_FILE@[0; 48)
PATH@[22; 27)
PATH_SEGMENT@[22; 27)
CRATE_KW@[22; 27) "crate"
COLONCOLON@[27; 29) "::"
COLON2@[27; 29) "::"
PATH_SEGMENT@[29; 32)
NAME_REF@[29; 32)
IDENT@[29; 32) "baz"
SEMI@[32; 33) ";"
SEMICOLON@[32; 33) ";"
WHITESPACE@[33; 34) "\n"
USE_ITEM@[34; 37)
USE_KW@[34; 37) "use"
@@ -49,6 +49,6 @@ SOURCE_FILE@[0; 48)
R_CURLY@[46; 47) "}"
WHITESPACE@[47; 48) "\n"
error [17; 17): expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error [17; 17): expected SEMI
error [17; 17): expected SEMICOLON
error [37; 37): expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error [37; 37): expected SEMI
error [37; 37): expected SEMICOLON
@@ -7,7 +7,7 @@ SOURCE_FILE@[0; 37)
PATH_SEGMENT@[4; 7)
NAME_REF@[4; 7)
IDENT@[4; 7) "std"
COLONCOLON@[7; 9) "::"
COLON2@[7; 9) "::"
USE_TREE_LIST@[9; 36)
L_CURLY@[9; 10) "{"
USE_TREE@[10; 22)
@@ -16,12 +16,12 @@ SOURCE_FILE@[0; 37)
PATH_SEGMENT@[10; 15)
NAME_REF@[10; 15)
IDENT@[10; 15) "error"
COLONCOLON@[15; 17) "::"
COLON2@[15; 17) "::"
PATH_SEGMENT@[17; 22)
NAME_REF@[17; 22)
IDENT@[17; 22) "Error"
ERROR@[22; 23)
SEMI@[22; 23) ";"
SEMICOLON@[22; 23) ";"
WHITESPACE@[23; 24) "\n"
ERROR@[24; 27)
USE_KW@[24; 27) "use"
@@ -32,12 +32,12 @@ SOURCE_FILE@[0; 37)
PATH_SEGMENT@[28; 31)
NAME_REF@[28; 31)
IDENT@[28; 31) "std"
COLONCOLON@[31; 33) "::"
COLON2@[31; 33) "::"
PATH_SEGMENT@[33; 35)
NAME_REF@[33; 35)
IDENT@[33; 35) "io"
ERROR@[35; 36)
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 37) "\n"
error [22; 22): expected COMMA
error [22; 22): expected one of `*`, `::`, `{`, `self`, `super` or an identifier
@@ -48,4 +48,4 @@ error [35; 35): expected COMMA
error [35; 35): expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error [36; 36): expected COMMA
error [36; 36): expected R_CURLY
error [36; 36): expected SEMI
error [36; 36): expected SEMICOLON
@@ -65,7 +65,7 @@ SOURCE_FILE@[0; 118)
TUPLE_TYPE@[78; 80)
L_PAREN@[78; 79) "("
R_PAREN@[79; 80) ")"
SEMI@[80; 81) ";"
SEMICOLON@[80; 81) ";"
WHITESPACE@[81; 86) "\n "
CONST_DEF@[86; 115)
VISIBILITY@[86; 96)
@@ -90,7 +90,7 @@ SOURCE_FILE@[0; 118)
WHITESPACE@[111; 112) " "
LITERAL@[112; 114)
INT_NUMBER@[112; 114) "92"
SEMI@[114; 115) ";"
SEMICOLON@[114; 115) ";"
WHITESPACE@[115; 116) "\n"
R_CURLY@[116; 117) "}"
WHITESPACE@[117; 118) "\n"
@@ -16,13 +16,13 @@ SOURCE_FILE@[0; 33)
RANGE_EXPR@[16; 20)
LITERAL@[16; 17)
INT_NUMBER@[16; 17) "0"
DOTDOTEQ@[17; 20) "..="
SEMI@[20; 21) ";"
DOT2EQ@[17; 20) "..="
SEMICOLON@[20; 21) ";"
WHITESPACE@[21; 26) "\n "
EXPR_STMT@[26; 30)
RANGE_EXPR@[26; 29)
DOTDOTEQ@[26; 29) "..="
SEMI@[29; 30) ";"
DOT2EQ@[26; 29) "..="
SEMICOLON@[29; 30) ";"
WHITESPACE@[30; 31) "\n"
R_CURLY@[31; 32) "}"
WHITESPACE@[32; 33) "\n"
@@ -64,7 +64,7 @@ SOURCE_FILE@[0; 83)
NAME_REF@[67; 70)
IDENT@[67; 70) "max"
TYPE_ARG_LIST@[70; 77)
COLONCOLON@[70; 72) "::"
COLON2@[70; 72) "::"
L_ANGLE@[72; 73) "<"
TYPE_ARG@[73; 76)
PATH_TYPE@[73; 76)
@@ -76,7 +76,7 @@ SOURCE_FILE@[0; 83)
ARG_LIST@[77; 79)
L_PAREN@[77; 78) "("
R_PAREN@[78; 79) ")"
SEMI@[79; 80) ";"
SEMICOLON@[79; 80) ";"
WHITESPACE@[80; 81) "\n"
R_CURLY@[81; 82) "}"
WHITESPACE@[82; 83) "\n"
@@ -18,10 +18,10 @@ SOURCE_FILE@[0; 18)
ERROR@[15; 16)
R_BRACK@[15; 16) "]"
ERROR@[16; 17)
SEMI@[16; 17) ";"
SEMICOLON@[16; 17) ";"
WHITESPACE@[17; 18) "\n"
error [12; 12): expected `;` or `]`
error [12; 12): expected SEMI
error [12; 12): expected SEMICOLON
error [13; 13): expected an item
error [15; 15): expected an item
error [16; 16): expected an item
@@ -24,6 +24,6 @@ SOURCE_FILE@[0; 30)
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n"
error [22; 22): expected a loop
error [22; 22): expected SEMI
error [22; 22): expected SEMICOLON
error [27; 27): expected type
error [27; 27): expected `{`
@@ -12,6 +12,6 @@ SOURCE_FILE@[0; 14)
TUPLE_TYPE@[10; 12)
L_PAREN@[10; 11) "("
R_PAREN@[11; 12) ")"
SEMI@[12; 13) ";"
SEMICOLON@[12; 13) ";"
WHITESPACE@[13; 14) "\n"
error [10; 10): expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
@@ -14,10 +14,10 @@ SOURCE_FILE@[0; 20)
ERROR@[17; 18)
R_PAREN@[17; 18) ")"
ERROR@[18; 19)
SEMI@[18; 19) ";"
SEMICOLON@[18; 19) ";"
WHITESPACE@[19; 20) "\n"
error [15; 15): expected `fn`
error [15; 15): expected SEMI
error [15; 15): expected SEMICOLON
error [16; 16): expected an item
error [17; 17): expected an item
error [18; 18): expected an item
@@ -29,4 +29,4 @@ SOURCE_FILE@[0; 30)
WHITESPACE@[27; 28) " "
R_CURLY@[28; 29) "}"
WHITESPACE@[29; 30) "\n"
error [27; 27): expected SEMI
error [27; 27): expected SEMICOLON
@@ -19,7 +19,7 @@ SOURCE_FILE@[0; 21)
EXPR_STMT@[15; 18)
LITERAL@[15; 17)
INT_NUMBER@[15; 17) "92"
SEMI@[17; 18) ";"
SEMICOLON@[17; 18) ";"
WHITESPACE@[18; 19) " "
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n"
@@ -30,7 +30,7 @@ SOURCE_FILE@[0; 48)
WHITESPACE@[22; 23) " "
LITERAL@[23; 24)
INT_NUMBER@[23; 24) "2"
SEMI@[24; 25) ";"
SEMICOLON@[24; 25) ";"
WHITESPACE@[25; 29) "\n "
EXPR_STMT@[29; 45)
ATTR@[29; 33)
@@ -53,7 +53,7 @@ SOURCE_FILE@[0; 48)
BLOCK@[42; 44)
L_CURLY@[42; 43) "{"
R_CURLY@[43; 44) "}"
SEMI@[44; 45) ";"
SEMICOLON@[44; 45) ";"
WHITESPACE@[45; 46) "\n"
R_CURLY@[46; 47) "}"
WHITESPACE@[47; 48) "\n"
@@ -21,7 +21,7 @@ SOURCE_FILE@[0; 47)
IDENT@[15; 16) "x"
DOT@[16; 17) "."
FLOAT_NUMBER@[17; 19) "0."
SEMI@[19; 20) ";"
SEMICOLON@[19; 20) ";"
WHITESPACE@[20; 25) "\n "
EXPR_STMT@[25; 32)
FIELD_EXPR@[25; 31)
@@ -33,7 +33,7 @@ SOURCE_FILE@[0; 47)
DOT@[26; 27) "."
NAME_REF@[27; 31)
INT_NUMBER@[27; 31) "1i32"
SEMI@[31; 32) ";"
SEMICOLON@[31; 32) ";"
WHITESPACE@[32; 37) "\n "
EXPR_STMT@[37; 44)
FIELD_EXPR@[37; 43)
@@ -45,7 +45,7 @@ SOURCE_FILE@[0; 47)
DOT@[38; 39) "."
NAME_REF@[39; 43)
INT_NUMBER@[39; 43) "0x01"
SEMI@[43; 44) ";"
SEMICOLON@[43; 44) ";"
WHITESPACE@[44; 45) "\n"
R_CURLY@[45; 46) "}"
WHITESPACE@[46; 47) "\n"
@@ -16,6 +16,6 @@ SOURCE_FILE@[0; 19)
WHITESPACE@[15; 16) " "
LITERAL@[16; 17)
INT_NUMBER@[16; 17) "5"
SEMI@[17; 18) ";"
SEMICOLON@[17; 18) ";"
WHITESPACE@[18; 19) "\n"
error [7; 7): expected a name
@@ -27,7 +27,7 @@ SOURCE_FILE@[0; 62)
PATH_SEGMENT@[31; 34)
NAME_REF@[31; 34)
IDENT@[31; 34) "Bar"
SEMI@[34; 35) ";"
SEMICOLON@[34; 35) ";"
WHITESPACE@[35; 40) "\n "
MACRO_CALL@[40; 47)
PATH@[40; 47)
@@ -51,9 +51,9 @@ SOURCE_FILE@[0; 62)
WHITESPACE@[59; 60) "\n"
R_CURLY@[60; 61) "}"
WHITESPACE@[61; 62) "\n"
error [21; 21): expected EXCL
error [21; 21): expected BANG
error [21; 21): expected `{`, `[`, `(`
error [21; 21): expected SEMI
error [47; 47): expected EXCL
error [21; 21): expected SEMICOLON
error [47; 47): expected BANG
error [47; 47): expected `{`, `[`, `(`
error [47; 47): expected SEMI
error [47; 47): expected SEMICOLON
@@ -25,7 +25,7 @@ SOURCE_FILE@[0; 83)
PATH_SEGMENT@[21; 26)
NAME_REF@[21; 26)
IDENT@[21; 26) "Clone"
SEMI@[26; 27) ";"
SEMICOLON@[26; 27) ";"
WHITESPACE@[27; 32) "\n "
CONST_DEF@[32; 45)
CONST_KW@[32; 37) "const"
@@ -39,7 +39,7 @@ SOURCE_FILE@[0; 83)
PATH_SEGMENT@[41; 44)
NAME_REF@[41; 44)
IDENT@[41; 44) "i32"
SEMI@[44; 45) ";"
SEMICOLON@[44; 45) ";"
WHITESPACE@[45; 50) "\n "
FN_DEF@[50; 61)
FN_KW@[50; 52) "fn"
@@ -66,7 +66,7 @@ SOURCE_FILE@[0; 83)
AMP@[73; 74) "&"
SELF_KW@[74; 78) "self"
R_PAREN@[78; 79) ")"
SEMI@[79; 80) ";"
SEMICOLON@[79; 80) ";"
WHITESPACE@[80; 81) "\n"
R_CURLY@[81; 82) "}"
WHITESPACE@[82; 83) "\n"
@@ -12,15 +12,15 @@ SOURCE_FILE@[0; 250)
PATH@[5; 10)
PATH_SEGMENT@[5; 10)
CRATE_KW@[5; 10) "crate"
COLONCOLON@[10; 12) "::"
COLON2@[10; 12) "::"
PATH_SEGMENT@[12; 16)
NAME_REF@[12; 16)
IDENT@[12; 16) "path"
COLONCOLON@[16; 18) "::"
COLON2@[16; 18) "::"
PATH_SEGMENT@[18; 22)
NAME_REF@[18; 22)
IDENT@[18; 22) "from"
COLONCOLON@[22; 24) "::"
COLON2@[22; 24) "::"
PATH_SEGMENT@[24; 28)
NAME_REF@[24; 28)
IDENT@[24; 28) "root"
@@ -34,20 +34,20 @@ SOURCE_FILE@[0; 250)
PATH_SEGMENT@[30; 32)
NAME_REF@[30; 32)
IDENT@[30; 32) "or"
COLONCOLON@[32; 34) "::"
COLON2@[32; 34) "::"
PATH_SEGMENT@[34; 38)
NAME_REF@[34; 38)
IDENT@[34; 38) "path"
COLONCOLON@[38; 40) "::"
COLON2@[38; 40) "::"
PATH_SEGMENT@[40; 44)
NAME_REF@[40; 44)
IDENT@[40; 44) "from"
COLONCOLON@[44; 46) "::"
COLON2@[44; 46) "::"
PATH_SEGMENT@[46; 56)
NAME_REF@[46; 56)
IDENT@[46; 56) "crate_name"
R_CURLY@[56; 57) "}"
SEMI@[57; 58) ";"
SEMICOLON@[57; 58) ";"
WHITESPACE@[58; 59) " "
COMMENT@[59; 97) "// Rust 2018 (with a ..."
WHITESPACE@[97; 98) "\n"
@@ -64,16 +64,16 @@ SOURCE_FILE@[0; 250)
PATH_SEGMENT@[103; 107)
NAME_REF@[103; 107)
IDENT@[103; 107) "path"
COLONCOLON@[107; 109) "::"
COLON2@[107; 109) "::"
PATH_SEGMENT@[109; 113)
NAME_REF@[109; 113)
IDENT@[109; 113) "from"
COLONCOLON@[113; 115) "::"
COLON2@[113; 115) "::"
PATH_SEGMENT@[115; 119)
NAME_REF@[115; 119)
IDENT@[115; 119) "root"
R_CURLY@[119; 120) "}"
SEMI@[120; 121) ";"
SEMICOLON@[120; 121) ";"
WHITESPACE@[121; 122) " "
COMMENT@[122; 134) "// Rust 2015"
WHITESPACE@[134; 135) "\n"
@@ -81,7 +81,7 @@ SOURCE_FILE@[0; 250)
USE_KW@[135; 138) "use"
WHITESPACE@[138; 139) " "
USE_TREE@[139; 165)
COLONCOLON@[139; 141) "::"
COLON2@[139; 141) "::"
USE_TREE_LIST@[141; 165)
L_CURLY@[141; 142) "{"
USE_TREE@[142; 164)
@@ -91,16 +91,16 @@ SOURCE_FILE@[0; 250)
PATH_SEGMENT@[142; 146)
NAME_REF@[142; 146)
IDENT@[142; 146) "some"
COLONCOLON@[146; 148) "::"
COLON2@[146; 148) "::"
PATH_SEGMENT@[148; 158)
NAME_REF@[148; 158)
IDENT@[148; 158) "arbritrary"
COLONCOLON@[158; 160) "::"
COLON2@[158; 160) "::"
PATH_SEGMENT@[160; 164)
NAME_REF@[160; 164)
IDENT@[160; 164) "path"
R_CURLY@[164; 165) "}"
SEMI@[165; 166) ";"
SEMICOLON@[165; 166) ";"
WHITESPACE@[166; 167) " "
COMMENT@[167; 179) "// Rust 2015"
WHITESPACE@[179; 180) "\n"
@@ -108,7 +108,7 @@ SOURCE_FILE@[0; 250)
USE_KW@[180; 183) "use"
WHITESPACE@[183; 184) " "
USE_TREE@[184; 205)
COLONCOLON@[184; 186) "::"
COLON2@[184; 186) "::"
USE_TREE_LIST@[186; 205)
L_CURLY@[186; 187) "{"
USE_TREE@[187; 204)
@@ -122,14 +122,14 @@ SOURCE_FILE@[0; 250)
PATH@[189; 194)
PATH_SEGMENT@[189; 194)
CRATE_KW@[189; 194) "crate"
COLONCOLON@[194; 196) "::"
COLON2@[194; 196) "::"
PATH_SEGMENT@[196; 202)
NAME_REF@[196; 202)
IDENT@[196; 202) "export"
R_CURLY@[202; 203) "}"
R_CURLY@[203; 204) "}"
R_CURLY@[204; 205) "}"
SEMI@[205; 206) ";"
SEMICOLON@[205; 206) ";"
WHITESPACE@[206; 207) " "
COMMENT@[207; 249) "// Nonsensical but pe ..."
WHITESPACE@[249; 250) "\n"
@@ -56,5 +56,5 @@ SOURCE_FILE@[0; 39)
R_PAREN@[34; 35) ")"
R_PAREN@[35; 36) ")"
R_ANGLE@[36; 37) ">"
SEMI@[37; 38) ";"
SEMICOLON@[37; 38) ";"
WHITESPACE@[38; 39) "\n"
@@ -36,5 +36,5 @@ SOURCE_FILE@[0; 35)
IDENT@[27; 31) "Copy"
R_PAREN@[31; 32) ")"
R_ANGLE@[32; 33) ">"
SEMI@[33; 34) ";"
SEMICOLON@[33; 34) ";"
WHITESPACE@[34; 35) "\n"
@@ -21,7 +21,7 @@ SOURCE_FILE@[0; 103)
PATH_SEGMENT@[19; 22)
NAME_REF@[19; 22)
IDENT@[19; 22) "foo"
COLONCOLON@[22; 24) "::"
COLON2@[22; 24) "::"
PATH_SEGMENT@[24; 27)
NAME_REF@[24; 27)
IDENT@[24; 27) "Bar"
@@ -31,7 +31,7 @@ SOURCE_FILE@[0; 103)
TUPLE_EXPR@[30; 32)
L_PAREN@[30; 31) "("
R_PAREN@[31; 32) ")"
SEMI@[32; 33) ";"
SEMICOLON@[32; 33) ";"
WHITESPACE@[33; 38) "\n "
LET_STMT@[38; 53)
LET_KW@[38; 41) "let"
@@ -39,7 +39,7 @@ SOURCE_FILE@[0; 103)
PATH_PAT@[42; 47)
PATH@[42; 47)
PATH_SEGMENT@[42; 47)
COLONCOLON@[42; 44) "::"
COLON2@[42; 44) "::"
NAME_REF@[44; 47)
IDENT@[44; 47) "Bar"
WHITESPACE@[47; 48) " "
@@ -48,7 +48,7 @@ SOURCE_FILE@[0; 103)
TUPLE_EXPR@[50; 52)
L_PAREN@[50; 51) "("
R_PAREN@[51; 52) ")"
SEMI@[52; 53) ";"
SEMICOLON@[52; 53) ";"
WHITESPACE@[53; 58) "\n "
LET_STMT@[58; 78)
LET_KW@[58; 61) "let"
@@ -62,7 +62,7 @@ SOURCE_FILE@[0; 103)
RECORD_FIELD_PAT_LIST@[66; 72)
L_CURLY@[66; 67) "{"
WHITESPACE@[67; 68) " "
DOTDOT@[68; 70) ".."
DOT2@[68; 70) ".."
WHITESPACE@[70; 71) " "
R_CURLY@[71; 72) "}"
WHITESPACE@[72; 73) " "
@@ -71,7 +71,7 @@ SOURCE_FILE@[0; 103)
TUPLE_EXPR@[75; 77)
L_PAREN@[75; 76) "("
R_PAREN@[76; 77) ")"
SEMI@[77; 78) ";"
SEMICOLON@[77; 78) ";"
WHITESPACE@[78; 83) "\n "
LET_STMT@[83; 100)
LET_KW@[83; 86) "let"
@@ -83,7 +83,7 @@ SOURCE_FILE@[0; 103)
IDENT@[87; 90) "Bar"
L_PAREN@[90; 91) "("
DOT_DOT_PAT@[91; 93)
DOTDOT@[91; 93) ".."
DOT2@[91; 93) ".."
R_PAREN@[93; 94) ")"
WHITESPACE@[94; 95) " "
EQ@[95; 96) "="
@@ -91,7 +91,7 @@ SOURCE_FILE@[0; 103)
TUPLE_EXPR@[97; 99)
L_PAREN@[97; 98) "("
R_PAREN@[98; 99) ")"
SEMI@[99; 100) ";"
SEMICOLON@[99; 100) ";"
WHITESPACE@[100; 101) "\n"
R_CURLY@[101; 102) "}"
WHITESPACE@[102; 103) "\n"
@@ -20,7 +20,7 @@ SOURCE_FILE@[0; 26)
BLOCK@[20; 22)
L_CURLY@[20; 21) "{"
R_CURLY@[21; 22) "}"
SEMI@[22; 23) ";"
SEMICOLON@[22; 23) ";"
WHITESPACE@[23; 24) "\n"
R_CURLY@[24; 25) "}"
WHITESPACE@[25; 26) "\n"
@@ -22,7 +22,7 @@ SOURCE_FILE@[0; 48)
DOT@[16; 17) "."
NAME_REF@[17; 20)
IDENT@[17; 20) "foo"
SEMI@[20; 21) ";"
SEMICOLON@[20; 21) ";"
WHITESPACE@[21; 26) "\n "
EXPR_STMT@[26; 34)
FIELD_EXPR@[26; 33)
@@ -38,7 +38,7 @@ SOURCE_FILE@[0; 48)
DOT@[29; 30) "."
NAME_REF@[30; 33)
IDENT@[30; 33) "bar"
SEMI@[33; 34) ";"
SEMICOLON@[33; 34) ";"
WHITESPACE@[34; 39) "\n "
EXPR_STMT@[39; 45)
CALL_EXPR@[39; 44)
@@ -54,7 +54,7 @@ SOURCE_FILE@[0; 48)
ARG_LIST@[42; 44)
L_PAREN@[42; 43) "("
R_PAREN@[43; 44) ")"
SEMI@[44; 45) ";"
SEMICOLON@[44; 45) ";"
WHITESPACE@[45; 46) "\n"
R_CURLY@[46; 47) "}"
WHITESPACE@[47; 48) "\n"
@@ -29,5 +29,5 @@ SOURCE_FILE@[0; 31)
TUPLE_TYPE@[27; 29)
L_PAREN@[27; 28) "("
R_PAREN@[28; 29) ")"
SEMI@[29; 30) ";"
SEMICOLON@[29; 30) ";"
WHITESPACE@[30; 31) "\n"
@@ -14,7 +14,7 @@ SOURCE_FILE@[0; 36)
TUPLE_TYPE@[14; 16)
L_PAREN@[14; 15) "("
R_PAREN@[15; 16) ")"
SEMI@[16; 17) ";"
SEMICOLON@[16; 17) ";"
WHITESPACE@[17; 18) "\n"
TYPE_ALIAS_DEF@[18; 35)
TYPE_KW@[18; 22) "type"
@@ -31,5 +31,5 @@ SOURCE_FILE@[0; 36)
TUPLE_TYPE@[32; 34)
L_PAREN@[32; 33) "("
R_PAREN@[33; 34) ")"
SEMI@[34; 35) ";"
SEMICOLON@[34; 35) ";"
WHITESPACE@[35; 36) "\n"
@@ -8,6 +8,6 @@ SOURCE_FILE@[0; 16)
EQ@[11; 12) "="
WHITESPACE@[12; 13) " "
NEVER_TYPE@[13; 14)
EXCL@[13; 14) "!"
SEMI@[14; 15) ";"
BANG@[13; 14) "!"
SEMICOLON@[14; 15) ";"
WHITESPACE@[15; 16) "\n"
@@ -22,14 +22,14 @@ SOURCE_FILE@[0; 69)
EXPR_STMT@[30; 39)
CONTINUE_EXPR@[30; 38)
CONTINUE_KW@[30; 38) "continue"
SEMI@[38; 39) ";"
SEMICOLON@[38; 39) ";"
WHITESPACE@[39; 48) "\n "
EXPR_STMT@[48; 60)
CONTINUE_EXPR@[48; 59)
CONTINUE_KW@[48; 56) "continue"
WHITESPACE@[56; 57) " "
LIFETIME@[57; 59) "\'l"
SEMI@[59; 60) ";"
SEMICOLON@[59; 60) ";"
WHITESPACE@[60; 65) "\n "
R_CURLY@[65; 66) "}"
WHITESPACE@[66; 67) "\n"
@@ -12,10 +12,10 @@ SOURCE_FILE@[0; 19)
TUPLE_TYPE@[10; 12)
L_PAREN@[10; 11) "("
R_PAREN@[11; 12) ")"
SEMI@[12; 13) ";"
SEMICOLON@[12; 13) ";"
WHITESPACE@[13; 14) " "
LITERAL@[14; 16)
INT_NUMBER@[14; 16) "92"
R_BRACK@[16; 17) "]"
SEMI@[17; 18) ";"
SEMICOLON@[17; 18) ";"
WHITESPACE@[18; 19) "\n"
@@ -21,16 +21,16 @@ SOURCE_FILE@[0; 44)
AMP@[17; 18) "&"
LITERAL@[18; 19)
INT_NUMBER@[18; 19) "1"
SEMI@[19; 20) ";"
SEMICOLON@[19; 20) ";"
WHITESPACE@[20; 25) "\n "
EXPR_STMT@[25; 32)
PREFIX_EXPR@[25; 31)
EXCL@[25; 26) "!"
BANG@[25; 26) "!"
PREFIX_EXPR@[26; 31)
EXCL@[26; 27) "!"
BANG@[26; 27) "!"
LITERAL@[27; 31)
TRUE_KW@[27; 31) "true"
SEMI@[31; 32) ";"
SEMICOLON@[31; 32) ";"
WHITESPACE@[32; 37) "\n "
EXPR_STMT@[37; 41)
PREFIX_EXPR@[37; 40)
@@ -39,7 +39,7 @@ SOURCE_FILE@[0; 44)
MINUS@[38; 39) "-"
LITERAL@[39; 40)
INT_NUMBER@[39; 40) "1"
SEMI@[40; 41) ";"
SEMICOLON@[40; 41) ";"
WHITESPACE@[41; 42) "\n"
R_CURLY@[42; 43) "}"
WHITESPACE@[43; 44) "\n"
@@ -4,15 +4,15 @@ SOURCE_FILE@[0; 60)
WHITESPACE@[3; 4) " "
USE_TREE@[4; 5)
STAR@[4; 5) "*"
SEMI@[5; 6) ";"
SEMICOLON@[5; 6) ";"
WHITESPACE@[6; 7) "\n"
USE_ITEM@[7; 15)
USE_KW@[7; 10) "use"
WHITESPACE@[10; 11) " "
USE_TREE@[11; 14)
COLONCOLON@[11; 13) "::"
COLON2@[11; 13) "::"
STAR@[13; 14) "*"
SEMI@[14; 15) ";"
SEMICOLON@[14; 15) ";"
WHITESPACE@[15; 16) "\n"
USE_ITEM@[16; 36)
USE_KW@[16; 19) "use"
@@ -23,17 +23,17 @@ SOURCE_FILE@[0; 60)
PATH_SEGMENT@[20; 24)
NAME_REF@[20; 24)
IDENT@[20; 24) "some"
COLONCOLON@[24; 26) "::"
COLON2@[24; 26) "::"
PATH_SEGMENT@[26; 30)
NAME_REF@[26; 30)
IDENT@[26; 30) "path"
COLONCOLON@[30; 32) "::"
COLON2@[30; 32) "::"
USE_TREE_LIST@[32; 35)
L_CURLY@[32; 33) "{"
USE_TREE@[33; 34)
STAR@[33; 34) "*"
R_CURLY@[34; 35) "}"
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 37) "\n"
USE_ITEM@[37; 59)
USE_KW@[37; 40) "use"
@@ -44,16 +44,16 @@ SOURCE_FILE@[0; 60)
PATH_SEGMENT@[41; 45)
NAME_REF@[41; 45)
IDENT@[41; 45) "some"
COLONCOLON@[45; 47) "::"
COLON2@[45; 47) "::"
PATH_SEGMENT@[47; 51)
NAME_REF@[47; 51)
IDENT@[47; 51) "path"
COLONCOLON@[51; 53) "::"
COLON2@[51; 53) "::"
USE_TREE_LIST@[53; 58)
L_CURLY@[53; 54) "{"
USE_TREE@[54; 57)
COLONCOLON@[54; 56) "::"
COLON2@[54; 56) "::"
STAR@[56; 57) "*"
R_CURLY@[57; 58) "}"
SEMI@[58; 59) ";"
SEMICOLON@[58; 59) ";"
WHITESPACE@[59; 60) "\n"
@@ -24,7 +24,7 @@ SOURCE_FILE@[0; 89)
PATH_SEGMENT@[22; 25)
NAME_REF@[22; 25)
IDENT@[22; 25) "i32"
SEMI@[25; 26) ";"
SEMICOLON@[25; 26) ";"
WHITESPACE@[26; 31) "\n "
CONST_DEF@[31; 49)
CONST_KW@[31; 36) "const"
@@ -43,7 +43,7 @@ SOURCE_FILE@[0; 89)
WHITESPACE@[45; 46) " "
LITERAL@[46; 48)
INT_NUMBER@[46; 48) "92"
SEMI@[48; 49) ";"
SEMICOLON@[48; 49) ";"
WHITESPACE@[49; 54) "\n "
FN_DEF@[54; 65)
FN_KW@[54; 56) "fn"
@@ -10,7 +10,7 @@ SOURCE_FILE@[0; 81)
WHITESPACE@[17; 18) " "
NAME@[18; 19)
IDENT@[18; 19) "S"
SEMI@[19; 20) ";"
SEMICOLON@[19; 20) ";"
WHITESPACE@[20; 21) "\n"
STRUCT_DEF@[21; 40)
VISIBILITY@[21; 30)
@@ -23,7 +23,7 @@ SOURCE_FILE@[0; 81)
WHITESPACE@[37; 38) " "
NAME@[38; 39)
IDENT@[38; 39) "S"
SEMI@[39; 40) ";"
SEMICOLON@[39; 40) ";"
WHITESPACE@[40; 41) "\n"
STRUCT_DEF@[41; 60)
VISIBILITY@[41; 50)
@@ -36,7 +36,7 @@ SOURCE_FILE@[0; 81)
WHITESPACE@[57; 58) " "
NAME@[58; 59)
IDENT@[58; 59) "S"
SEMI@[59; 60) ";"
SEMICOLON@[59; 60) ";"
WHITESPACE@[60; 61) "\n"
STRUCT_DEF@[61; 80)
VISIBILITY@[61; 70)
@@ -49,5 +49,5 @@ SOURCE_FILE@[0; 81)
WHITESPACE@[77; 78) " "
NAME@[78; 79)
IDENT@[78; 79) "S"
SEMI@[79; 80) ";"
SEMICOLON@[79; 80) ";"
WHITESPACE@[80; 81) "\n"
@@ -9,5 +9,5 @@ SOURCE_FILE@[0; 22)
WHITESPACE@[18; 19) " "
PLACEHOLDER_TYPE@[19; 20)
UNDERSCORE@[19; 20) "_"
SEMI@[20; 21) ";"
SEMICOLON@[20; 21) ";"
WHITESPACE@[21; 22) "\n"
@@ -28,7 +28,7 @@ SOURCE_FILE@[0; 39)
COMMA@[25; 26) ","
WHITESPACE@[26; 27) " "
DOT_DOT_PAT@[27; 29)
DOTDOT@[27; 29) ".."
DOT2@[27; 29) ".."
R_BRACK@[29; 30) "]"
WHITESPACE@[30; 31) " "
EQ@[31; 32) "="
@@ -36,7 +36,7 @@ SOURCE_FILE@[0; 39)
ARRAY_EXPR@[33; 35)
L_BRACK@[33; 34) "["
R_BRACK@[34; 35) "]"
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 37) "\n"
R_CURLY@[37; 38) "}"
WHITESPACE@[38; 39) "\n"
@@ -13,5 +13,5 @@ SOURCE_FILE@[0; 15)
L_PAREN@[10; 11) "("
R_PAREN@[11; 12) ")"
R_BRACK@[12; 13) "]"
SEMI@[13; 14) ";"
SEMICOLON@[13; 14) ";"
WHITESPACE@[14; 15) "\n"
@@ -28,7 +28,7 @@ SOURCE_FILE@[0; 97)
TUPLE_EXPR@[25; 27)
L_PAREN@[25; 26) "("
R_PAREN@[26; 27) ")"
SEMI@[27; 28) ";"
SEMICOLON@[27; 28) ";"
WHITESPACE@[28; 33) "\n "
LET_STMT@[33; 47)
LET_KW@[33; 36) "let"
@@ -48,7 +48,7 @@ SOURCE_FILE@[0; 97)
TUPLE_EXPR@[44; 46)
L_PAREN@[44; 45) "("
R_PAREN@[45; 46) ")"
SEMI@[46; 47) ";"
SEMICOLON@[46; 47) ";"
WHITESPACE@[47; 52) "\n "
LET_STMT@[52; 67)
LET_KW@[52; 55) "let"
@@ -69,7 +69,7 @@ SOURCE_FILE@[0; 97)
TUPLE_EXPR@[64; 66)
L_PAREN@[64; 65) "("
R_PAREN@[65; 66) ")"
SEMI@[66; 67) ";"
SEMICOLON@[66; 67) ";"
WHITESPACE@[67; 72) "\n "
LET_STMT@[72; 94)
LET_KW@[72; 75) "let"
@@ -85,7 +85,7 @@ SOURCE_FILE@[0; 97)
COMMA@[79; 80) ","
WHITESPACE@[80; 81) " "
DOT_DOT_PAT@[81; 83)
DOTDOT@[81; 83) ".."
DOT2@[81; 83) ".."
WHITESPACE@[83; 84) " "
COMMA@[84; 85) ","
WHITESPACE@[85; 86) " "
@@ -99,7 +99,7 @@ SOURCE_FILE@[0; 97)
TUPLE_EXPR@[91; 93)
L_PAREN@[91; 92) "("
R_PAREN@[92; 93) ")"
SEMI@[93; 94) ";"
SEMICOLON@[93; 94) ";"
WHITESPACE@[94; 95) "\n"
R_CURLY@[95; 96) "}"
WHITESPACE@[96; 97) "\n"
@@ -26,7 +26,7 @@ SOURCE_FILE@[0; 52)
TUPLE_EXPR@[25; 27)
L_PAREN@[25; 26) "("
R_PAREN@[26; 27) ")"
SEMI@[27; 28) ";"
SEMICOLON@[27; 28) ";"
WHITESPACE@[28; 33) "\n "
LET_STMT@[33; 49)
LET_KW@[33; 36) "let"
@@ -44,7 +44,7 @@ SOURCE_FILE@[0; 52)
TUPLE_EXPR@[46; 48)
L_PAREN@[46; 47) "("
R_PAREN@[47; 48) ")"
SEMI@[48; 49) ";"
SEMICOLON@[48; 49) ";"
WHITESPACE@[49; 50) "\n"
R_CURLY@[50; 51) "}"
WHITESPACE@[51; 52) "\n"
@@ -39,5 +39,5 @@ SOURCE_FILE@[0; 43)
WHITESPACE@[38; 39) " "
TYPE_BOUND@[39; 41)
LIFETIME@[39; 41) "\'a"
SEMI@[41; 42) ";"
SEMICOLON@[41; 42) ";"
WHITESPACE@[42; 43) "\n"
@@ -24,7 +24,7 @@ SOURCE_FILE@[0; 89)
PATH_SEGMENT@[21; 24)
NAME_REF@[21; 24)
IDENT@[21; 24) "i32"
SEMI@[24; 25) ";"
SEMICOLON@[24; 25) ";"
WHITESPACE@[25; 30) "\n "
EXPR_STMT@[30; 43)
BIN_EXPR@[30; 42)
@@ -44,7 +44,7 @@ SOURCE_FILE@[0; 89)
WHITESPACE@[40; 41) " "
LITERAL@[41; 42)
INT_NUMBER@[41; 42) "1"
SEMI@[42; 43) ";"
SEMICOLON@[42; 43) ";"
WHITESPACE@[43; 48) "\n "
EXPR_STMT@[48; 62)
BIN_EXPR@[48; 61)
@@ -64,7 +64,7 @@ SOURCE_FILE@[0; 89)
WHITESPACE@[59; 60) " "
LITERAL@[60; 61)
INT_NUMBER@[60; 61) "1"
SEMI@[61; 62) ";"
SEMICOLON@[61; 62) ";"
WHITESPACE@[62; 67) "\n "
EXPR_STMT@[67; 86)
BIN_EXPR@[67; 85)
@@ -84,7 +84,7 @@ SOURCE_FILE@[0; 89)
WHITESPACE@[80; 81) " "
LITERAL@[81; 85)
INT_NUMBER@[81; 85) "0x37"
SEMI@[85; 86) ";"
SEMICOLON@[85; 86) ";"
WHITESPACE@[86; 87) "\n"
R_CURLY@[87; 88) "}"
WHITESPACE@[88; 89) "\n"
@@ -24,7 +24,7 @@ SOURCE_FILE@[0; 93)
BLOCK@[26; 28)
L_CURLY@[26; 27) "{"
R_CURLY@[27; 28) "}"
SEMI@[28; 29) ";"
SEMICOLON@[28; 29) ";"
WHITESPACE@[29; 34) "\n "
EXPR_STMT@[34; 67)
WHILE_EXPR@[34; 66)
@@ -63,7 +63,7 @@ SOURCE_FILE@[0; 93)
BLOCK@[64; 66)
L_CURLY@[64; 65) "{"
R_CURLY@[65; 66) "}"
SEMI@[66; 67) ";"
SEMICOLON@[66; 67) ";"
WHITESPACE@[67; 72) "\n "
EXPR_STMT@[72; 90)
WHILE_EXPR@[72; 89)
@@ -83,7 +83,7 @@ SOURCE_FILE@[0; 93)
BLOCK@[87; 89)
L_CURLY@[87; 88) "{"
R_CURLY@[88; 89) "}"
SEMI@[89; 90) ";"
SEMICOLON@[89; 90) ";"
WHITESPACE@[90; 91) "\n"
R_CURLY@[91; 92) "}"
WHITESPACE@[92; 93) "\n"
@@ -12,7 +12,7 @@ SOURCE_FILE@[0; 113)
PARAM_LIST@[11; 13)
L_PAREN@[11; 12) "("
R_PAREN@[12; 13) ")"
SEMI@[13; 14) ";"
SEMICOLON@[13; 14) ";"
WHITESPACE@[14; 15) "\n"
TYPE_ALIAS_DEF@[15; 36)
TYPE_KW@[15; 19) "type"
@@ -29,7 +29,7 @@ SOURCE_FILE@[0; 113)
PARAM_LIST@[33; 35)
L_PAREN@[33; 34) "("
R_PAREN@[34; 35) ")"
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 37) "\n"
TYPE_ALIAS_DEF@[37; 69)
TYPE_KW@[37; 41) "type"
@@ -51,7 +51,7 @@ SOURCE_FILE@[0; 113)
PARAM_LIST@[66; 68)
L_PAREN@[66; 67) "("
R_PAREN@[67; 68) ")"
SEMI@[68; 69) ";"
SEMICOLON@[68; 69) ";"
WHITESPACE@[69; 70) "\n"
TYPE_ALIAS_DEF@[70; 112)
TYPE_KW@[70; 74) "type"
@@ -82,7 +82,7 @@ SOURCE_FILE@[0; 113)
COMMA@[98; 99) ","
WHITESPACE@[99; 100) " "
PARAM@[100; 103)
DOTDOTDOT@[100; 103) "..."
DOT3@[100; 103) "..."
WHITESPACE@[103; 104) " "
R_PAREN@[104; 105) ")"
WHITESPACE@[105; 106) " "
@@ -94,5 +94,5 @@ SOURCE_FILE@[0; 113)
PATH_SEGMENT@[109; 111)
NAME_REF@[109; 111)
IDENT@[109; 111) "u8"
SEMI@[111; 112) ";"
SEMICOLON@[111; 112) ";"
WHITESPACE@[112; 113) "\n"
@@ -12,7 +12,7 @@ SOURCE_FILE@[0; 54)
TUPLE_TYPE@[10; 12)
L_PAREN@[10; 11) "("
R_PAREN@[11; 12) ")"
SEMI@[12; 13) ";"
SEMICOLON@[12; 13) ";"
WHITESPACE@[13; 14) "\n"
TYPE_ALIAS_DEF@[14; 35)
TYPE_KW@[14; 18) "type"
@@ -29,7 +29,7 @@ SOURCE_FILE@[0; 54)
TUPLE_TYPE@[32; 34)
L_PAREN@[32; 33) "("
R_PAREN@[33; 34) ")"
SEMI@[34; 35) ";"
SEMICOLON@[34; 35) ";"
WHITESPACE@[35; 36) "\n"
TYPE_ALIAS_DEF@[36; 53)
TYPE_KW@[36; 40) "type"
@@ -46,5 +46,5 @@ SOURCE_FILE@[0; 54)
TUPLE_TYPE@[50; 52)
L_PAREN@[50; 51) "("
R_PAREN@[51; 52) ")"
SEMI@[52; 53) ";"
SEMICOLON@[52; 53) ";"
WHITESPACE@[53; 54) "\n"
@@ -22,14 +22,14 @@ SOURCE_FILE@[0; 102)
EXPR_STMT@[30; 36)
BREAK_EXPR@[30; 35)
BREAK_KW@[30; 35) "break"
SEMI@[35; 36) ";"
SEMICOLON@[35; 36) ";"
WHITESPACE@[36; 45) "\n "
EXPR_STMT@[45; 54)
BREAK_EXPR@[45; 53)
BREAK_KW@[45; 50) "break"
WHITESPACE@[50; 51) " "
LIFETIME@[51; 53) "\'l"
SEMI@[53; 54) ";"
SEMICOLON@[53; 54) ";"
WHITESPACE@[54; 63) "\n "
EXPR_STMT@[63; 72)
BREAK_EXPR@[63; 71)
@@ -37,7 +37,7 @@ SOURCE_FILE@[0; 102)
WHITESPACE@[68; 69) " "
LITERAL@[69; 71)
INT_NUMBER@[69; 71) "92"
SEMI@[71; 72) ";"
SEMICOLON@[71; 72) ";"
WHITESPACE@[72; 81) "\n "
EXPR_STMT@[81; 93)
BREAK_EXPR@[81; 92)
@@ -47,7 +47,7 @@ SOURCE_FILE@[0; 102)
WHITESPACE@[89; 90) " "
LITERAL@[90; 92)
INT_NUMBER@[90; 92) "92"
SEMI@[92; 93) ";"
SEMICOLON@[92; 93) ";"
WHITESPACE@[93; 98) "\n "
R_CURLY@[98; 99) "}"
WHITESPACE@[99; 100) "\n"
@@ -26,11 +26,11 @@ SOURCE_FILE@[0; 71)
NAME_REF@[15; 16)
IDENT@[15; 16) "B"
R_ANGLE@[16; 17) ">"
COLONCOLON@[17; 19) "::"
COLON2@[17; 19) "::"
PATH_SEGMENT@[19; 25)
NAME_REF@[19; 25)
IDENT@[19; 25) "Output"
SEMI@[25; 26) ";"
SEMICOLON@[25; 26) ";"
WHITESPACE@[26; 27) "\n"
FN_DEF@[27; 70)
FN_KW@[27; 29) "fn"
@@ -66,14 +66,14 @@ SOURCE_FILE@[0; 71)
NAME_REF@[48; 55)
IDENT@[48; 55) "Default"
R_ANGLE@[55; 56) ">"
COLONCOLON@[56; 58) "::"
COLON2@[56; 58) "::"
PATH_SEGMENT@[58; 65)
NAME_REF@[58; 65)
IDENT@[58; 65) "default"
ARG_LIST@[65; 67)
L_PAREN@[65; 66) "("
R_PAREN@[66; 67) ")"
SEMI@[67; 68) ";"
SEMICOLON@[67; 68) ";"
WHITESPACE@[68; 69) " "
R_CURLY@[69; 70) "}"
WHITESPACE@[70; 71) "\n"
@@ -21,9 +21,9 @@ SOURCE_FILE@[0; 21)
IDENT@[11; 13) "xs"
L_BRACK@[13; 14) "["
RANGE_EXPR@[14; 16)
DOTDOT@[14; 16) ".."
DOT2@[14; 16) ".."
R_BRACK@[16; 17) "]"
SEMI@[17; 18) ";"
SEMICOLON@[17; 18) ";"
WHITESPACE@[18; 19) " "
R_CURLY@[19; 20) "}"
WHITESPACE@[20; 21) "\n"
@@ -51,5 +51,5 @@ SOURCE_FILE@[0; 46)
NAME_REF@[40; 43)
IDENT@[40; 43) "u64"
R_ANGLE@[43; 44) ">"
SEMI@[44; 45) ";"
SEMICOLON@[44; 45) ";"
WHITESPACE@[45; 46) "\n"
@@ -59,5 +59,5 @@ SOURCE_FILE@[0; 71)
NAME_REF@[65; 68)
IDENT@[65; 68) "u32"
R_PAREN@[68; 69) ")"
SEMI@[69; 70) ";"
SEMICOLON@[69; 70) ";"
WHITESPACE@[70; 71) "\n"
@@ -29,7 +29,7 @@ SOURCE_FILE@[0; 118)
ARG_LIST@[24; 26)
L_PAREN@[24; 25) "("
R_PAREN@[25; 26) ")"
SEMI@[26; 27) ";"
SEMICOLON@[26; 27) ";"
WHITESPACE@[27; 32) "\n "
LET_STMT@[32; 54)
LET_KW@[32; 35) "let"
@@ -65,7 +65,7 @@ SOURCE_FILE@[0; 118)
INT_NUMBER@[50; 51) "2"
COMMA@[51; 52) ","
R_PAREN@[52; 53) ")"
SEMI@[53; 54) ";"
SEMICOLON@[53; 54) ";"
WHITESPACE@[54; 59) "\n "
LET_STMT@[59; 84)
LET_KW@[59; 62) "let"
@@ -95,7 +95,7 @@ SOURCE_FILE@[0; 118)
NAME_REF@[70; 73)
IDENT@[70; 73) "Foo"
R_ANGLE@[73; 74) ">"
COLONCOLON@[74; 76) "::"
COLON2@[74; 76) "::"
PATH_SEGMENT@[76; 80)
NAME_REF@[76; 80)
IDENT@[76; 80) "func"
@@ -103,7 +103,7 @@ SOURCE_FILE@[0; 118)
L_PAREN@[80; 81) "("
R_PAREN@[81; 82) ")"
R_PAREN@[82; 83) ")"
SEMI@[83; 84) ";"
SEMICOLON@[83; 84) ";"
WHITESPACE@[84; 89) "\n "
EXPR_STMT@[89; 115)
CALL_EXPR@[89; 114)
@@ -134,7 +134,7 @@ SOURCE_FILE@[0; 118)
NAME_REF@[99; 104)
IDENT@[99; 104) "Trait"
R_ANGLE@[104; 105) ">"
COLONCOLON@[105; 107) "::"
COLON2@[105; 107) "::"
PATH_SEGMENT@[107; 111)
NAME_REF@[107; 111)
IDENT@[107; 111) "func"
@@ -142,7 +142,7 @@ SOURCE_FILE@[0; 118)
L_PAREN@[111; 112) "("
R_PAREN@[112; 113) ")"
R_PAREN@[113; 114) ")"
SEMI@[114; 115) ";"
SEMICOLON@[114; 115) ";"
WHITESPACE@[115; 116) "\n"
R_CURLY@[116; 117) "}"
WHITESPACE@[117; 118) "\n"
@@ -8,7 +8,7 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[4; 8)
NAME_REF@[4; 8)
IDENT@[4; 8) "some"
COLONCOLON@[8; 10) "::"
COLON2@[8; 10) "::"
PATH_SEGMENT@[10; 14)
NAME_REF@[10; 14)
IDENT@[10; 14) "path"
@@ -18,7 +18,7 @@ SOURCE_FILE@[0; 198)
WHITESPACE@[17; 18) " "
NAME@[18; 27)
IDENT@[18; 27) "some_name"
SEMI@[27; 28) ";"
SEMICOLON@[27; 28) ";"
WHITESPACE@[28; 29) "\n"
USE_ITEM@[29; 181)
USE_KW@[29; 32) "use"
@@ -28,7 +28,7 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[33; 37)
NAME_REF@[33; 37)
IDENT@[33; 37) "some"
COLONCOLON@[37; 39) "::"
COLON2@[37; 39) "::"
USE_TREE_LIST@[39; 180)
L_CURLY@[39; 40) "{"
WHITESPACE@[40; 42) "\n "
@@ -38,7 +38,7 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[42; 47)
NAME_REF@[42; 47)
IDENT@[42; 47) "other"
COLONCOLON@[47; 49) "::"
COLON2@[47; 49) "::"
PATH_SEGMENT@[49; 53)
NAME_REF@[49; 53)
IDENT@[49; 53) "path"
@@ -56,7 +56,7 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[75; 84)
NAME_REF@[75; 84)
IDENT@[75; 84) "different"
COLONCOLON@[84; 86) "::"
COLON2@[84; 86) "::"
PATH_SEGMENT@[86; 90)
NAME_REF@[86; 90)
IDENT@[86; 90) "path"
@@ -75,11 +75,11 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[111; 114)
NAME_REF@[111; 114)
IDENT@[111; 114) "yet"
COLONCOLON@[114; 116) "::"
COLON2@[114; 116) "::"
PATH_SEGMENT@[116; 123)
NAME_REF@[116; 123)
IDENT@[116; 123) "another"
COLONCOLON@[123; 125) "::"
COLON2@[123; 125) "::"
PATH_SEGMENT@[125; 129)
NAME_REF@[125; 129)
IDENT@[125; 129) "path"
@@ -95,31 +95,31 @@ SOURCE_FILE@[0; 198)
PATH_SEGMENT@[132; 139)
NAME_REF@[132; 139)
IDENT@[132; 139) "running"
COLONCOLON@[139; 141) "::"
COLON2@[139; 141) "::"
PATH_SEGMENT@[141; 144)
NAME_REF@[141; 144)
IDENT@[141; 144) "out"
COLONCOLON@[144; 146) "::"
COLON2@[144; 146) "::"
PATH_SEGMENT@[146; 148)
NAME_REF@[146; 148)
IDENT@[146; 148) "of"
COLONCOLON@[148; 150) "::"
COLON2@[148; 150) "::"
PATH_SEGMENT@[150; 158)
NAME_REF@[150; 158)
IDENT@[150; 158) "synonyms"
COLONCOLON@[158; 160) "::"
COLON2@[158; 160) "::"
PATH_SEGMENT@[160; 164)
NAME_REF@[160; 164)
IDENT@[160; 164) "for_"
COLONCOLON@[164; 166) "::"
COLON2@[164; 166) "::"
PATH_SEGMENT@[166; 175)
NAME_REF@[166; 175)
IDENT@[166; 175) "different"
COLONCOLON@[175; 177) "::"
COLON2@[175; 177) "::"
STAR@[177; 178) "*"
WHITESPACE@[178; 179) "\n"
R_CURLY@[179; 180) "}"
SEMI@[180; 181) ";"
SEMICOLON@[180; 181) ";"
WHITESPACE@[181; 182) "\n"
USE_ITEM@[182; 197)
USE_KW@[182; 185) "use"
@@ -134,5 +134,5 @@ SOURCE_FILE@[0; 198)
AS_KW@[192; 194) "as"
WHITESPACE@[194; 195) " "
UNDERSCORE@[195; 196) "_"
SEMI@[196; 197) ";"
SEMICOLON@[196; 197) ";"
WHITESPACE@[197; 198) "\n"
@@ -16,5 +16,5 @@ SOURCE_FILE@[0; 17)
IDENT@[10; 13) "i32"
COMMA@[13; 14) ","
R_PAREN@[14; 15) ")"
SEMI@[15; 16) ";"
SEMICOLON@[15; 16) ";"
WHITESPACE@[16; 17) "\n"
@@ -16,7 +16,7 @@ SOURCE_FILE@[0; 22)
PARAM_LIST@[16; 18)
L_PAREN@[16; 17) "("
R_PAREN@[17; 18) ")"
SEMI@[18; 19) ";"
SEMICOLON@[18; 19) ";"
WHITESPACE@[19; 20) " "
R_CURLY@[20; 21) "}"
WHITESPACE@[21; 22) "\n"
@@ -10,5 +10,5 @@ SOURCE_FILE@[0; 13)
TUPLE_TYPE@[9; 11)
L_PAREN@[9; 10) "("
R_PAREN@[10; 11) ")"
SEMI@[11; 12) ";"
SEMICOLON@[11; 12) ";"
WHITESPACE@[12; 13) "\n"
@@ -12,7 +12,7 @@ SOURCE_FILE@[0; 71)
PATH_SEGMENT@[9; 12)
NAME_REF@[9; 12)
IDENT@[9; 12) "Foo"
SEMI@[12; 13) ";"
SEMICOLON@[12; 13) ";"
WHITESPACE@[13; 14) "\n"
TYPE_ALIAS_DEF@[14; 29)
TYPE_KW@[14; 18) "type"
@@ -25,10 +25,10 @@ SOURCE_FILE@[0; 71)
PATH_TYPE@[23; 28)
PATH@[23; 28)
PATH_SEGMENT@[23; 28)
COLONCOLON@[23; 25) "::"
COLON2@[23; 25) "::"
NAME_REF@[25; 28)
IDENT@[25; 28) "Foo"
SEMI@[28; 29) ";"
SEMICOLON@[28; 29) ";"
WHITESPACE@[29; 30) "\n"
TYPE_ALIAS_DEF@[30; 49)
TYPE_KW@[30; 34) "type"
@@ -43,11 +43,11 @@ SOURCE_FILE@[0; 71)
PATH@[39; 43)
PATH_SEGMENT@[39; 43)
SELF_KW@[39; 43) "self"
COLONCOLON@[43; 45) "::"
COLON2@[43; 45) "::"
PATH_SEGMENT@[45; 48)
NAME_REF@[45; 48)
IDENT@[45; 48) "Foo"
SEMI@[48; 49) ";"
SEMICOLON@[48; 49) ";"
WHITESPACE@[49; 50) "\n"
TYPE_ALIAS_DEF@[50; 70)
TYPE_KW@[50; 54) "type"
@@ -62,9 +62,9 @@ SOURCE_FILE@[0; 71)
PATH@[59; 64)
PATH_SEGMENT@[59; 64)
SUPER_KW@[59; 64) "super"
COLONCOLON@[64; 66) "::"
COLON2@[64; 66) "::"
PATH_SEGMENT@[66; 69)
NAME_REF@[66; 69)
IDENT@[66; 69) "Foo"
SEMI@[69; 70) ";"
SEMICOLON@[69; 70) ";"
WHITESPACE@[70; 71) "\n"
@@ -25,7 +25,7 @@ SOURCE_FILE@[0; 91)
PATH_SEGMENT@[23; 24)
NAME_REF@[23; 24)
IDENT@[23; 24) "a"
SEMI@[24; 25) ";"
SEMICOLON@[24; 25) ";"
WHITESPACE@[25; 30) "\n "
LET_STMT@[30; 43)
LET_KW@[30; 33) "let"
@@ -41,11 +41,11 @@ SOURCE_FILE@[0; 91)
PATH_SEGMENT@[38; 39)
NAME_REF@[38; 39)
IDENT@[38; 39) "a"
COLONCOLON@[39; 41) "::"
COLON2@[39; 41) "::"
PATH_SEGMENT@[41; 42)
NAME_REF@[41; 42)
IDENT@[41; 42) "b"
SEMI@[42; 43) ";"
SEMICOLON@[42; 43) ";"
WHITESPACE@[43; 48) "\n "
LET_STMT@[48; 65)
LET_KW@[48; 51) "let"
@@ -58,11 +58,11 @@ SOURCE_FILE@[0; 91)
PATH_EXPR@[56; 64)
PATH@[56; 64)
PATH_SEGMENT@[56; 64)
COLONCOLON@[56; 58) "::"
COLON2@[56; 58) "::"
NAME_REF@[58; 59)
IDENT@[58; 59) "a"
TYPE_ARG_LIST@[59; 64)
COLONCOLON@[59; 61) "::"
COLON2@[59; 61) "::"
L_ANGLE@[61; 62) "<"
TYPE_ARG@[62; 63)
PATH_TYPE@[62; 63)
@@ -71,7 +71,7 @@ SOURCE_FILE@[0; 91)
NAME_REF@[62; 63)
IDENT@[62; 63) "b"
R_ANGLE@[63; 64) ">"
SEMI@[64; 65) ";"
SEMICOLON@[64; 65) ";"
WHITESPACE@[65; 70) "\n "
LET_STMT@[70; 88)
LET_KW@[70; 73) "let"
@@ -86,11 +86,11 @@ SOURCE_FILE@[0; 91)
PATH_SEGMENT@[78; 84)
NAME_REF@[78; 84)
IDENT@[78; 84) "format"
EXCL@[84; 85) "!"
BANG@[84; 85) "!"
TOKEN_TREE@[85; 87)
L_PAREN@[85; 86) "("
R_PAREN@[86; 87) ")"
SEMI@[87; 88) ";"
SEMICOLON@[87; 88) ";"
WHITESPACE@[88; 89) "\n"
R_CURLY@[89; 90) "}"
WHITESPACE@[90; 91) "\n"
@@ -63,7 +63,7 @@ SOURCE_FILE@[0; 116)
PATH_SEGMENT@[64; 72)
NAME_REF@[64; 72)
IDENT@[64; 72) "Iterator"
COLONCOLON@[72; 74) "::"
COLON2@[72; 74) "::"
PATH_SEGMENT@[74; 78)
NAME_REF@[74; 78)
IDENT@[74; 78) "Item"
@@ -94,7 +94,7 @@ SOURCE_FILE@[0; 116)
NAME_REF@[93; 101)
IDENT@[93; 101) "Iterator"
R_ANGLE@[101; 102) ">"
COLONCOLON@[102; 104) "::"
COLON2@[102; 104) "::"
PATH_SEGMENT@[104; 108)
NAME_REF@[104; 108)
IDENT@[104; 108) "Item"
@@ -27,7 +27,7 @@ SOURCE_FILE@[0; 112)
LITERAL@[35; 36)
INT_NUMBER@[35; 36) "0"
WHITESPACE@[36; 37) " "
DOTDOTDOT@[37; 40) "..."
DOT3@[37; 40) "..."
WHITESPACE@[40; 41) " "
LITERAL_PAT@[41; 44)
LITERAL@[41; 44)
@@ -46,7 +46,7 @@ SOURCE_FILE@[0; 112)
LITERAL@[60; 63)
INT_NUMBER@[60; 63) "101"
WHITESPACE@[63; 64) " "
DOTDOTEQ@[64; 67) "..="
DOT2EQ@[64; 67) "..="
WHITESPACE@[67; 68) " "
LITERAL_PAT@[68; 71)
LITERAL@[68; 71)
@@ -65,7 +65,7 @@ SOURCE_FILE@[0; 112)
LITERAL@[87; 90)
INT_NUMBER@[87; 90) "200"
WHITESPACE@[90; 91) " "
DOTDOT@[91; 93) ".."
DOT2@[91; 93) ".."
WHITESPACE@[93; 94) " "
LITERAL_PAT@[94; 97)
LITERAL@[94; 97)

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