mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-29 20:46:07 +03:00
Merge #3926
3926: Rename some tokens r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
@@ -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,5 +1,5 @@
|
||||
use ra_syntax::{
|
||||
ast::{self, AstNode, AstToken, NameOwner, TypeParamsOwner},
|
||||
ast::{self, AstNode, NameOwner, TypeParamsOwner},
|
||||
TextUnit,
|
||||
};
|
||||
use stdx::{format_to, SepBy};
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
);
|
||||
|
||||
@@ -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
@@ -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) ";""###,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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 } ; }
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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![:])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user