mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Node-ify lifetimes
This commit is contained in:
parent
d34611633b
commit
dd496223f5
63 changed files with 420 additions and 274 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -1827,9 +1827,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ungrammar"
|
name = "ungrammar"
|
||||||
version = "1.3.0"
|
version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7311ee93faac43aa9da26b043eb244092a29a3078c79af9396f63f800cc3a59a"
|
checksum = "68951379f3ced25754472ca5addbf74d7dab58c9818f49290a3d8caa3ab44fb7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicase"
|
name = "unicase"
|
||||||
|
|
|
@ -53,7 +53,7 @@ pub(crate) fn generate_impl(acc: &mut Assists, ctx: &AssistContext) -> Option<()
|
||||||
if let Some(type_params) = type_params {
|
if let Some(type_params) = type_params {
|
||||||
let lifetime_params = type_params
|
let lifetime_params = type_params
|
||||||
.lifetime_params()
|
.lifetime_params()
|
||||||
.filter_map(|it| it.lifetime_token())
|
.filter_map(|it| it.lifetime())
|
||||||
.map(|it| it.text().clone());
|
.map(|it| it.text().clone());
|
||||||
let type_params = type_params
|
let type_params = type_params
|
||||||
.type_params()
|
.type_params()
|
||||||
|
|
|
@ -99,7 +99,7 @@ fn generate_impl_text(strukt: &ast::Struct, code: &str) -> String {
|
||||||
if let Some(type_params) = type_params {
|
if let Some(type_params) = type_params {
|
||||||
let lifetime_params = type_params
|
let lifetime_params = type_params
|
||||||
.lifetime_params()
|
.lifetime_params()
|
||||||
.filter_map(|it| it.lifetime_token())
|
.filter_map(|it| it.lifetime())
|
||||||
.map(|it| it.text().clone());
|
.map(|it| it.text().clone());
|
||||||
let type_params =
|
let type_params =
|
||||||
type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone());
|
type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone());
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use rustc_hash::FxHashSet;
|
use rustc_hash::FxHashSet;
|
||||||
use syntax::{
|
use syntax::{
|
||||||
ast::{self, GenericParamsOwner, NameOwner},
|
ast::{self, GenericParamsOwner, NameOwner},
|
||||||
AstNode, SyntaxKind, TextRange, TextSize,
|
AstNode, TextRange, TextSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{assist_context::AssistBuilder, AssistContext, AssistId, AssistKind, Assists};
|
use crate::{assist_context::AssistBuilder, AssistContext, AssistId, AssistKind, Assists};
|
||||||
|
@ -35,13 +35,12 @@ static ASSIST_LABEL: &str = "Introduce named lifetime";
|
||||||
// FIXME: How can we handle renaming any one of multiple anonymous lifetimes?
|
// FIXME: How can we handle renaming any one of multiple anonymous lifetimes?
|
||||||
// FIXME: should also add support for the case fun(f: &Foo) -> &<|>Foo
|
// FIXME: should also add support for the case fun(f: &Foo) -> &<|>Foo
|
||||||
pub(crate) fn introduce_named_lifetime(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
pub(crate) fn introduce_named_lifetime(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
||||||
let lifetime_token = ctx
|
let lifetime =
|
||||||
.find_token_syntax_at_offset(SyntaxKind::LIFETIME)
|
ctx.find_node_at_offset::<ast::Lifetime>().filter(|lifetime| lifetime.text() == "'_")?;
|
||||||
.filter(|lifetime| lifetime.text() == "'_")?;
|
if let Some(fn_def) = lifetime.syntax().ancestors().find_map(ast::Fn::cast) {
|
||||||
if let Some(fn_def) = lifetime_token.ancestors().find_map(ast::Fn::cast) {
|
generate_fn_def_assist(acc, &fn_def, lifetime.lifetime_ident_token()?.text_range())
|
||||||
generate_fn_def_assist(acc, &fn_def, lifetime_token.text_range())
|
} else if let Some(impl_def) = lifetime.syntax().ancestors().find_map(ast::Impl::cast) {
|
||||||
} else if let Some(impl_def) = lifetime_token.ancestors().find_map(ast::Impl::cast) {
|
generate_impl_def_assist(acc, &impl_def, lifetime.lifetime_ident_token()?.text_range())
|
||||||
generate_impl_def_assist(acc, &impl_def, lifetime_token.text_range())
|
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -58,7 +57,7 @@ fn generate_fn_def_assist(
|
||||||
let end_of_fn_ident = fn_def.name()?.ident_token()?.text_range().end();
|
let end_of_fn_ident = fn_def.name()?.ident_token()?.text_range().end();
|
||||||
let self_param =
|
let self_param =
|
||||||
// use the self if it's a reference and has no explicit lifetime
|
// use the self if it's a reference and has no explicit lifetime
|
||||||
param_list.self_param().filter(|p| p.lifetime_token().is_none() && p.amp_token().is_some());
|
param_list.self_param().filter(|p| p.lifetime().is_none() && p.amp_token().is_some());
|
||||||
// compute the location which implicitly has the same lifetime as the anonymous lifetime
|
// compute the location which implicitly has the same lifetime as the anonymous lifetime
|
||||||
let loc_needing_lifetime = if let Some(self_param) = self_param {
|
let loc_needing_lifetime = if let Some(self_param) = self_param {
|
||||||
// if we have a self reference, use that
|
// if we have a self reference, use that
|
||||||
|
@ -68,9 +67,7 @@ fn generate_fn_def_assist(
|
||||||
let fn_params_without_lifetime: Vec<_> = param_list
|
let fn_params_without_lifetime: Vec<_> = param_list
|
||||||
.params()
|
.params()
|
||||||
.filter_map(|param| match param.ty() {
|
.filter_map(|param| match param.ty() {
|
||||||
Some(ast::Type::RefType(ascribed_type))
|
Some(ast::Type::RefType(ascribed_type)) if ascribed_type.lifetime().is_none() => {
|
||||||
if ascribed_type.lifetime_token() == None =>
|
|
||||||
{
|
|
||||||
Some(ascribed_type.amp_token()?.text_range().end())
|
Some(ascribed_type.amp_token()?.text_range().end())
|
||||||
}
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
|
|
|
@ -178,9 +178,8 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> {
|
||||||
self.imp.descend_node_at_offset(node, offset).find_map(N::cast)
|
self.imp.descend_node_at_offset(node, offset).find_map(N::cast)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Replace the SyntaxToken with a typed ast Node/Token
|
pub fn resolve_lifetime_param(&self, lifetime: &ast::Lifetime) -> Option<LifetimeParam> {
|
||||||
pub fn resolve_lifetime_param(&self, lifetime_token: &SyntaxToken) -> Option<LifetimeParam> {
|
self.imp.resolve_lifetime_param(lifetime)
|
||||||
self.imp.resolve_lifetime_param(lifetime_token)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn type_of_expr(&self, expr: &ast::Expr) -> Option<Type> {
|
pub fn type_of_expr(&self, expr: &ast::Expr) -> Option<Type> {
|
||||||
|
@ -402,13 +401,9 @@ impl<'db> SemanticsImpl<'db> {
|
||||||
.kmerge_by(|node1, node2| node1.text_range().len() < node2.text_range().len())
|
.kmerge_by(|node1, node2| node1.text_range().len() < node2.text_range().len())
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Replace the SyntaxToken with a typed ast Node/Token
|
fn resolve_lifetime_param(&self, lifetime: &ast::Lifetime) -> Option<LifetimeParam> {
|
||||||
fn resolve_lifetime_param(&self, lifetime_token: &SyntaxToken) -> Option<LifetimeParam> {
|
let text = lifetime.text();
|
||||||
if lifetime_token.kind() != syntax::SyntaxKind::LIFETIME {
|
let lifetime_param = lifetime.syntax().ancestors().find_map(|syn| {
|
||||||
return None;
|
|
||||||
}
|
|
||||||
let lifetime_text = lifetime_token.text();
|
|
||||||
let lifetime_param = lifetime_token.parent().ancestors().find_map(|syn| {
|
|
||||||
let gpl = match_ast! {
|
let gpl = match_ast! {
|
||||||
match syn {
|
match syn {
|
||||||
ast::Fn(it) => it.generic_param_list()?,
|
ast::Fn(it) => it.generic_param_list()?,
|
||||||
|
@ -424,7 +419,7 @@ impl<'db> SemanticsImpl<'db> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
gpl.lifetime_params()
|
gpl.lifetime_params()
|
||||||
.find(|tp| tp.lifetime_token().as_ref().map(|lt| lt.text()) == Some(lifetime_text))
|
.find(|tp| tp.lifetime().as_ref().map(|lt| lt.text()) == Some(text))
|
||||||
})?;
|
})?;
|
||||||
let src = self.find_file(lifetime_param.syntax().clone()).with_value(lifetime_param);
|
let src = self.find_file(lifetime_param.syntax().clone()).with_value(lifetime_param);
|
||||||
ToDef::to_def(self, src)
|
ToDef::to_def(self, src)
|
||||||
|
|
|
@ -233,8 +233,7 @@ impl ExprCollector<'_> {
|
||||||
let res = self.collect_block(block);
|
let res = self.collect_block(block);
|
||||||
match &mut self.body.exprs[res] {
|
match &mut self.body.exprs[res] {
|
||||||
Expr::Block { label: block_label, .. } => {
|
Expr::Block { label: block_label, .. } => {
|
||||||
*block_label =
|
*block_label = label.lifetime().map(|t| Name::new_lifetime(&t))
|
||||||
label.lifetime_token().map(|t| Name::new_lifetime(&t))
|
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
|
@ -254,10 +253,7 @@ impl ExprCollector<'_> {
|
||||||
self.alloc_expr(
|
self.alloc_expr(
|
||||||
Expr::Loop {
|
Expr::Loop {
|
||||||
body,
|
body,
|
||||||
label: e
|
label: e.label().and_then(|l| l.lifetime()).map(|l| Name::new_lifetime(&l)),
|
||||||
.label()
|
|
||||||
.and_then(|l| l.lifetime_token())
|
|
||||||
.map(|l| Name::new_lifetime(&l)),
|
|
||||||
},
|
},
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
)
|
)
|
||||||
|
@ -288,7 +284,7 @@ impl ExprCollector<'_> {
|
||||||
body: match_expr,
|
body: match_expr,
|
||||||
label: e
|
label: e
|
||||||
.label()
|
.label()
|
||||||
.and_then(|l| l.lifetime_token())
|
.and_then(|l| l.lifetime())
|
||||||
.map(|l| Name::new_lifetime(&l)),
|
.map(|l| Name::new_lifetime(&l)),
|
||||||
},
|
},
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
|
@ -301,10 +297,7 @@ impl ExprCollector<'_> {
|
||||||
Expr::While {
|
Expr::While {
|
||||||
condition,
|
condition,
|
||||||
body,
|
body,
|
||||||
label: e
|
label: e.label().and_then(|l| l.lifetime()).map(|l| Name::new_lifetime(&l)),
|
||||||
.label()
|
|
||||||
.and_then(|l| l.lifetime_token())
|
|
||||||
.map(|l| Name::new_lifetime(&l)),
|
|
||||||
},
|
},
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
)
|
)
|
||||||
|
@ -318,10 +311,7 @@ impl ExprCollector<'_> {
|
||||||
iterable,
|
iterable,
|
||||||
pat,
|
pat,
|
||||||
body,
|
body,
|
||||||
label: e
|
label: e.label().and_then(|l| l.lifetime()).map(|l| Name::new_lifetime(&l)),
|
||||||
.label()
|
|
||||||
.and_then(|l| l.lifetime_token())
|
|
||||||
.map(|l| Name::new_lifetime(&l)),
|
|
||||||
},
|
},
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
)
|
)
|
||||||
|
@ -380,13 +370,13 @@ impl ExprCollector<'_> {
|
||||||
self.alloc_expr(path, syntax_ptr)
|
self.alloc_expr(path, syntax_ptr)
|
||||||
}
|
}
|
||||||
ast::Expr::ContinueExpr(e) => self.alloc_expr(
|
ast::Expr::ContinueExpr(e) => self.alloc_expr(
|
||||||
Expr::Continue { label: e.lifetime_token().map(|l| Name::new_lifetime(&l)) },
|
Expr::Continue { label: e.lifetime().map(|l| Name::new_lifetime(&l)) },
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
),
|
),
|
||||||
ast::Expr::BreakExpr(e) => {
|
ast::Expr::BreakExpr(e) => {
|
||||||
let expr = e.expr().map(|e| self.collect_expr(e));
|
let expr = e.expr().map(|e| self.collect_expr(e));
|
||||||
self.alloc_expr(
|
self.alloc_expr(
|
||||||
Expr::Break { expr, label: e.lifetime_token().map(|l| Name::new_lifetime(&l)) },
|
Expr::Break { expr, label: e.lifetime().map(|l| Name::new_lifetime(&l)) },
|
||||||
syntax_ptr,
|
syntax_ptr,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,9 +260,8 @@ impl GenericParams {
|
||||||
self.fill_bounds(&lower_ctx, &type_param, Either::Left(type_ref));
|
self.fill_bounds(&lower_ctx, &type_param, Either::Left(type_ref));
|
||||||
}
|
}
|
||||||
for lifetime_param in params.lifetime_params() {
|
for lifetime_param in params.lifetime_params() {
|
||||||
let name = lifetime_param
|
let name =
|
||||||
.lifetime_token()
|
lifetime_param.lifetime().map_or_else(Name::missing, |lt| Name::new_lifetime(<));
|
||||||
.map_or_else(Name::missing, |tok| Name::new_lifetime(&tok));
|
|
||||||
let param = LifetimeParamData { name: name.clone() };
|
let param = LifetimeParamData { name: name.clone() };
|
||||||
let param_id = self.lifetimes.alloc(param);
|
let param_id = self.lifetimes.alloc(param);
|
||||||
sm.lifetime_params.insert(param_id, lifetime_param.clone());
|
sm.lifetime_params.insert(param_id, lifetime_param.clone());
|
||||||
|
@ -275,8 +274,8 @@ impl GenericParams {
|
||||||
for pred in where_clause.predicates() {
|
for pred in where_clause.predicates() {
|
||||||
let target = if let Some(type_ref) = pred.ty() {
|
let target = if let Some(type_ref) = pred.ty() {
|
||||||
Either::Left(TypeRef::from_ast(lower_ctx, type_ref))
|
Either::Left(TypeRef::from_ast(lower_ctx, type_ref))
|
||||||
} else if let Some(lifetime_tok) = pred.lifetime_token() {
|
} else if let Some(lifetime) = pred.lifetime() {
|
||||||
Either::Right(LifetimeRef::from_token(lifetime_tok))
|
Either::Right(LifetimeRef::new(&lifetime))
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
|
|
|
@ -300,12 +300,12 @@ impl Ctx {
|
||||||
ast::SelfParamKind::Owned => self_type,
|
ast::SelfParamKind::Owned => self_type,
|
||||||
ast::SelfParamKind::Ref => TypeRef::Reference(
|
ast::SelfParamKind::Ref => TypeRef::Reference(
|
||||||
Box::new(self_type),
|
Box::new(self_type),
|
||||||
self_param.lifetime_token().map(LifetimeRef::from_token),
|
self_param.lifetime().as_ref().map(LifetimeRef::new),
|
||||||
Mutability::Shared,
|
Mutability::Shared,
|
||||||
),
|
),
|
||||||
ast::SelfParamKind::MutRef => TypeRef::Reference(
|
ast::SelfParamKind::MutRef => TypeRef::Reference(
|
||||||
Box::new(self_type),
|
Box::new(self_type),
|
||||||
self_param.lifetime_token().map(LifetimeRef::from_token),
|
self_param.lifetime().as_ref().map(LifetimeRef::new),
|
||||||
Mutability::Mut,
|
Mutability::Mut,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,8 +169,8 @@ pub(super) fn lower_generic_args(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ast::GenericArg::LifetimeArg(lifetime_arg) => {
|
ast::GenericArg::LifetimeArg(lifetime_arg) => {
|
||||||
if let Some(lifetime) = lifetime_arg.lifetime_token() {
|
if let Some(lifetime) = lifetime_arg.lifetime() {
|
||||||
let lifetime_ref = LifetimeRef::from_token(lifetime);
|
let lifetime_ref = LifetimeRef::new(&lifetime);
|
||||||
args.push(GenericArg::Lifetime(lifetime_ref))
|
args.push(GenericArg::Lifetime(lifetime_ref))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//! HIR for references to types. Paths in these are not yet resolved. They can
|
//! HIR for references to types. Paths in these are not yet resolved. They can
|
||||||
//! be directly created from an ast::TypeRef, without further queries.
|
//! be directly created from an ast::TypeRef, without further queries.
|
||||||
use hir_expand::name::Name;
|
use hir_expand::name::Name;
|
||||||
use syntax::{ast, SyntaxToken};
|
use syntax::ast;
|
||||||
|
|
||||||
use crate::{body::LowerCtx, path::Path};
|
use crate::{body::LowerCtx, path::Path};
|
||||||
|
|
||||||
|
@ -80,8 +80,8 @@ impl LifetimeRef {
|
||||||
LifetimeRef { name }
|
LifetimeRef { name }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn from_token(token: SyntaxToken) -> Self {
|
pub(crate) fn new(lifetime: &ast::Lifetime) -> Self {
|
||||||
LifetimeRef { name: Name::new_lifetime(&token) }
|
LifetimeRef { name: Name::new_lifetime(lifetime) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn missing() -> LifetimeRef {
|
pub fn missing() -> LifetimeRef {
|
||||||
|
@ -127,7 +127,7 @@ impl TypeRef {
|
||||||
}
|
}
|
||||||
ast::Type::RefType(inner) => {
|
ast::Type::RefType(inner) => {
|
||||||
let inner_ty = TypeRef::from_ast_opt(&ctx, inner.ty());
|
let inner_ty = TypeRef::from_ast_opt(&ctx, inner.ty());
|
||||||
let lifetime = inner.lifetime_token().map(|t| LifetimeRef::from_token(t));
|
let lifetime = inner.lifetime().map(|lt| LifetimeRef::new(<));
|
||||||
let mutability = Mutability::from_mutable(inner.mut_token().is_some());
|
let mutability = Mutability::from_mutable(inner.mut_token().is_some());
|
||||||
TypeRef::Reference(Box::new(inner_ty), lifetime, mutability)
|
TypeRef::Reference(Box::new(inner_ty), lifetime, mutability)
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ impl TypeBound {
|
||||||
}
|
}
|
||||||
ast::TypeBoundKind::ForType(_) => TypeBound::Error, // FIXME ForType
|
ast::TypeBoundKind::ForType(_) => TypeBound::Error, // FIXME ForType
|
||||||
ast::TypeBoundKind::Lifetime(lifetime) => {
|
ast::TypeBoundKind::Lifetime(lifetime) => {
|
||||||
TypeBound::Lifetime(LifetimeRef::from_token(lifetime))
|
TypeBound::Lifetime(LifetimeRef::new(&lifetime))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,9 +37,8 @@ impl Name {
|
||||||
Name(Repr::TupleField(idx))
|
Name(Repr::TupleField(idx))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_lifetime(lt: &syntax::SyntaxToken) -> Name {
|
pub fn new_lifetime(lt: &ast::Lifetime) -> Name {
|
||||||
assert_eq!(lt.kind(), syntax::SyntaxKind::LIFETIME);
|
Self::new_text(lt.text().clone())
|
||||||
Name(Repr::Text(lt.text().clone()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shortcut to create inline plain text name
|
/// Shortcut to create inline plain text name
|
||||||
|
|
|
@ -237,7 +237,7 @@ fn pick_best(l: SyntaxToken, r: SyntaxToken) -> SyntaxToken {
|
||||||
fn priority(n: &SyntaxToken) -> usize {
|
fn priority(n: &SyntaxToken) -> usize {
|
||||||
match n.kind() {
|
match n.kind() {
|
||||||
WHITESPACE => 0,
|
WHITESPACE => 0,
|
||||||
IDENT | T![self] | T![super] | T![crate] | LIFETIME => 2,
|
IDENT | T![self] | T![super] | T![crate] | LIFETIME_IDENT => 2,
|
||||||
_ => 1,
|
_ => 1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,7 +295,7 @@ impl<'a> TtIter<'a> {
|
||||||
|
|
||||||
impl<'a> TreeSink for OffsetTokenSink<'a> {
|
impl<'a> TreeSink for OffsetTokenSink<'a> {
|
||||||
fn token(&mut self, kind: SyntaxKind, mut n_tokens: u8) {
|
fn token(&mut self, kind: SyntaxKind, mut n_tokens: u8) {
|
||||||
if kind == SyntaxKind::LIFETIME {
|
if kind == SyntaxKind::LIFETIME_IDENT {
|
||||||
n_tokens = 2;
|
n_tokens = 2;
|
||||||
}
|
}
|
||||||
for _ in 0..n_tokens {
|
for _ in 0..n_tokens {
|
||||||
|
|
|
@ -84,7 +84,11 @@ impl<'a> SubtreeTokenSource<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some((curr, text)) = is_lifetime(cursor) {
|
if let Some((curr, text)) = is_lifetime(cursor) {
|
||||||
cached.push(Some(TtToken { kind: LIFETIME, is_joint_to_next: false, text }));
|
cached.push(Some(TtToken {
|
||||||
|
kind: LIFETIME_IDENT,
|
||||||
|
is_joint_to_next: false,
|
||||||
|
text,
|
||||||
|
}));
|
||||||
self.cached_cursor.set(curr);
|
self.cached_cursor.set(curr);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -172,7 +176,7 @@ fn convert_ident(ident: &tt::Ident) -> TtToken {
|
||||||
let kind = match ident.text.as_ref() {
|
let kind = match ident.text.as_ref() {
|
||||||
"true" => T![true],
|
"true" => T![true],
|
||||||
"false" => T![false],
|
"false" => T![false],
|
||||||
i if i.starts_with('\'') => LIFETIME,
|
i if i.starts_with('\'') => LIFETIME_IDENT,
|
||||||
_ => SyntaxKind::from_keyword(ident.text.as_str()).unwrap_or(IDENT),
|
_ => SyntaxKind::from_keyword(ident.text.as_str()).unwrap_or(IDENT),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -380,7 +380,7 @@ trait TokenConvertor {
|
||||||
IDENT => make_leaf!(Ident),
|
IDENT => make_leaf!(Ident),
|
||||||
k if k.is_keyword() => make_leaf!(Ident),
|
k if k.is_keyword() => make_leaf!(Ident),
|
||||||
k if k.is_literal() => make_leaf!(Literal),
|
k if k.is_literal() => make_leaf!(Literal),
|
||||||
LIFETIME => {
|
LIFETIME_IDENT => {
|
||||||
let char_unit = TextSize::of('\'');
|
let char_unit = TextSize::of('\'');
|
||||||
let r = TextRange::at(range.start(), char_unit);
|
let r = TextRange::at(range.start(), char_unit);
|
||||||
let apostrophe = tt::Leaf::from(tt::Punct {
|
let apostrophe = tt::Leaf::from(tt::Punct {
|
||||||
|
@ -620,7 +620,7 @@ impl<'a> TreeSink for TtTreeSink<'a> {
|
||||||
self.cursor = self.cursor.bump_subtree();
|
self.cursor = self.cursor.bump_subtree();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if kind == LIFETIME {
|
if kind == LIFETIME_IDENT {
|
||||||
n_tokens = 2;
|
n_tokens = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -283,6 +283,13 @@ fn name_ref_or_index(p: &mut Parser) {
|
||||||
m.complete(p, NAME_REF);
|
m.complete(p, NAME_REF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn lifetime(p: &mut Parser) {
|
||||||
|
assert!(p.at(LIFETIME_IDENT));
|
||||||
|
let m = p.start();
|
||||||
|
p.bump(LIFETIME_IDENT);
|
||||||
|
m.complete(p, LIFETIME);
|
||||||
|
}
|
||||||
|
|
||||||
fn error_block(p: &mut Parser, message: &str) {
|
fn error_block(p: &mut Parser, message: &str) {
|
||||||
assert!(p.at(T!['{']));
|
assert!(p.at(T!['{']));
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
|
|
|
@ -48,7 +48,7 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet =
|
||||||
T![try],
|
T![try],
|
||||||
T![loop],
|
T![loop],
|
||||||
T![for],
|
T![for],
|
||||||
LIFETIME,
|
LIFETIME_IDENT,
|
||||||
]));
|
]));
|
||||||
|
|
||||||
const EXPR_RECOVERY_SET: TokenSet = TokenSet::new(&[LET_KW, R_DOLLAR]);
|
const EXPR_RECOVERY_SET: TokenSet = TokenSet::new(&[LET_KW, R_DOLLAR]);
|
||||||
|
@ -75,7 +75,7 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar
|
||||||
T![for] => for_expr(p, None),
|
T![for] => for_expr(p, None),
|
||||||
T![while] => while_expr(p, None),
|
T![while] => while_expr(p, None),
|
||||||
T![try] => try_block_expr(p, None),
|
T![try] => try_block_expr(p, None),
|
||||||
LIFETIME if la == T![:] => {
|
LIFETIME_IDENT if la == T![:] => {
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
label(p);
|
label(p);
|
||||||
match p.current() {
|
match p.current() {
|
||||||
|
@ -275,9 +275,9 @@ fn if_expr(p: &mut Parser) -> CompletedMarker {
|
||||||
// 'c: for x in () {}
|
// 'c: for x in () {}
|
||||||
// }
|
// }
|
||||||
fn label(p: &mut Parser) {
|
fn label(p: &mut Parser) {
|
||||||
assert!(p.at(LIFETIME) && p.nth(1) == T![:]);
|
assert!(p.at(LIFETIME_IDENT) && p.nth(1) == T![:]);
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
p.bump(LIFETIME);
|
lifetime(p);
|
||||||
p.bump_any();
|
p.bump_any();
|
||||||
m.complete(p, LABEL);
|
m.complete(p, LABEL);
|
||||||
}
|
}
|
||||||
|
@ -501,7 +501,9 @@ fn continue_expr(p: &mut Parser) -> CompletedMarker {
|
||||||
assert!(p.at(T![continue]));
|
assert!(p.at(T![continue]));
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
p.bump(T![continue]);
|
p.bump(T![continue]);
|
||||||
p.eat(LIFETIME);
|
if p.at(LIFETIME_IDENT) {
|
||||||
|
lifetime(p);
|
||||||
|
}
|
||||||
m.complete(p, CONTINUE_EXPR)
|
m.complete(p, CONTINUE_EXPR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -518,7 +520,9 @@ fn break_expr(p: &mut Parser, r: Restrictions) -> CompletedMarker {
|
||||||
assert!(p.at(T![break]));
|
assert!(p.at(T![break]));
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
p.bump(T![break]);
|
p.bump(T![break]);
|
||||||
p.eat(LIFETIME);
|
if p.at(LIFETIME_IDENT) {
|
||||||
|
lifetime(p);
|
||||||
|
}
|
||||||
// test break_ambiguity
|
// test break_ambiguity
|
||||||
// fn foo(){
|
// fn foo(){
|
||||||
// if break {}
|
// if break {}
|
||||||
|
|
|
@ -98,10 +98,10 @@ fn choose_type_params_over_qpath(p: &Parser) -> bool {
|
||||||
// `<` `>` - empty generic parameters
|
// `<` `>` - empty generic parameters
|
||||||
// `<` `#` - generic parameters with attributes
|
// `<` `#` - generic parameters with attributes
|
||||||
// `<` `const` - const generic parameters
|
// `<` `const` - const generic parameters
|
||||||
// `<` (LIFETIME|IDENT) `>` - single generic parameter
|
// `<` (LIFETIME_IDENT|IDENT) `>` - single generic parameter
|
||||||
// `<` (LIFETIME|IDENT) `,` - first generic parameter in a list
|
// `<` (LIFETIME_IDENT|IDENT) `,` - first generic parameter in a list
|
||||||
// `<` (LIFETIME|IDENT) `:` - generic parameter with bounds
|
// `<` (LIFETIME_IDENT|IDENT) `:` - generic parameter with bounds
|
||||||
// `<` (LIFETIME|IDENT) `=` - generic parameter with a default
|
// `<` (LIFETIME_IDENT|IDENT) `=` - generic parameter with a default
|
||||||
// The only truly ambiguous case is
|
// The only truly ambiguous case is
|
||||||
// `<` IDENT `>` `::` IDENT ...
|
// `<` IDENT `>` `::` IDENT ...
|
||||||
// we disambiguate it in favor of generics (`impl<T> ::absolute::Path<T> { ... }`)
|
// we disambiguate it in favor of generics (`impl<T> ::absolute::Path<T> { ... }`)
|
||||||
|
@ -113,7 +113,7 @@ fn choose_type_params_over_qpath(p: &Parser) -> bool {
|
||||||
if p.nth(1) == T![#] || p.nth(1) == T![>] || p.nth(1) == CONST_KW {
|
if p.nth(1) == T![#] || p.nth(1) == T![>] || p.nth(1) == CONST_KW {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
(p.nth(1) == LIFETIME || p.nth(1) == IDENT)
|
(p.nth(1) == LIFETIME_IDENT || p.nth(1) == IDENT)
|
||||||
&& (p.nth(2) == T![>] || p.nth(2) == T![,] || p.nth(2) == T![:] || p.nth(2) == T![=])
|
&& (p.nth(2) == T![>] || p.nth(2) == T![,] || p.nth(2) == T![:] || p.nth(2) == T![=])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,15 +169,20 @@ fn opt_self_param(p: &mut Parser) {
|
||||||
let la1 = p.nth(1);
|
let la1 = p.nth(1);
|
||||||
let la2 = p.nth(2);
|
let la2 = p.nth(2);
|
||||||
let la3 = p.nth(3);
|
let la3 = p.nth(3);
|
||||||
let n_toks = match (p.current(), la1, la2, la3) {
|
let mut n_toks = match (p.current(), la1, la2, la3) {
|
||||||
(T![&], T![self], _, _) => 2,
|
(T![&], T![self], _, _) => 2,
|
||||||
(T![&], T![mut], T![self], _) => 3,
|
(T![&], T![mut], T![self], _) => 3,
|
||||||
(T![&], LIFETIME, T![self], _) => 3,
|
(T![&], LIFETIME_IDENT, T![self], _) => 3,
|
||||||
(T![&], LIFETIME, T![mut], T![self]) => 4,
|
(T![&], LIFETIME_IDENT, T![mut], T![self]) => 4,
|
||||||
_ => return,
|
_ => return,
|
||||||
};
|
};
|
||||||
m = p.start();
|
m = p.start();
|
||||||
for _ in 0..n_toks {
|
p.bump_any();
|
||||||
|
if p.at(LIFETIME_IDENT) {
|
||||||
|
lifetime(p);
|
||||||
|
n_toks -= 1;
|
||||||
|
}
|
||||||
|
for _ in 1..n_toks {
|
||||||
p.bump_any();
|
p.bump_any();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,8 @@ pub(super) fn opt_generic_arg_list(p: &mut Parser, colon_colon_required: bool) {
|
||||||
fn generic_arg(p: &mut Parser) {
|
fn generic_arg(p: &mut Parser) {
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LIFETIME => {
|
LIFETIME_IDENT => {
|
||||||
p.bump(LIFETIME);
|
lifetime(p);
|
||||||
m.complete(p, LIFETIME_ARG);
|
m.complete(p, LIFETIME_ARG);
|
||||||
}
|
}
|
||||||
// test associated_type_bounds
|
// test associated_type_bounds
|
||||||
|
|
|
@ -23,7 +23,7 @@ fn generic_param_list(p: &mut Parser) {
|
||||||
attributes::outer_attrs(p);
|
attributes::outer_attrs(p);
|
||||||
|
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LIFETIME => lifetime_param(p, m),
|
LIFETIME_IDENT => lifetime_param(p, m),
|
||||||
IDENT => type_param(p, m),
|
IDENT => type_param(p, m),
|
||||||
CONST_KW => const_param(p, m),
|
CONST_KW => const_param(p, m),
|
||||||
_ => {
|
_ => {
|
||||||
|
@ -40,8 +40,8 @@ fn generic_param_list(p: &mut Parser) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lifetime_param(p: &mut Parser, m: Marker) {
|
fn lifetime_param(p: &mut Parser, m: Marker) {
|
||||||
assert!(p.at(LIFETIME));
|
assert!(p.at(LIFETIME_IDENT));
|
||||||
p.bump(LIFETIME);
|
lifetime(p);
|
||||||
if p.at(T![:]) {
|
if p.at(T![:]) {
|
||||||
lifetime_bounds(p);
|
lifetime_bounds(p);
|
||||||
}
|
}
|
||||||
|
@ -84,8 +84,8 @@ pub(super) fn bounds(p: &mut Parser) {
|
||||||
fn lifetime_bounds(p: &mut Parser) {
|
fn lifetime_bounds(p: &mut Parser) {
|
||||||
assert!(p.at(T![:]));
|
assert!(p.at(T![:]));
|
||||||
p.bump(T![:]);
|
p.bump(T![:]);
|
||||||
while p.at(LIFETIME) {
|
while p.at(LIFETIME_IDENT) {
|
||||||
p.bump(LIFETIME);
|
lifetime(p);
|
||||||
if !p.eat(T![+]) {
|
if !p.eat(T![+]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ fn type_bound(p: &mut Parser) -> bool {
|
||||||
let has_paren = p.eat(T!['(']);
|
let has_paren = p.eat(T!['(']);
|
||||||
p.eat(T![?]);
|
p.eat(T![?]);
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LIFETIME => p.bump(LIFETIME),
|
LIFETIME_IDENT => lifetime(p),
|
||||||
T![for] => types::for_type(p),
|
T![for] => types::for_type(p),
|
||||||
_ if paths::is_use_path_start(p) => types::path_type_(p, false),
|
_ if paths::is_use_path_start(p) => types::path_type_(p, false),
|
||||||
_ => {
|
_ => {
|
||||||
|
@ -162,7 +162,7 @@ pub(super) fn opt_where_clause(p: &mut Parser) {
|
||||||
|
|
||||||
fn is_where_predicate(p: &mut Parser) -> bool {
|
fn is_where_predicate(p: &mut Parser) -> bool {
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LIFETIME => true,
|
LIFETIME_IDENT => true,
|
||||||
T![impl] => false,
|
T![impl] => false,
|
||||||
token => types::TYPE_FIRST.contains(token),
|
token => types::TYPE_FIRST.contains(token),
|
||||||
}
|
}
|
||||||
|
@ -175,8 +175,8 @@ fn is_where_clause_end(p: &mut Parser) -> bool {
|
||||||
fn where_predicate(p: &mut Parser) {
|
fn where_predicate(p: &mut Parser) {
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LIFETIME => {
|
LIFETIME_IDENT => {
|
||||||
p.bump(LIFETIME);
|
lifetime(p);
|
||||||
if p.at(T![:]) {
|
if p.at(T![:]) {
|
||||||
bounds(p);
|
bounds(p);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -167,7 +167,9 @@ fn ref_type(p: &mut Parser) {
|
||||||
assert!(p.at(T![&]));
|
assert!(p.at(T![&]));
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
p.bump(T![&]);
|
p.bump(T![&]);
|
||||||
p.eat(LIFETIME);
|
if p.at(LIFETIME_IDENT) {
|
||||||
|
lifetime(p);
|
||||||
|
}
|
||||||
p.eat(T![mut]);
|
p.eat(T![mut]);
|
||||||
type_no_bounds(p);
|
type_no_bounds(p);
|
||||||
m.complete(p, REF_TYPE);
|
m.complete(p, REF_TYPE);
|
||||||
|
|
|
@ -116,7 +116,7 @@ pub enum SyntaxKind {
|
||||||
ERROR,
|
ERROR,
|
||||||
IDENT,
|
IDENT,
|
||||||
WHITESPACE,
|
WHITESPACE,
|
||||||
LIFETIME,
|
LIFETIME_IDENT,
|
||||||
COMMENT,
|
COMMENT,
|
||||||
SHEBANG,
|
SHEBANG,
|
||||||
L_DOLLAR,
|
L_DOLLAR,
|
||||||
|
@ -237,6 +237,7 @@ pub enum SyntaxKind {
|
||||||
TYPE_PARAM,
|
TYPE_PARAM,
|
||||||
CONST_PARAM,
|
CONST_PARAM,
|
||||||
GENERIC_ARG_LIST,
|
GENERIC_ARG_LIST,
|
||||||
|
LIFETIME,
|
||||||
LIFETIME_ARG,
|
LIFETIME_ARG,
|
||||||
TYPE_ARG,
|
TYPE_ARG,
|
||||||
ASSOC_TYPE_ARG,
|
ASSOC_TYPE_ARG,
|
||||||
|
@ -364,4 +365,4 @@ impl SyntaxKind {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
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 } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [lifetime] => { $ crate :: SyntaxKind :: LIFETIME } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; }
|
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 } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; }
|
||||||
|
|
|
@ -311,7 +311,7 @@ where
|
||||||
let pred = predicates.next().unwrap();
|
let pred = predicates.next().unwrap();
|
||||||
let mut bounds = pred.type_bound_list().unwrap().bounds();
|
let mut bounds = pred.type_bound_list().unwrap().bounds();
|
||||||
|
|
||||||
assert_eq!("'a", pred.lifetime_token().unwrap().text());
|
assert_eq!("'a", pred.lifetime().unwrap().lifetime_ident_token().unwrap().text());
|
||||||
|
|
||||||
assert_bound("'b", bounds.next());
|
assert_bound("'b", bounds.next());
|
||||||
assert_bound("'c", bounds.next());
|
assert_bound("'c", bounds.next());
|
||||||
|
|
|
@ -20,6 +20,15 @@ impl NameRef {
|
||||||
pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }
|
pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
pub struct Lifetime {
|
||||||
|
pub(crate) syntax: SyntaxNode,
|
||||||
|
}
|
||||||
|
impl Lifetime {
|
||||||
|
pub fn lifetime_ident_token(&self) -> Option<SyntaxToken> {
|
||||||
|
support::token(&self.syntax, T![lifetime_ident])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct Path {
|
pub struct Path {
|
||||||
pub(crate) syntax: SyntaxNode,
|
pub(crate) syntax: SyntaxNode,
|
||||||
}
|
}
|
||||||
|
@ -105,9 +114,7 @@ pub struct LifetimeArg {
|
||||||
pub(crate) syntax: SyntaxNode,
|
pub(crate) syntax: SyntaxNode,
|
||||||
}
|
}
|
||||||
impl LifetimeArg {
|
impl LifetimeArg {
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct ConstArg {
|
pub struct ConstArg {
|
||||||
|
@ -487,9 +494,7 @@ pub struct SelfParam {
|
||||||
impl ast::AttrsOwner for SelfParam {}
|
impl ast::AttrsOwner for SelfParam {}
|
||||||
impl SelfParam {
|
impl SelfParam {
|
||||||
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
|
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
|
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
|
||||||
pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
|
pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
|
||||||
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
|
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
|
||||||
|
@ -605,9 +610,7 @@ pub struct LifetimeParam {
|
||||||
impl ast::AttrsOwner for LifetimeParam {}
|
impl ast::AttrsOwner for LifetimeParam {}
|
||||||
impl ast::TypeBoundsOwner for LifetimeParam {}
|
impl ast::TypeBoundsOwner for LifetimeParam {}
|
||||||
impl LifetimeParam {
|
impl LifetimeParam {
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct TypeParam {
|
pub struct TypeParam {
|
||||||
|
@ -628,9 +631,7 @@ impl ast::TypeBoundsOwner for WherePred {}
|
||||||
impl WherePred {
|
impl WherePred {
|
||||||
pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
|
pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
|
||||||
pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
|
pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
@ -706,9 +707,7 @@ pub struct BreakExpr {
|
||||||
impl ast::AttrsOwner for BreakExpr {}
|
impl ast::AttrsOwner for BreakExpr {}
|
||||||
impl BreakExpr {
|
impl BreakExpr {
|
||||||
pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }
|
pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
|
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
@ -752,9 +751,7 @@ impl ContinueExpr {
|
||||||
pub fn continue_token(&self) -> Option<SyntaxToken> {
|
pub fn continue_token(&self) -> Option<SyntaxToken> {
|
||||||
support::token(&self.syntax, T![continue])
|
support::token(&self.syntax, T![continue])
|
||||||
}
|
}
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct EffectExpr {
|
pub struct EffectExpr {
|
||||||
|
@ -937,9 +934,8 @@ pub struct Label {
|
||||||
pub(crate) syntax: SyntaxNode,
|
pub(crate) syntax: SyntaxNode,
|
||||||
}
|
}
|
||||||
impl Label {
|
impl Label {
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct RecordExprFieldList {
|
pub struct RecordExprFieldList {
|
||||||
|
@ -1100,9 +1096,7 @@ pub struct RefType {
|
||||||
}
|
}
|
||||||
impl RefType {
|
impl RefType {
|
||||||
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
|
pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
|
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
|
||||||
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
||||||
}
|
}
|
||||||
|
@ -1129,9 +1123,7 @@ pub struct TypeBound {
|
||||||
pub(crate) syntax: SyntaxNode,
|
pub(crate) syntax: SyntaxNode,
|
||||||
}
|
}
|
||||||
impl TypeBound {
|
impl TypeBound {
|
||||||
pub fn lifetime_token(&self) -> Option<SyntaxToken> {
|
pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }
|
||||||
support::token(&self.syntax, T![lifetime])
|
|
||||||
}
|
|
||||||
pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
|
pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
|
||||||
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
|
||||||
}
|
}
|
||||||
|
@ -1438,6 +1430,17 @@ impl AstNode for NameRef {
|
||||||
}
|
}
|
||||||
fn syntax(&self) -> &SyntaxNode { &self.syntax }
|
fn syntax(&self) -> &SyntaxNode { &self.syntax }
|
||||||
}
|
}
|
||||||
|
impl AstNode for Lifetime {
|
||||||
|
fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME }
|
||||||
|
fn cast(syntax: SyntaxNode) -> Option<Self> {
|
||||||
|
if Self::can_cast(syntax.kind()) {
|
||||||
|
Some(Self { syntax })
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn syntax(&self) -> &SyntaxNode { &self.syntax }
|
||||||
|
}
|
||||||
impl AstNode for Path {
|
impl AstNode for Path {
|
||||||
fn can_cast(kind: SyntaxKind) -> bool { kind == PATH }
|
fn can_cast(kind: SyntaxKind) -> bool { kind == PATH }
|
||||||
fn cast(syntax: SyntaxNode) -> Option<Self> {
|
fn cast(syntax: SyntaxNode) -> Option<Self> {
|
||||||
|
@ -3524,6 +3527,11 @@ impl std::fmt::Display for NameRef {
|
||||||
std::fmt::Display::fmt(self.syntax(), f)
|
std::fmt::Display::fmt(self.syntax(), f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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 std::fmt::Display for Path {
|
impl std::fmt::Display for Path {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
std::fmt::Display::fmt(self.syntax(), f)
|
std::fmt::Display::fmt(self.syntax(), f)
|
||||||
|
|
|
@ -12,6 +12,12 @@ use crate::{
|
||||||
SmolStr, SyntaxElement, SyntaxToken, T,
|
SmolStr, SyntaxElement, SyntaxToken, T,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
impl ast::Lifetime {
|
||||||
|
pub fn text(&self) -> &SmolStr {
|
||||||
|
text_of_first_token(self.syntax())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ast::Name {
|
impl ast::Name {
|
||||||
pub fn text(&self) -> &SmolStr {
|
pub fn text(&self) -> &SmolStr {
|
||||||
text_of_first_token(self.syntax())
|
text_of_first_token(self.syntax())
|
||||||
|
@ -393,7 +399,7 @@ pub enum TypeBoundKind {
|
||||||
/// for<'a> ...
|
/// for<'a> ...
|
||||||
ForType(ast::ForType),
|
ForType(ast::ForType),
|
||||||
/// 'a
|
/// 'a
|
||||||
Lifetime(SyntaxToken),
|
Lifetime(ast::Lifetime),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ast::TypeBound {
|
impl ast::TypeBound {
|
||||||
|
@ -402,7 +408,7 @@ impl ast::TypeBound {
|
||||||
TypeBoundKind::PathType(path_type)
|
TypeBoundKind::PathType(path_type)
|
||||||
} else if let Some(for_type) = support::children(self.syntax()).next() {
|
} else if let Some(for_type) = support::children(self.syntax()).next() {
|
||||||
TypeBoundKind::ForType(for_type)
|
TypeBoundKind::ForType(for_type)
|
||||||
} else if let Some(lifetime) = self.lifetime_token() {
|
} else if let Some(lifetime) = self.lifetime() {
|
||||||
TypeBoundKind::Lifetime(lifetime)
|
TypeBoundKind::Lifetime(lifetime)
|
||||||
} else {
|
} else {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
|
@ -440,7 +446,7 @@ impl ast::LifetimeParam {
|
||||||
.children_with_tokens()
|
.children_with_tokens()
|
||||||
.filter_map(|it| it.into_token())
|
.filter_map(|it| it.into_token())
|
||||||
.skip_while(|x| x.kind() != T![:])
|
.skip_while(|x| x.kind() != T![:])
|
||||||
.filter(|it| it.kind() == T![lifetime])
|
.filter(|it| it.kind() == T![lifetime_ident])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,9 +146,9 @@ fn rustc_token_kind_to_syntax_kind(
|
||||||
rustc_lexer::TokenKind::RawIdent => IDENT,
|
rustc_lexer::TokenKind::RawIdent => IDENT,
|
||||||
rustc_lexer::TokenKind::Literal { kind, .. } => return match_literal_kind(&kind),
|
rustc_lexer::TokenKind::Literal { kind, .. } => return match_literal_kind(&kind),
|
||||||
|
|
||||||
rustc_lexer::TokenKind::Lifetime { starts_with_number: false } => LIFETIME,
|
rustc_lexer::TokenKind::Lifetime { starts_with_number: false } => LIFETIME_IDENT,
|
||||||
rustc_lexer::TokenKind::Lifetime { starts_with_number: true } => {
|
rustc_lexer::TokenKind::Lifetime { starts_with_number: true } => {
|
||||||
return (LIFETIME, Some("Lifetime name cannot start with a number"))
|
return (LIFETIME_IDENT, Some("Lifetime name cannot start with a number"))
|
||||||
}
|
}
|
||||||
|
|
||||||
rustc_lexer::TokenKind::Semi => T![;],
|
rustc_lexer::TokenKind::Semi => T![;],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
LIFETIME 2 "\'1"
|
LIFETIME_IDENT 2 "\'1"
|
||||||
WHITESPACE 1 "\n"
|
WHITESPACE 1 "\n"
|
||||||
LIFETIME 10 "\'1lifetime"
|
LIFETIME_IDENT 10 "\'1lifetime"
|
||||||
WHITESPACE 1 "\n"
|
WHITESPACE 1 "\n"
|
||||||
> error0..2 token("\'1") msg(Lifetime name cannot start with a number)
|
> error0..2 token("\'1") msg(Lifetime name cannot start with a number)
|
||||||
> error3..13 token("\'1lifetime") msg(Lifetime name cannot start with a number)
|
> error3..13 token("\'1lifetime") msg(Lifetime name cannot start with a number)
|
|
@ -1,8 +1,8 @@
|
||||||
LIFETIME 2 "\'a"
|
LIFETIME_IDENT 2 "\'a"
|
||||||
WHITESPACE 1 " "
|
WHITESPACE 1 " "
|
||||||
LIFETIME 4 "\'foo"
|
LIFETIME_IDENT 4 "\'foo"
|
||||||
WHITESPACE 1 " "
|
WHITESPACE 1 " "
|
||||||
LIFETIME 12 "\'foo_bar_baz"
|
LIFETIME_IDENT 12 "\'foo_bar_baz"
|
||||||
WHITESPACE 1 " "
|
WHITESPACE 1 " "
|
||||||
LIFETIME 2 "\'_"
|
LIFETIME_IDENT 2 "\'_"
|
||||||
WHITESPACE 1 "\n"
|
WHITESPACE 1 "\n"
|
||||||
|
|
|
@ -42,7 +42,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_PARAM_LIST@32..36
|
GENERIC_PARAM_LIST@32..36
|
||||||
L_ANGLE@32..33 "<"
|
L_ANGLE@32..33 "<"
|
||||||
LIFETIME_PARAM@33..35
|
LIFETIME_PARAM@33..35
|
||||||
LIFETIME@33..35 "\'a"
|
LIFETIME@33..35
|
||||||
|
LIFETIME_IDENT@33..35 "\'a"
|
||||||
R_ANGLE@35..36 ">"
|
R_ANGLE@35..36 ">"
|
||||||
WHITESPACE@36..37 " "
|
WHITESPACE@36..37 " "
|
||||||
PATH_TYPE@37..46
|
PATH_TYPE@37..46
|
||||||
|
@ -53,7 +54,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_ARG_LIST@42..46
|
GENERIC_ARG_LIST@42..46
|
||||||
L_ANGLE@42..43 "<"
|
L_ANGLE@42..43 "<"
|
||||||
LIFETIME_ARG@43..45
|
LIFETIME_ARG@43..45
|
||||||
LIFETIME@43..45 "\'a"
|
LIFETIME@43..45
|
||||||
|
LIFETIME_IDENT@43..45 "\'a"
|
||||||
R_ANGLE@45..46 ">"
|
R_ANGLE@45..46 ">"
|
||||||
R_PAREN@46..47 ")"
|
R_PAREN@46..47 ")"
|
||||||
R_ANGLE@47..48 ">"
|
R_ANGLE@47..48 ">"
|
||||||
|
@ -125,7 +127,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_PARAM_LIST@106..110
|
GENERIC_PARAM_LIST@106..110
|
||||||
L_ANGLE@106..107 "<"
|
L_ANGLE@106..107 "<"
|
||||||
LIFETIME_PARAM@107..109
|
LIFETIME_PARAM@107..109
|
||||||
LIFETIME@107..109 "\'a"
|
LIFETIME@107..109
|
||||||
|
LIFETIME_IDENT@107..109 "\'a"
|
||||||
R_ANGLE@109..110 ">"
|
R_ANGLE@109..110 ">"
|
||||||
WHITESPACE@110..111 " "
|
WHITESPACE@110..111 " "
|
||||||
PATH_TYPE@111..120
|
PATH_TYPE@111..120
|
||||||
|
@ -136,7 +139,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_ARG_LIST@116..120
|
GENERIC_ARG_LIST@116..120
|
||||||
L_ANGLE@116..117 "<"
|
L_ANGLE@116..117 "<"
|
||||||
LIFETIME_ARG@117..119
|
LIFETIME_ARG@117..119
|
||||||
LIFETIME@117..119 "\'a"
|
LIFETIME@117..119
|
||||||
|
LIFETIME_IDENT@117..119 "\'a"
|
||||||
R_ANGLE@119..120 ">"
|
R_ANGLE@119..120 ">"
|
||||||
R_PAREN@120..121 ")"
|
R_PAREN@120..121 ")"
|
||||||
EXPR_STMT@121..123
|
EXPR_STMT@121..123
|
||||||
|
@ -187,7 +191,7 @@ SOURCE_FILE@0..240
|
||||||
PATH_SEGMENT@154..158
|
PATH_SEGMENT@154..158
|
||||||
L_ANGLE@154..155 "<"
|
L_ANGLE@154..155 "<"
|
||||||
ERROR@155..157
|
ERROR@155..157
|
||||||
LIFETIME@155..157 "\'a"
|
LIFETIME_IDENT@155..157 "\'a"
|
||||||
R_ANGLE@157..158 ">"
|
R_ANGLE@157..158 ">"
|
||||||
WHITESPACE@158..159 " "
|
WHITESPACE@158..159 " "
|
||||||
BIN_EXPR@159..180
|
BIN_EXPR@159..180
|
||||||
|
@ -201,7 +205,7 @@ SOURCE_FILE@0..240
|
||||||
IDENT@159..164 "Trait"
|
IDENT@159..164 "Trait"
|
||||||
L_ANGLE@164..165 "<"
|
L_ANGLE@164..165 "<"
|
||||||
ERROR@165..167
|
ERROR@165..167
|
||||||
LIFETIME@165..167 "\'a"
|
LIFETIME_IDENT@165..167 "\'a"
|
||||||
R_ANGLE@167..168 ">"
|
R_ANGLE@167..168 ">"
|
||||||
ERROR@168..169
|
ERROR@168..169
|
||||||
R_PAREN@168..169 ")"
|
R_PAREN@168..169 ")"
|
||||||
|
@ -245,7 +249,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_PARAM_LIST@200..204
|
GENERIC_PARAM_LIST@200..204
|
||||||
L_ANGLE@200..201 "<"
|
L_ANGLE@200..201 "<"
|
||||||
LIFETIME_PARAM@201..203
|
LIFETIME_PARAM@201..203
|
||||||
LIFETIME@201..203 "\'a"
|
LIFETIME@201..203
|
||||||
|
LIFETIME_IDENT@201..203 "\'a"
|
||||||
R_ANGLE@203..204 ">"
|
R_ANGLE@203..204 ">"
|
||||||
WHITESPACE@204..205 " "
|
WHITESPACE@204..205 " "
|
||||||
PATH_TYPE@205..214
|
PATH_TYPE@205..214
|
||||||
|
@ -256,7 +261,8 @@ SOURCE_FILE@0..240
|
||||||
GENERIC_ARG_LIST@210..214
|
GENERIC_ARG_LIST@210..214
|
||||||
L_ANGLE@210..211 "<"
|
L_ANGLE@210..211 "<"
|
||||||
LIFETIME_ARG@211..213
|
LIFETIME_ARG@211..213
|
||||||
LIFETIME@211..213 "\'a"
|
LIFETIME@211..213
|
||||||
|
LIFETIME_IDENT@211..213 "\'a"
|
||||||
R_ANGLE@213..214 ">"
|
R_ANGLE@213..214 ">"
|
||||||
R_PAREN@214..215 ")"
|
R_PAREN@214..215 ")"
|
||||||
WHITESPACE@215..216 " "
|
WHITESPACE@215..216 " "
|
||||||
|
|
|
@ -16,7 +16,8 @@ SOURCE_FILE@0..30
|
||||||
GENERIC_PARAM_LIST@22..26
|
GENERIC_PARAM_LIST@22..26
|
||||||
L_ANGLE@22..23 "<"
|
L_ANGLE@22..23 "<"
|
||||||
LIFETIME_PARAM@23..25
|
LIFETIME_PARAM@23..25
|
||||||
LIFETIME@23..25 "\'a"
|
LIFETIME@23..25
|
||||||
|
LIFETIME_IDENT@23..25 "\'a"
|
||||||
R_ANGLE@25..26 ">"
|
R_ANGLE@25..26 ">"
|
||||||
WHITESPACE@26..27 "\n"
|
WHITESPACE@26..27 "\n"
|
||||||
BLOCK_EXPR@27..29
|
BLOCK_EXPR@27..29
|
||||||
|
|
|
@ -54,7 +54,8 @@ SOURCE_FILE@0..83
|
||||||
EXPR_STMT@68..75
|
EXPR_STMT@68..75
|
||||||
ERROR@68..75
|
ERROR@68..75
|
||||||
LABEL@68..75
|
LABEL@68..75
|
||||||
LIFETIME@68..74 "\'label"
|
LIFETIME@68..74
|
||||||
|
LIFETIME_IDENT@68..74 "\'label"
|
||||||
COLON@74..75 ":"
|
COLON@74..75 ":"
|
||||||
WHITESPACE@75..76 " "
|
WHITESPACE@75..76 " "
|
||||||
LITERAL@76..78
|
LITERAL@76..78
|
||||||
|
|
|
@ -12,12 +12,14 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@17..21
|
GENERIC_PARAM_LIST@17..21
|
||||||
L_ANGLE@17..18 "<"
|
L_ANGLE@17..18 "<"
|
||||||
LIFETIME_PARAM@18..20
|
LIFETIME_PARAM@18..20
|
||||||
LIFETIME@18..20 "\'a"
|
LIFETIME@18..20
|
||||||
|
LIFETIME_IDENT@18..20 "\'a"
|
||||||
R_ANGLE@20..21 ">"
|
R_ANGLE@20..21 ">"
|
||||||
WHITESPACE@21..22 " "
|
WHITESPACE@21..22 " "
|
||||||
REF_TYPE@22..29
|
REF_TYPE@22..29
|
||||||
AMP@22..23 "&"
|
AMP@22..23 "&"
|
||||||
LIFETIME@23..25 "\'a"
|
LIFETIME@23..25
|
||||||
|
LIFETIME_IDENT@23..25 "\'a"
|
||||||
WHITESPACE@25..26 " "
|
WHITESPACE@25..26 " "
|
||||||
PATH_TYPE@26..29
|
PATH_TYPE@26..29
|
||||||
PATH@26..29
|
PATH@26..29
|
||||||
|
@ -39,14 +41,16 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@48..52
|
GENERIC_PARAM_LIST@48..52
|
||||||
L_ANGLE@48..49 "<"
|
L_ANGLE@48..49 "<"
|
||||||
LIFETIME_PARAM@49..51
|
LIFETIME_PARAM@49..51
|
||||||
LIFETIME@49..51 "\'a"
|
LIFETIME@49..51
|
||||||
|
LIFETIME_IDENT@49..51 "\'a"
|
||||||
R_ANGLE@51..52 ">"
|
R_ANGLE@51..52 ">"
|
||||||
WHITESPACE@52..53 " "
|
WHITESPACE@52..53 " "
|
||||||
TUPLE_TYPE@53..63
|
TUPLE_TYPE@53..63
|
||||||
L_PAREN@53..54 "("
|
L_PAREN@53..54 "("
|
||||||
REF_TYPE@54..61
|
REF_TYPE@54..61
|
||||||
AMP@54..55 "&"
|
AMP@54..55 "&"
|
||||||
LIFETIME@55..57 "\'a"
|
LIFETIME@55..57
|
||||||
|
LIFETIME_IDENT@55..57 "\'a"
|
||||||
WHITESPACE@57..58 " "
|
WHITESPACE@57..58 " "
|
||||||
PATH_TYPE@58..61
|
PATH_TYPE@58..61
|
||||||
PATH@58..61
|
PATH@58..61
|
||||||
|
@ -70,7 +74,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@84..88
|
GENERIC_PARAM_LIST@84..88
|
||||||
L_ANGLE@84..85 "<"
|
L_ANGLE@84..85 "<"
|
||||||
LIFETIME_PARAM@85..87
|
LIFETIME_PARAM@85..87
|
||||||
LIFETIME@85..87 "\'a"
|
LIFETIME@85..87
|
||||||
|
LIFETIME_IDENT@85..87 "\'a"
|
||||||
R_ANGLE@87..88 ">"
|
R_ANGLE@87..88 ">"
|
||||||
WHITESPACE@88..89 " "
|
WHITESPACE@88..89 " "
|
||||||
SLICE_TYPE@89..94
|
SLICE_TYPE@89..94
|
||||||
|
@ -96,7 +101,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@115..119
|
GENERIC_PARAM_LIST@115..119
|
||||||
L_ANGLE@115..116 "<"
|
L_ANGLE@115..116 "<"
|
||||||
LIFETIME_PARAM@116..118
|
LIFETIME_PARAM@116..118
|
||||||
LIFETIME@116..118 "\'a"
|
LIFETIME@116..118
|
||||||
|
LIFETIME_IDENT@116..118 "\'a"
|
||||||
R_ANGLE@118..119 ">"
|
R_ANGLE@118..119 ">"
|
||||||
WHITESPACE@119..120 " "
|
WHITESPACE@119..120 " "
|
||||||
FOR_TYPE@120..148
|
FOR_TYPE@120..148
|
||||||
|
@ -104,7 +110,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@123..127
|
GENERIC_PARAM_LIST@123..127
|
||||||
L_ANGLE@123..124 "<"
|
L_ANGLE@123..124 "<"
|
||||||
LIFETIME_PARAM@124..126
|
LIFETIME_PARAM@124..126
|
||||||
LIFETIME@124..126 "\'b"
|
LIFETIME@124..126
|
||||||
|
LIFETIME_IDENT@124..126 "\'b"
|
||||||
R_ANGLE@126..127 ">"
|
R_ANGLE@126..127 ">"
|
||||||
WHITESPACE@127..128 " "
|
WHITESPACE@127..128 " "
|
||||||
FN_PTR_TYPE@128..148
|
FN_PTR_TYPE@128..148
|
||||||
|
@ -114,7 +121,8 @@ SOURCE_FILE@0..239
|
||||||
PARAM@131..138
|
PARAM@131..138
|
||||||
REF_TYPE@131..138
|
REF_TYPE@131..138
|
||||||
AMP@131..132 "&"
|
AMP@131..132 "&"
|
||||||
LIFETIME@132..134 "\'a"
|
LIFETIME@132..134
|
||||||
|
LIFETIME_IDENT@132..134 "\'a"
|
||||||
WHITESPACE@134..135 " "
|
WHITESPACE@134..135 " "
|
||||||
PATH_TYPE@135..138
|
PATH_TYPE@135..138
|
||||||
PATH@135..138
|
PATH@135..138
|
||||||
|
@ -126,7 +134,8 @@ SOURCE_FILE@0..239
|
||||||
PARAM@140..147
|
PARAM@140..147
|
||||||
REF_TYPE@140..147
|
REF_TYPE@140..147
|
||||||
AMP@140..141 "&"
|
AMP@140..141 "&"
|
||||||
LIFETIME@141..143 "\'b"
|
LIFETIME@141..143
|
||||||
|
LIFETIME_IDENT@141..143 "\'b"
|
||||||
WHITESPACE@143..144 " "
|
WHITESPACE@143..144 " "
|
||||||
PATH_TYPE@144..147
|
PATH_TYPE@144..147
|
||||||
PATH@144..147
|
PATH@144..147
|
||||||
|
@ -159,7 +168,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@183..187
|
GENERIC_PARAM_LIST@183..187
|
||||||
L_ANGLE@183..184 "<"
|
L_ANGLE@183..184 "<"
|
||||||
LIFETIME_PARAM@184..186
|
LIFETIME_PARAM@184..186
|
||||||
LIFETIME@184..186 "\'a"
|
LIFETIME@184..186
|
||||||
|
LIFETIME_IDENT@184..186 "\'a"
|
||||||
R_ANGLE@186..187 ">"
|
R_ANGLE@186..187 ">"
|
||||||
WHITESPACE@187..188 " "
|
WHITESPACE@187..188 " "
|
||||||
FOR_TYPE@188..227
|
FOR_TYPE@188..227
|
||||||
|
@ -167,7 +177,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@191..195
|
GENERIC_PARAM_LIST@191..195
|
||||||
L_ANGLE@191..192 "<"
|
L_ANGLE@191..192 "<"
|
||||||
LIFETIME_PARAM@192..194
|
LIFETIME_PARAM@192..194
|
||||||
LIFETIME@192..194 "\'b"
|
LIFETIME@192..194
|
||||||
|
LIFETIME_IDENT@192..194 "\'b"
|
||||||
R_ANGLE@194..195 ">"
|
R_ANGLE@194..195 ">"
|
||||||
WHITESPACE@195..196 " "
|
WHITESPACE@195..196 " "
|
||||||
FOR_TYPE@196..227
|
FOR_TYPE@196..227
|
||||||
|
@ -175,7 +186,8 @@ SOURCE_FILE@0..239
|
||||||
GENERIC_PARAM_LIST@199..203
|
GENERIC_PARAM_LIST@199..203
|
||||||
L_ANGLE@199..200 "<"
|
L_ANGLE@199..200 "<"
|
||||||
LIFETIME_PARAM@200..202
|
LIFETIME_PARAM@200..202
|
||||||
LIFETIME@200..202 "\'c"
|
LIFETIME@200..202
|
||||||
|
LIFETIME_IDENT@200..202 "\'c"
|
||||||
R_ANGLE@202..203 ">"
|
R_ANGLE@202..203 ">"
|
||||||
WHITESPACE@203..204 " "
|
WHITESPACE@203..204 " "
|
||||||
FN_PTR_TYPE@204..227
|
FN_PTR_TYPE@204..227
|
||||||
|
@ -185,7 +197,8 @@ SOURCE_FILE@0..239
|
||||||
PARAM@207..212
|
PARAM@207..212
|
||||||
REF_TYPE@207..212
|
REF_TYPE@207..212
|
||||||
AMP@207..208 "&"
|
AMP@207..208 "&"
|
||||||
LIFETIME@208..210 "\'a"
|
LIFETIME@208..210
|
||||||
|
LIFETIME_IDENT@208..210 "\'a"
|
||||||
WHITESPACE@210..211 " "
|
WHITESPACE@210..211 " "
|
||||||
PATH_TYPE@211..212
|
PATH_TYPE@211..212
|
||||||
PATH@211..212
|
PATH@211..212
|
||||||
|
@ -197,7 +210,8 @@ SOURCE_FILE@0..239
|
||||||
PARAM@214..219
|
PARAM@214..219
|
||||||
REF_TYPE@214..219
|
REF_TYPE@214..219
|
||||||
AMP@214..215 "&"
|
AMP@214..215 "&"
|
||||||
LIFETIME@215..217 "\'b"
|
LIFETIME@215..217
|
||||||
|
LIFETIME_IDENT@215..217 "\'b"
|
||||||
WHITESPACE@217..218 " "
|
WHITESPACE@217..218 " "
|
||||||
PATH_TYPE@218..219
|
PATH_TYPE@218..219
|
||||||
PATH@218..219
|
PATH@218..219
|
||||||
|
@ -209,7 +223,8 @@ SOURCE_FILE@0..239
|
||||||
PARAM@221..226
|
PARAM@221..226
|
||||||
REF_TYPE@221..226
|
REF_TYPE@221..226
|
||||||
AMP@221..222 "&"
|
AMP@221..222 "&"
|
||||||
LIFETIME@222..224 "\'c"
|
LIFETIME@222..224
|
||||||
|
LIFETIME_IDENT@222..224 "\'c"
|
||||||
WHITESPACE@224..225 " "
|
WHITESPACE@224..225 " "
|
||||||
PATH_TYPE@225..226
|
PATH_TYPE@225..226
|
||||||
PATH@225..226
|
PATH@225..226
|
||||||
|
|
|
@ -7,14 +7,16 @@ SOURCE_FILE@0..187
|
||||||
GENERIC_PARAM_LIST@8..12
|
GENERIC_PARAM_LIST@8..12
|
||||||
L_ANGLE@8..9 "<"
|
L_ANGLE@8..9 "<"
|
||||||
LIFETIME_PARAM@9..11
|
LIFETIME_PARAM@9..11
|
||||||
LIFETIME@9..11 "\'a"
|
LIFETIME@9..11
|
||||||
|
LIFETIME_IDENT@9..11 "\'a"
|
||||||
R_ANGLE@11..12 ">"
|
R_ANGLE@11..12 ">"
|
||||||
WHITESPACE@12..13 " "
|
WHITESPACE@12..13 " "
|
||||||
EQ@13..14 "="
|
EQ@13..14 "="
|
||||||
WHITESPACE@14..15 " "
|
WHITESPACE@14..15 " "
|
||||||
REF_TYPE@15..34
|
REF_TYPE@15..34
|
||||||
AMP@15..16 "&"
|
AMP@15..16 "&"
|
||||||
LIFETIME@16..18 "\'a"
|
LIFETIME@16..18
|
||||||
|
LIFETIME_IDENT@16..18 "\'a"
|
||||||
WHITESPACE@18..19 " "
|
WHITESPACE@18..19 " "
|
||||||
DYN_TRAIT_TYPE@19..34
|
DYN_TRAIT_TYPE@19..34
|
||||||
DYN_KW@19..22 "dyn"
|
DYN_KW@19..22 "dyn"
|
||||||
|
@ -101,7 +103,8 @@ SOURCE_FILE@0..187
|
||||||
PLUS@99..100 "+"
|
PLUS@99..100 "+"
|
||||||
WHITESPACE@100..101 " "
|
WHITESPACE@100..101 " "
|
||||||
TYPE_BOUND@101..108
|
TYPE_BOUND@101..108
|
||||||
LIFETIME@101..108 "\'static"
|
LIFETIME@101..108
|
||||||
|
LIFETIME_IDENT@101..108 "\'static"
|
||||||
SEMICOLON@108..109 ";"
|
SEMICOLON@108..109 ";"
|
||||||
WHITESPACE@109..110 "\n"
|
WHITESPACE@109..110 "\n"
|
||||||
FN@110..186
|
FN@110..186
|
||||||
|
|
|
@ -14,7 +14,8 @@ SOURCE_FILE@0..30
|
||||||
EXPR_STMT@16..22
|
EXPR_STMT@16..22
|
||||||
ERROR@16..22
|
ERROR@16..22
|
||||||
LABEL@16..22
|
LABEL@16..22
|
||||||
LIFETIME@16..21 "\'loop"
|
LIFETIME@16..21
|
||||||
|
LIFETIME_IDENT@16..21 "\'loop"
|
||||||
COLON@21..22 ":"
|
COLON@21..22 ":"
|
||||||
WHITESPACE@22..23 " "
|
WHITESPACE@22..23 " "
|
||||||
IMPL@23..27
|
IMPL@23..27
|
||||||
|
|
|
@ -22,7 +22,8 @@ SOURCE_FILE@0..54
|
||||||
GENERIC_PARAM_LIST@30..34
|
GENERIC_PARAM_LIST@30..34
|
||||||
L_ANGLE@30..31 "<"
|
L_ANGLE@30..31 "<"
|
||||||
LIFETIME_PARAM@31..33
|
LIFETIME_PARAM@31..33
|
||||||
LIFETIME@31..33 "\'a"
|
LIFETIME@31..33
|
||||||
|
LIFETIME_IDENT@31..33 "\'a"
|
||||||
R_ANGLE@33..34 ">"
|
R_ANGLE@33..34 ">"
|
||||||
WHITESPACE@34..35 " "
|
WHITESPACE@34..35 " "
|
||||||
PATH_TYPE@35..36
|
PATH_TYPE@35..36
|
||||||
|
@ -44,7 +45,8 @@ SOURCE_FILE@0..54
|
||||||
PARAM@41..48
|
PARAM@41..48
|
||||||
REF_TYPE@41..48
|
REF_TYPE@41..48
|
||||||
AMP@41..42 "&"
|
AMP@41..42 "&"
|
||||||
LIFETIME@42..44 "\'a"
|
LIFETIME@42..44
|
||||||
|
LIFETIME_IDENT@42..44 "\'a"
|
||||||
WHITESPACE@44..45 " "
|
WHITESPACE@44..45 " "
|
||||||
PATH_TYPE@45..48
|
PATH_TYPE@45..48
|
||||||
PATH@45..48
|
PATH@45..48
|
||||||
|
|
|
@ -52,7 +52,8 @@ SOURCE_FILE@0..128
|
||||||
L_PAREN@55..56 "("
|
L_PAREN@55..56 "("
|
||||||
SELF_PARAM@56..64
|
SELF_PARAM@56..64
|
||||||
AMP@56..57 "&"
|
AMP@56..57 "&"
|
||||||
LIFETIME@57..59 "\'a"
|
LIFETIME@57..59
|
||||||
|
LIFETIME_IDENT@57..59 "\'a"
|
||||||
WHITESPACE@59..60 " "
|
WHITESPACE@59..60 " "
|
||||||
SELF_KW@60..64 "self"
|
SELF_KW@60..64 "self"
|
||||||
COMMA@64..65 ","
|
COMMA@64..65 ","
|
||||||
|
@ -71,7 +72,8 @@ SOURCE_FILE@0..128
|
||||||
L_PAREN@78..79 "("
|
L_PAREN@78..79 "("
|
||||||
SELF_PARAM@79..91
|
SELF_PARAM@79..91
|
||||||
AMP@79..80 "&"
|
AMP@79..80 "&"
|
||||||
LIFETIME@80..82 "\'a"
|
LIFETIME@80..82
|
||||||
|
LIFETIME_IDENT@80..82 "\'a"
|
||||||
WHITESPACE@82..83 " "
|
WHITESPACE@82..83 " "
|
||||||
MUT_KW@83..86 "mut"
|
MUT_KW@83..86 "mut"
|
||||||
WHITESPACE@86..87 " "
|
WHITESPACE@86..87 " "
|
||||||
|
|
|
@ -13,7 +13,8 @@ SOURCE_FILE@0..35
|
||||||
WHITESPACE@11..12 " "
|
WHITESPACE@11..12 " "
|
||||||
TYPE_BOUND_LIST@12..32
|
TYPE_BOUND_LIST@12..32
|
||||||
TYPE_BOUND@12..14
|
TYPE_BOUND@12..14
|
||||||
LIFETIME@12..14 "\'a"
|
LIFETIME@12..14
|
||||||
|
LIFETIME_IDENT@12..14 "\'a"
|
||||||
WHITESPACE@14..15 " "
|
WHITESPACE@14..15 " "
|
||||||
PLUS@15..16 "+"
|
PLUS@15..16 "+"
|
||||||
WHITESPACE@16..17 " "
|
WHITESPACE@16..17 " "
|
||||||
|
|
|
@ -26,7 +26,8 @@ SOURCE_FILE@0..69
|
||||||
CONTINUE_EXPR@48..59
|
CONTINUE_EXPR@48..59
|
||||||
CONTINUE_KW@48..56 "continue"
|
CONTINUE_KW@48..56 "continue"
|
||||||
WHITESPACE@56..57 " "
|
WHITESPACE@56..57 " "
|
||||||
LIFETIME@57..59 "\'l"
|
LIFETIME@57..59
|
||||||
|
LIFETIME_IDENT@57..59 "\'l"
|
||||||
SEMICOLON@59..60 ";"
|
SEMICOLON@59..60 ";"
|
||||||
WHITESPACE@60..65 "\n "
|
WHITESPACE@60..65 "\n "
|
||||||
R_CURLY@65..66 "}"
|
R_CURLY@65..66 "}"
|
||||||
|
|
|
@ -31,13 +31,15 @@ SOURCE_FILE@0..43
|
||||||
GENERIC_ARG_LIST@31..35
|
GENERIC_ARG_LIST@31..35
|
||||||
L_ANGLE@31..32 "<"
|
L_ANGLE@31..32 "<"
|
||||||
LIFETIME_ARG@32..34
|
LIFETIME_ARG@32..34
|
||||||
LIFETIME@32..34 "\'a"
|
LIFETIME@32..34
|
||||||
|
LIFETIME_IDENT@32..34 "\'a"
|
||||||
R_ANGLE@34..35 ">"
|
R_ANGLE@34..35 ">"
|
||||||
R_ANGLE@35..36 ">"
|
R_ANGLE@35..36 ">"
|
||||||
WHITESPACE@36..37 " "
|
WHITESPACE@36..37 " "
|
||||||
PLUS@37..38 "+"
|
PLUS@37..38 "+"
|
||||||
WHITESPACE@38..39 " "
|
WHITESPACE@38..39 " "
|
||||||
TYPE_BOUND@39..41
|
TYPE_BOUND@39..41
|
||||||
LIFETIME@39..41 "\'a"
|
LIFETIME@39..41
|
||||||
|
LIFETIME_IDENT@39..41 "\'a"
|
||||||
SEMICOLON@41..42 ";"
|
SEMICOLON@41..42 ";"
|
||||||
WHITESPACE@42..43 "\n"
|
WHITESPACE@42..43 "\n"
|
||||||
|
|
|
@ -24,7 +24,8 @@ SOURCE_FILE@0..54
|
||||||
WHITESPACE@22..23 " "
|
WHITESPACE@22..23 " "
|
||||||
REF_TYPE@23..34
|
REF_TYPE@23..34
|
||||||
AMP@23..24 "&"
|
AMP@23..24 "&"
|
||||||
LIFETIME@24..31 "\'static"
|
LIFETIME@24..31
|
||||||
|
LIFETIME_IDENT@24..31 "\'static"
|
||||||
WHITESPACE@31..32 " "
|
WHITESPACE@31..32 " "
|
||||||
TUPLE_TYPE@32..34
|
TUPLE_TYPE@32..34
|
||||||
L_PAREN@32..33 "("
|
L_PAREN@32..33 "("
|
||||||
|
|
|
@ -26,7 +26,8 @@ SOURCE_FILE@0..102
|
||||||
BREAK_EXPR@45..53
|
BREAK_EXPR@45..53
|
||||||
BREAK_KW@45..50 "break"
|
BREAK_KW@45..50 "break"
|
||||||
WHITESPACE@50..51 " "
|
WHITESPACE@50..51 " "
|
||||||
LIFETIME@51..53 "\'l"
|
LIFETIME@51..53
|
||||||
|
LIFETIME_IDENT@51..53 "\'l"
|
||||||
SEMICOLON@53..54 ";"
|
SEMICOLON@53..54 ";"
|
||||||
WHITESPACE@54..63 "\n "
|
WHITESPACE@54..63 "\n "
|
||||||
EXPR_STMT@63..72
|
EXPR_STMT@63..72
|
||||||
|
@ -41,7 +42,8 @@ SOURCE_FILE@0..102
|
||||||
BREAK_EXPR@81..92
|
BREAK_EXPR@81..92
|
||||||
BREAK_KW@81..86 "break"
|
BREAK_KW@81..86 "break"
|
||||||
WHITESPACE@86..87 " "
|
WHITESPACE@86..87 " "
|
||||||
LIFETIME@87..89 "\'l"
|
LIFETIME@87..89
|
||||||
|
LIFETIME_IDENT@87..89 "\'l"
|
||||||
WHITESPACE@89..90 " "
|
WHITESPACE@89..90 " "
|
||||||
LITERAL@90..92
|
LITERAL@90..92
|
||||||
INT_NUMBER@90..92 "92"
|
INT_NUMBER@90..92 "92"
|
||||||
|
|
|
@ -15,7 +15,8 @@ SOURCE_FILE@0..46
|
||||||
GENERIC_ARG_LIST@10..44
|
GENERIC_ARG_LIST@10..44
|
||||||
L_ANGLE@10..11 "<"
|
L_ANGLE@10..11 "<"
|
||||||
LIFETIME_ARG@11..18
|
LIFETIME_ARG@11..18
|
||||||
LIFETIME@11..18 "\'static"
|
LIFETIME@11..18
|
||||||
|
LIFETIME_IDENT@11..18 "\'static"
|
||||||
COMMA@18..19 ","
|
COMMA@18..19 ","
|
||||||
WHITESPACE@19..20 " "
|
WHITESPACE@19..20 " "
|
||||||
TYPE_ARG@20..23
|
TYPE_ARG@20..23
|
||||||
|
|
|
@ -33,7 +33,8 @@ SOURCE_FILE@0..35
|
||||||
GENERIC_ARG_LIST@24..28
|
GENERIC_ARG_LIST@24..28
|
||||||
L_ANGLE@24..25 "<"
|
L_ANGLE@24..25 "<"
|
||||||
LIFETIME_ARG@25..27
|
LIFETIME_ARG@25..27
|
||||||
LIFETIME@25..27 "\'a"
|
LIFETIME@25..27
|
||||||
|
LIFETIME_IDENT@25..27 "\'a"
|
||||||
R_ANGLE@27..28 ">"
|
R_ANGLE@27..28 ">"
|
||||||
R_PAREN@28..29 ")"
|
R_PAREN@28..29 ")"
|
||||||
R_ANGLE@29..30 ">"
|
R_ANGLE@29..30 ">"
|
||||||
|
|
|
@ -31,7 +31,8 @@ SOURCE_FILE@0..58
|
||||||
PLUS@18..19 "+"
|
PLUS@18..19 "+"
|
||||||
WHITESPACE@19..20 " "
|
WHITESPACE@19..20 " "
|
||||||
TYPE_BOUND@20..22
|
TYPE_BOUND@20..22
|
||||||
LIFETIME@20..22 "\'f"
|
LIFETIME@20..22
|
||||||
|
LIFETIME_IDENT@20..22 "\'f"
|
||||||
R_ANGLE@22..23 ">"
|
R_ANGLE@22..23 ">"
|
||||||
WHITESPACE@23..24 " "
|
WHITESPACE@23..24 " "
|
||||||
BLOCK_EXPR@24..26
|
BLOCK_EXPR@24..26
|
||||||
|
@ -72,7 +73,8 @@ SOURCE_FILE@0..58
|
||||||
PLUS@49..50 "+"
|
PLUS@49..50 "+"
|
||||||
WHITESPACE@50..51 " "
|
WHITESPACE@50..51 " "
|
||||||
TYPE_BOUND@51..53
|
TYPE_BOUND@51..53
|
||||||
LIFETIME@51..53 "\'f"
|
LIFETIME@51..53
|
||||||
|
LIFETIME_IDENT@51..53 "\'f"
|
||||||
R_ANGLE@53..54 ">"
|
R_ANGLE@53..54 ">"
|
||||||
WHITESPACE@54..55 " "
|
WHITESPACE@54..55 " "
|
||||||
BLOCK_EXPR@55..57
|
BLOCK_EXPR@55..57
|
||||||
|
|
|
@ -12,17 +12,20 @@ SOURCE_FILE@0..116
|
||||||
WHERE_KW@9..14 "where"
|
WHERE_KW@9..14 "where"
|
||||||
WHITESPACE@14..18 "\n "
|
WHITESPACE@14..18 "\n "
|
||||||
WHERE_PRED@18..29
|
WHERE_PRED@18..29
|
||||||
LIFETIME@18..20 "\'a"
|
LIFETIME@18..20
|
||||||
|
LIFETIME_IDENT@18..20 "\'a"
|
||||||
COLON@20..21 ":"
|
COLON@20..21 ":"
|
||||||
WHITESPACE@21..22 " "
|
WHITESPACE@21..22 " "
|
||||||
TYPE_BOUND_LIST@22..29
|
TYPE_BOUND_LIST@22..29
|
||||||
TYPE_BOUND@22..24
|
TYPE_BOUND@22..24
|
||||||
LIFETIME@22..24 "\'b"
|
LIFETIME@22..24
|
||||||
|
LIFETIME_IDENT@22..24 "\'b"
|
||||||
WHITESPACE@24..25 " "
|
WHITESPACE@24..25 " "
|
||||||
PLUS@25..26 "+"
|
PLUS@25..26 "+"
|
||||||
WHITESPACE@26..27 " "
|
WHITESPACE@26..27 " "
|
||||||
TYPE_BOUND@27..29
|
TYPE_BOUND@27..29
|
||||||
LIFETIME@27..29 "\'c"
|
LIFETIME@27..29
|
||||||
|
LIFETIME_IDENT@27..29 "\'c"
|
||||||
COMMA@29..30 ","
|
COMMA@29..30 ","
|
||||||
WHITESPACE@30..34 "\n "
|
WHITESPACE@30..34 "\n "
|
||||||
WHERE_PRED@34..59
|
WHERE_PRED@34..59
|
||||||
|
@ -53,7 +56,8 @@ SOURCE_FILE@0..116
|
||||||
PLUS@50..51 "+"
|
PLUS@50..51 "+"
|
||||||
WHITESPACE@51..52 " "
|
WHITESPACE@51..52 " "
|
||||||
TYPE_BOUND@52..59
|
TYPE_BOUND@52..59
|
||||||
LIFETIME@52..59 "\'static"
|
LIFETIME@52..59
|
||||||
|
LIFETIME_IDENT@52..59 "\'static"
|
||||||
COMMA@59..60 ","
|
COMMA@59..60 ","
|
||||||
WHITESPACE@60..64 "\n "
|
WHITESPACE@60..64 "\n "
|
||||||
WHERE_PRED@64..82
|
WHERE_PRED@64..82
|
||||||
|
@ -71,7 +75,8 @@ SOURCE_FILE@0..116
|
||||||
WHITESPACE@79..80 " "
|
WHITESPACE@79..80 " "
|
||||||
TYPE_BOUND_LIST@80..82
|
TYPE_BOUND_LIST@80..82
|
||||||
TYPE_BOUND@80..82
|
TYPE_BOUND@80..82
|
||||||
LIFETIME@80..82 "\'a"
|
LIFETIME@80..82
|
||||||
|
LIFETIME_IDENT@80..82 "\'a"
|
||||||
COMMA@82..83 ","
|
COMMA@82..83 ","
|
||||||
WHITESPACE@83..87 "\n "
|
WHITESPACE@83..87 "\n "
|
||||||
WHERE_PRED@87..112
|
WHERE_PRED@87..112
|
||||||
|
@ -102,7 +107,8 @@ SOURCE_FILE@0..116
|
||||||
WHITESPACE@109..110 " "
|
WHITESPACE@109..110 " "
|
||||||
TYPE_BOUND_LIST@110..112
|
TYPE_BOUND_LIST@110..112
|
||||||
TYPE_BOUND@110..112
|
TYPE_BOUND@110..112
|
||||||
LIFETIME@110..112 "\'a"
|
LIFETIME@110..112
|
||||||
|
LIFETIME_IDENT@110..112 "\'a"
|
||||||
WHITESPACE@112..113 "\n"
|
WHITESPACE@112..113 "\n"
|
||||||
BLOCK_EXPR@113..115
|
BLOCK_EXPR@113..115
|
||||||
L_CURLY@113..114 "{"
|
L_CURLY@113..114 "{"
|
||||||
|
|
|
@ -31,13 +31,15 @@ SOURCE_FILE@0..42
|
||||||
GENERIC_ARG_LIST@30..34
|
GENERIC_ARG_LIST@30..34
|
||||||
L_ANGLE@30..31 "<"
|
L_ANGLE@30..31 "<"
|
||||||
LIFETIME_ARG@31..33
|
LIFETIME_ARG@31..33
|
||||||
LIFETIME@31..33 "\'a"
|
LIFETIME@31..33
|
||||||
|
LIFETIME_IDENT@31..33 "\'a"
|
||||||
R_ANGLE@33..34 ">"
|
R_ANGLE@33..34 ">"
|
||||||
R_ANGLE@34..35 ">"
|
R_ANGLE@34..35 ">"
|
||||||
WHITESPACE@35..36 " "
|
WHITESPACE@35..36 " "
|
||||||
PLUS@36..37 "+"
|
PLUS@36..37 "+"
|
||||||
WHITESPACE@37..38 " "
|
WHITESPACE@37..38 " "
|
||||||
TYPE_BOUND@38..40
|
TYPE_BOUND@38..40
|
||||||
LIFETIME@38..40 "\'a"
|
LIFETIME@38..40
|
||||||
|
LIFETIME_IDENT@38..40 "\'a"
|
||||||
SEMICOLON@40..41 ";"
|
SEMICOLON@40..41 ";"
|
||||||
WHITESPACE@41..42 "\n"
|
WHITESPACE@41..42 "\n"
|
||||||
|
|
|
@ -12,7 +12,8 @@ SOURCE_FILE@0..121
|
||||||
GENERIC_PARAM_LIST@12..16
|
GENERIC_PARAM_LIST@12..16
|
||||||
L_ANGLE@12..13 "<"
|
L_ANGLE@12..13 "<"
|
||||||
LIFETIME_PARAM@13..15
|
LIFETIME_PARAM@13..15
|
||||||
LIFETIME@13..15 "\'a"
|
LIFETIME@13..15
|
||||||
|
LIFETIME_IDENT@13..15 "\'a"
|
||||||
R_ANGLE@15..16 ">"
|
R_ANGLE@15..16 ">"
|
||||||
WHITESPACE@16..17 " "
|
WHITESPACE@16..17 " "
|
||||||
FN_PTR_TYPE@17..27
|
FN_PTR_TYPE@17..27
|
||||||
|
@ -42,7 +43,8 @@ SOURCE_FILE@0..121
|
||||||
GENERIC_PARAM_LIST@41..45
|
GENERIC_PARAM_LIST@41..45
|
||||||
L_ANGLE@41..42 "<"
|
L_ANGLE@41..42 "<"
|
||||||
LIFETIME_PARAM@42..44
|
LIFETIME_PARAM@42..44
|
||||||
LIFETIME@42..44 "\'a"
|
LIFETIME@42..44
|
||||||
|
LIFETIME_IDENT@42..44 "\'a"
|
||||||
R_ANGLE@44..45 ">"
|
R_ANGLE@44..45 ">"
|
||||||
WHITESPACE@45..46 " "
|
WHITESPACE@45..46 " "
|
||||||
FN_PTR_TYPE@46..80
|
FN_PTR_TYPE@46..80
|
||||||
|
@ -59,7 +61,8 @@ SOURCE_FILE@0..121
|
||||||
PARAM@67..73
|
PARAM@67..73
|
||||||
REF_TYPE@67..73
|
REF_TYPE@67..73
|
||||||
AMP@67..68 "&"
|
AMP@67..68 "&"
|
||||||
LIFETIME@68..70 "\'a"
|
LIFETIME@68..70
|
||||||
|
LIFETIME_IDENT@68..70 "\'a"
|
||||||
WHITESPACE@70..71 " "
|
WHITESPACE@70..71 " "
|
||||||
TUPLE_TYPE@71..73
|
TUPLE_TYPE@71..73
|
||||||
L_PAREN@71..72 "("
|
L_PAREN@71..72 "("
|
||||||
|
@ -87,7 +90,8 @@ SOURCE_FILE@0..121
|
||||||
GENERIC_PARAM_LIST@96..100
|
GENERIC_PARAM_LIST@96..100
|
||||||
L_ANGLE@96..97 "<"
|
L_ANGLE@96..97 "<"
|
||||||
LIFETIME_PARAM@97..99
|
LIFETIME_PARAM@97..99
|
||||||
LIFETIME@97..99 "\'a"
|
LIFETIME@97..99
|
||||||
|
LIFETIME_IDENT@97..99 "\'a"
|
||||||
R_ANGLE@99..100 ">"
|
R_ANGLE@99..100 ">"
|
||||||
WHITESPACE@100..101 " "
|
WHITESPACE@100..101 " "
|
||||||
PATH_TYPE@101..119
|
PATH_TYPE@101..119
|
||||||
|
@ -100,7 +104,8 @@ SOURCE_FILE@0..121
|
||||||
TYPE_ARG@111..118
|
TYPE_ARG@111..118
|
||||||
REF_TYPE@111..118
|
REF_TYPE@111..118
|
||||||
AMP@111..112 "&"
|
AMP@111..112 "&"
|
||||||
LIFETIME@112..114 "\'a"
|
LIFETIME@112..114
|
||||||
|
LIFETIME_IDENT@112..114 "\'a"
|
||||||
WHITESPACE@114..115 " "
|
WHITESPACE@114..115 " "
|
||||||
PATH_TYPE@115..118
|
PATH_TYPE@115..118
|
||||||
PATH@115..118
|
PATH@115..118
|
||||||
|
|
|
@ -14,7 +14,8 @@ SOURCE_FILE@0..74
|
||||||
EXPR_STMT@15..26
|
EXPR_STMT@15..26
|
||||||
LOOP_EXPR@15..26
|
LOOP_EXPR@15..26
|
||||||
LABEL@15..18
|
LABEL@15..18
|
||||||
LIFETIME@15..17 "\'a"
|
LIFETIME@15..17
|
||||||
|
LIFETIME_IDENT@15..17 "\'a"
|
||||||
COLON@17..18 ":"
|
COLON@17..18 ":"
|
||||||
WHITESPACE@18..19 " "
|
WHITESPACE@18..19 " "
|
||||||
LOOP_KW@19..23 "loop"
|
LOOP_KW@19..23 "loop"
|
||||||
|
@ -26,7 +27,8 @@ SOURCE_FILE@0..74
|
||||||
EXPR_STMT@31..48
|
EXPR_STMT@31..48
|
||||||
WHILE_EXPR@31..48
|
WHILE_EXPR@31..48
|
||||||
LABEL@31..34
|
LABEL@31..34
|
||||||
LIFETIME@31..33 "\'b"
|
LIFETIME@31..33
|
||||||
|
LIFETIME_IDENT@31..33 "\'b"
|
||||||
COLON@33..34 ":"
|
COLON@33..34 ":"
|
||||||
WHITESPACE@34..35 " "
|
WHITESPACE@34..35 " "
|
||||||
WHILE_KW@35..40 "while"
|
WHILE_KW@35..40 "while"
|
||||||
|
@ -41,7 +43,8 @@ SOURCE_FILE@0..74
|
||||||
WHITESPACE@48..53 "\n "
|
WHITESPACE@48..53 "\n "
|
||||||
FOR_EXPR@53..71
|
FOR_EXPR@53..71
|
||||||
LABEL@53..56
|
LABEL@53..56
|
||||||
LIFETIME@53..55 "\'c"
|
LIFETIME@53..55
|
||||||
|
LIFETIME_IDENT@53..55 "\'c"
|
||||||
COLON@55..56 ":"
|
COLON@55..56 ":"
|
||||||
WHITESPACE@56..57 " "
|
WHITESPACE@56..57 " "
|
||||||
FOR_KW@57..60 "for"
|
FOR_KW@57..60 "for"
|
||||||
|
|
|
@ -20,7 +20,8 @@ SOURCE_FILE@0..64
|
||||||
R_PAREN@24..25 ")"
|
R_PAREN@24..25 ")"
|
||||||
R_BRACK@25..26 "]"
|
R_BRACK@25..26 "]"
|
||||||
WHITESPACE@26..27 " "
|
WHITESPACE@26..27 " "
|
||||||
LIFETIME@27..29 "\'a"
|
LIFETIME@27..29
|
||||||
|
LIFETIME_IDENT@27..29 "\'a"
|
||||||
COMMA@29..30 ","
|
COMMA@29..30 ","
|
||||||
WHITESPACE@30..31 " "
|
WHITESPACE@30..31 " "
|
||||||
TYPE_PARAM@31..48
|
TYPE_PARAM@31..48
|
||||||
|
@ -49,7 +50,8 @@ SOURCE_FILE@0..64
|
||||||
WHITESPACE@52..53 " "
|
WHITESPACE@52..53 " "
|
||||||
REF_TYPE@53..58
|
REF_TYPE@53..58
|
||||||
AMP@53..54 "&"
|
AMP@53..54 "&"
|
||||||
LIFETIME@54..56 "\'a"
|
LIFETIME@54..56
|
||||||
|
LIFETIME_IDENT@54..56 "\'a"
|
||||||
WHITESPACE@56..57 " "
|
WHITESPACE@56..57 " "
|
||||||
PATH_TYPE@57..58
|
PATH_TYPE@57..58
|
||||||
PATH@57..58
|
PATH@57..58
|
||||||
|
|
|
@ -14,7 +14,8 @@ SOURCE_FILE@0..23
|
||||||
EXPR_STMT@9..20
|
EXPR_STMT@9..20
|
||||||
EFFECT_EXPR@9..19
|
EFFECT_EXPR@9..19
|
||||||
LABEL@9..16
|
LABEL@9..16
|
||||||
LIFETIME@9..15 "\'label"
|
LIFETIME@9..15
|
||||||
|
LIFETIME_IDENT@9..15 "\'label"
|
||||||
COLON@15..16 ":"
|
COLON@15..16 ":"
|
||||||
WHITESPACE@16..17 " "
|
WHITESPACE@16..17 " "
|
||||||
BLOCK_EXPR@17..19
|
BLOCK_EXPR@17..19
|
||||||
|
|
|
@ -80,7 +80,8 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@80..84
|
GENERIC_PARAM_LIST@80..84
|
||||||
L_ANGLE@80..81 "<"
|
L_ANGLE@80..81 "<"
|
||||||
LIFETIME_PARAM@81..83
|
LIFETIME_PARAM@81..83
|
||||||
LIFETIME@81..83 "\'a"
|
LIFETIME@81..83
|
||||||
|
LIFETIME_IDENT@81..83 "\'a"
|
||||||
R_ANGLE@83..84 ">"
|
R_ANGLE@83..84 ">"
|
||||||
SEMICOLON@84..85 ";"
|
SEMICOLON@84..85 ";"
|
||||||
WHITESPACE@85..86 "\n"
|
WHITESPACE@85..86 "\n"
|
||||||
|
@ -92,7 +93,8 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@95..100
|
GENERIC_PARAM_LIST@95..100
|
||||||
L_ANGLE@95..96 "<"
|
L_ANGLE@95..96 "<"
|
||||||
LIFETIME_PARAM@96..99
|
LIFETIME_PARAM@96..99
|
||||||
LIFETIME@96..98 "\'a"
|
LIFETIME@96..98
|
||||||
|
LIFETIME_IDENT@96..98 "\'a"
|
||||||
COLON@98..99 ":"
|
COLON@98..99 ":"
|
||||||
R_ANGLE@99..100 ">"
|
R_ANGLE@99..100 ">"
|
||||||
SEMICOLON@100..101 ";"
|
SEMICOLON@100..101 ";"
|
||||||
|
@ -105,10 +107,12 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@111..119
|
GENERIC_PARAM_LIST@111..119
|
||||||
L_ANGLE@111..112 "<"
|
L_ANGLE@111..112 "<"
|
||||||
LIFETIME_PARAM@112..118
|
LIFETIME_PARAM@112..118
|
||||||
LIFETIME@112..114 "\'a"
|
LIFETIME@112..114
|
||||||
|
LIFETIME_IDENT@112..114 "\'a"
|
||||||
COLON@114..115 ":"
|
COLON@114..115 ":"
|
||||||
WHITESPACE@115..116 " "
|
WHITESPACE@115..116 " "
|
||||||
LIFETIME@116..118 "\'b"
|
LIFETIME@116..118
|
||||||
|
LIFETIME_IDENT@116..118 "\'b"
|
||||||
R_ANGLE@118..119 ">"
|
R_ANGLE@118..119 ">"
|
||||||
SEMICOLON@119..120 ";"
|
SEMICOLON@119..120 ";"
|
||||||
WHITESPACE@120..121 "\n"
|
WHITESPACE@120..121 "\n"
|
||||||
|
@ -120,10 +124,12 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@130..141
|
GENERIC_PARAM_LIST@130..141
|
||||||
L_ANGLE@130..131 "<"
|
L_ANGLE@130..131 "<"
|
||||||
LIFETIME_PARAM@131..139
|
LIFETIME_PARAM@131..139
|
||||||
LIFETIME@131..133 "\'a"
|
LIFETIME@131..133
|
||||||
|
LIFETIME_IDENT@131..133 "\'a"
|
||||||
COLON@133..134 ":"
|
COLON@133..134 ":"
|
||||||
WHITESPACE@134..135 " "
|
WHITESPACE@134..135 " "
|
||||||
LIFETIME@135..137 "\'b"
|
LIFETIME@135..137
|
||||||
|
LIFETIME_IDENT@135..137 "\'b"
|
||||||
WHITESPACE@137..138 " "
|
WHITESPACE@137..138 " "
|
||||||
PLUS@138..139 "+"
|
PLUS@138..139 "+"
|
||||||
WHITESPACE@139..140 " "
|
WHITESPACE@139..140 " "
|
||||||
|
@ -138,14 +144,17 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@152..165
|
GENERIC_PARAM_LIST@152..165
|
||||||
L_ANGLE@152..153 "<"
|
L_ANGLE@152..153 "<"
|
||||||
LIFETIME_PARAM@153..164
|
LIFETIME_PARAM@153..164
|
||||||
LIFETIME@153..155 "\'a"
|
LIFETIME@153..155
|
||||||
|
LIFETIME_IDENT@153..155 "\'a"
|
||||||
COLON@155..156 ":"
|
COLON@155..156 ":"
|
||||||
WHITESPACE@156..157 " "
|
WHITESPACE@156..157 " "
|
||||||
LIFETIME@157..159 "\'b"
|
LIFETIME@157..159
|
||||||
|
LIFETIME_IDENT@157..159 "\'b"
|
||||||
WHITESPACE@159..160 " "
|
WHITESPACE@159..160 " "
|
||||||
PLUS@160..161 "+"
|
PLUS@160..161 "+"
|
||||||
WHITESPACE@161..162 " "
|
WHITESPACE@161..162 " "
|
||||||
LIFETIME@162..164 "\'c"
|
LIFETIME@162..164
|
||||||
|
LIFETIME_IDENT@162..164 "\'c"
|
||||||
R_ANGLE@164..165 ">"
|
R_ANGLE@164..165 ">"
|
||||||
SEMICOLON@165..166 ";"
|
SEMICOLON@165..166 ";"
|
||||||
WHITESPACE@166..167 "\n"
|
WHITESPACE@166..167 "\n"
|
||||||
|
@ -157,7 +166,8 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@177..182
|
GENERIC_PARAM_LIST@177..182
|
||||||
L_ANGLE@177..178 "<"
|
L_ANGLE@177..178 "<"
|
||||||
LIFETIME_PARAM@178..180
|
LIFETIME_PARAM@178..180
|
||||||
LIFETIME@178..180 "\'a"
|
LIFETIME@178..180
|
||||||
|
LIFETIME_IDENT@178..180 "\'a"
|
||||||
COMMA@180..181 ","
|
COMMA@180..181 ","
|
||||||
R_ANGLE@181..182 ">"
|
R_ANGLE@181..182 ">"
|
||||||
SEMICOLON@182..183 ";"
|
SEMICOLON@182..183 ";"
|
||||||
|
@ -170,11 +180,13 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@194..202
|
GENERIC_PARAM_LIST@194..202
|
||||||
L_ANGLE@194..195 "<"
|
L_ANGLE@194..195 "<"
|
||||||
LIFETIME_PARAM@195..197
|
LIFETIME_PARAM@195..197
|
||||||
LIFETIME@195..197 "\'a"
|
LIFETIME@195..197
|
||||||
|
LIFETIME_IDENT@195..197 "\'a"
|
||||||
COMMA@197..198 ","
|
COMMA@197..198 ","
|
||||||
WHITESPACE@198..199 " "
|
WHITESPACE@198..199 " "
|
||||||
LIFETIME_PARAM@199..201
|
LIFETIME_PARAM@199..201
|
||||||
LIFETIME@199..201 "\'b"
|
LIFETIME@199..201
|
||||||
|
LIFETIME_IDENT@199..201 "\'b"
|
||||||
R_ANGLE@201..202 ">"
|
R_ANGLE@201..202 ">"
|
||||||
SEMICOLON@202..203 ";"
|
SEMICOLON@202..203 ";"
|
||||||
WHITESPACE@203..204 "\n"
|
WHITESPACE@203..204 "\n"
|
||||||
|
@ -186,18 +198,22 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@214..232
|
GENERIC_PARAM_LIST@214..232
|
||||||
L_ANGLE@214..215 "<"
|
L_ANGLE@214..215 "<"
|
||||||
LIFETIME_PARAM@215..222
|
LIFETIME_PARAM@215..222
|
||||||
LIFETIME@215..217 "\'a"
|
LIFETIME@215..217
|
||||||
|
LIFETIME_IDENT@215..217 "\'a"
|
||||||
COLON@217..218 ":"
|
COLON@217..218 ":"
|
||||||
WHITESPACE@218..219 " "
|
WHITESPACE@218..219 " "
|
||||||
LIFETIME@219..221 "\'b"
|
LIFETIME@219..221
|
||||||
|
LIFETIME_IDENT@219..221 "\'b"
|
||||||
PLUS@221..222 "+"
|
PLUS@221..222 "+"
|
||||||
COMMA@222..223 ","
|
COMMA@222..223 ","
|
||||||
WHITESPACE@223..224 " "
|
WHITESPACE@223..224 " "
|
||||||
LIFETIME_PARAM@224..230
|
LIFETIME_PARAM@224..230
|
||||||
LIFETIME@224..226 "\'b"
|
LIFETIME@224..226
|
||||||
|
LIFETIME_IDENT@224..226 "\'b"
|
||||||
COLON@226..227 ":"
|
COLON@226..227 ":"
|
||||||
WHITESPACE@227..228 " "
|
WHITESPACE@227..228 " "
|
||||||
LIFETIME@228..230 "\'c"
|
LIFETIME@228..230
|
||||||
|
LIFETIME_IDENT@228..230 "\'c"
|
||||||
COMMA@230..231 ","
|
COMMA@230..231 ","
|
||||||
R_ANGLE@231..232 ">"
|
R_ANGLE@231..232 ">"
|
||||||
SEMICOLON@232..233 ";"
|
SEMICOLON@232..233 ";"
|
||||||
|
@ -241,7 +257,8 @@ SOURCE_FILE@0..290
|
||||||
GENERIC_PARAM_LIST@278..288
|
GENERIC_PARAM_LIST@278..288
|
||||||
L_ANGLE@278..279 "<"
|
L_ANGLE@278..279 "<"
|
||||||
LIFETIME_PARAM@279..281
|
LIFETIME_PARAM@279..281
|
||||||
LIFETIME@279..281 "\'a"
|
LIFETIME@279..281
|
||||||
|
LIFETIME_IDENT@279..281 "\'a"
|
||||||
COMMA@281..282 ","
|
COMMA@281..282 ","
|
||||||
WHITESPACE@282..283 " "
|
WHITESPACE@282..283 " "
|
||||||
TYPE_PARAM@283..284
|
TYPE_PARAM@283..284
|
||||||
|
|
|
@ -41,7 +41,8 @@ SOURCE_FILE@0..250
|
||||||
WHITESPACE@38..39 " "
|
WHITESPACE@38..39 " "
|
||||||
TYPE_BOUND_LIST@39..41
|
TYPE_BOUND_LIST@39..41
|
||||||
TYPE_BOUND@39..41
|
TYPE_BOUND@39..41
|
||||||
LIFETIME@39..41 "\'a"
|
LIFETIME@39..41
|
||||||
|
LIFETIME_IDENT@39..41 "\'a"
|
||||||
R_ANGLE@41..42 ">"
|
R_ANGLE@41..42 ">"
|
||||||
SEMICOLON@42..43 ";"
|
SEMICOLON@42..43 ";"
|
||||||
WHITESPACE@43..44 "\n"
|
WHITESPACE@43..44 "\n"
|
||||||
|
@ -59,7 +60,8 @@ SOURCE_FILE@0..250
|
||||||
WHITESPACE@55..56 " "
|
WHITESPACE@55..56 " "
|
||||||
TYPE_BOUND_LIST@56..60
|
TYPE_BOUND_LIST@56..60
|
||||||
TYPE_BOUND@56..58
|
TYPE_BOUND@56..58
|
||||||
LIFETIME@56..58 "\'a"
|
LIFETIME@56..58
|
||||||
|
LIFETIME_IDENT@56..58 "\'a"
|
||||||
WHITESPACE@58..59 " "
|
WHITESPACE@58..59 " "
|
||||||
PLUS@59..60 "+"
|
PLUS@59..60 "+"
|
||||||
WHITESPACE@60..61 " "
|
WHITESPACE@60..61 " "
|
||||||
|
@ -80,12 +82,14 @@ SOURCE_FILE@0..250
|
||||||
WHITESPACE@75..76 " "
|
WHITESPACE@75..76 " "
|
||||||
TYPE_BOUND_LIST@76..83
|
TYPE_BOUND_LIST@76..83
|
||||||
TYPE_BOUND@76..78
|
TYPE_BOUND@76..78
|
||||||
LIFETIME@76..78 "\'a"
|
LIFETIME@76..78
|
||||||
|
LIFETIME_IDENT@76..78 "\'a"
|
||||||
WHITESPACE@78..79 " "
|
WHITESPACE@78..79 " "
|
||||||
PLUS@79..80 "+"
|
PLUS@79..80 "+"
|
||||||
WHITESPACE@80..81 " "
|
WHITESPACE@80..81 " "
|
||||||
TYPE_BOUND@81..83
|
TYPE_BOUND@81..83
|
||||||
LIFETIME@81..83 "\'d"
|
LIFETIME@81..83
|
||||||
|
LIFETIME_IDENT@81..83 "\'d"
|
||||||
WHITESPACE@83..84 " "
|
WHITESPACE@83..84 " "
|
||||||
R_ANGLE@84..85 ">"
|
R_ANGLE@84..85 ">"
|
||||||
SEMICOLON@85..86 ";"
|
SEMICOLON@85..86 ";"
|
||||||
|
@ -104,12 +108,14 @@ SOURCE_FILE@0..250
|
||||||
WHITESPACE@98..99 " "
|
WHITESPACE@98..99 " "
|
||||||
TYPE_BOUND_LIST@99..114
|
TYPE_BOUND_LIST@99..114
|
||||||
TYPE_BOUND@99..101
|
TYPE_BOUND@99..101
|
||||||
LIFETIME@99..101 "\'a"
|
LIFETIME@99..101
|
||||||
|
LIFETIME_IDENT@99..101 "\'a"
|
||||||
WHITESPACE@101..102 " "
|
WHITESPACE@101..102 " "
|
||||||
PLUS@102..103 "+"
|
PLUS@102..103 "+"
|
||||||
WHITESPACE@103..104 " "
|
WHITESPACE@103..104 " "
|
||||||
TYPE_BOUND@104..106
|
TYPE_BOUND@104..106
|
||||||
LIFETIME@104..106 "\'d"
|
LIFETIME@104..106
|
||||||
|
LIFETIME_IDENT@104..106 "\'d"
|
||||||
WHITESPACE@106..107 " "
|
WHITESPACE@106..107 " "
|
||||||
PLUS@107..108 "+"
|
PLUS@107..108 "+"
|
||||||
WHITESPACE@108..109 " "
|
WHITESPACE@108..109 " "
|
||||||
|
@ -190,7 +196,8 @@ SOURCE_FILE@0..250
|
||||||
PLUS@174..175 "+"
|
PLUS@174..175 "+"
|
||||||
WHITESPACE@175..176 " "
|
WHITESPACE@175..176 " "
|
||||||
TYPE_BOUND@176..178
|
TYPE_BOUND@176..178
|
||||||
LIFETIME@176..178 "\'a"
|
LIFETIME@176..178
|
||||||
|
LIFETIME_IDENT@176..178 "\'a"
|
||||||
R_ANGLE@178..179 ">"
|
R_ANGLE@178..179 ">"
|
||||||
SEMICOLON@179..180 ";"
|
SEMICOLON@179..180 ";"
|
||||||
WHITESPACE@180..181 "\n"
|
WHITESPACE@180..181 "\n"
|
||||||
|
@ -225,21 +232,26 @@ SOURCE_FILE@0..250
|
||||||
GENERIC_PARAM_LIST@208..249
|
GENERIC_PARAM_LIST@208..249
|
||||||
L_ANGLE@208..209 "<"
|
L_ANGLE@208..209 "<"
|
||||||
LIFETIME_PARAM@209..215
|
LIFETIME_PARAM@209..215
|
||||||
LIFETIME@209..211 "\'a"
|
LIFETIME@209..211
|
||||||
|
LIFETIME_IDENT@209..211 "\'a"
|
||||||
COLON@211..212 ":"
|
COLON@211..212 ":"
|
||||||
WHITESPACE@212..213 " "
|
WHITESPACE@212..213 " "
|
||||||
LIFETIME@213..215 "\'d"
|
LIFETIME@213..215
|
||||||
|
LIFETIME_IDENT@213..215 "\'d"
|
||||||
COMMA@215..216 ","
|
COMMA@215..216 ","
|
||||||
WHITESPACE@216..217 " "
|
WHITESPACE@216..217 " "
|
||||||
LIFETIME_PARAM@217..228
|
LIFETIME_PARAM@217..228
|
||||||
LIFETIME@217..219 "\'d"
|
LIFETIME@217..219
|
||||||
|
LIFETIME_IDENT@217..219 "\'d"
|
||||||
COLON@219..220 ":"
|
COLON@219..220 ":"
|
||||||
WHITESPACE@220..221 " "
|
WHITESPACE@220..221 " "
|
||||||
LIFETIME@221..223 "\'a"
|
LIFETIME@221..223
|
||||||
|
LIFETIME_IDENT@221..223 "\'a"
|
||||||
WHITESPACE@223..224 " "
|
WHITESPACE@223..224 " "
|
||||||
PLUS@224..225 "+"
|
PLUS@224..225 "+"
|
||||||
WHITESPACE@225..226 " "
|
WHITESPACE@225..226 " "
|
||||||
LIFETIME@226..228 "\'b"
|
LIFETIME@226..228
|
||||||
|
LIFETIME_IDENT@226..228 "\'b"
|
||||||
COMMA@228..229 ","
|
COMMA@228..229 ","
|
||||||
WHITESPACE@229..230 " "
|
WHITESPACE@229..230 " "
|
||||||
TYPE_PARAM@230..248
|
TYPE_PARAM@230..248
|
||||||
|
@ -249,12 +261,14 @@ SOURCE_FILE@0..250
|
||||||
WHITESPACE@232..233 " "
|
WHITESPACE@232..233 " "
|
||||||
TYPE_BOUND_LIST@233..248
|
TYPE_BOUND_LIST@233..248
|
||||||
TYPE_BOUND@233..235
|
TYPE_BOUND@233..235
|
||||||
LIFETIME@233..235 "\'a"
|
LIFETIME@233..235
|
||||||
|
LIFETIME_IDENT@233..235 "\'a"
|
||||||
WHITESPACE@235..236 " "
|
WHITESPACE@235..236 " "
|
||||||
PLUS@236..237 "+"
|
PLUS@236..237 "+"
|
||||||
WHITESPACE@237..238 " "
|
WHITESPACE@237..238 " "
|
||||||
TYPE_BOUND@238..240
|
TYPE_BOUND@238..240
|
||||||
LIFETIME@238..240 "\'d"
|
LIFETIME@238..240
|
||||||
|
LIFETIME_IDENT@238..240 "\'d"
|
||||||
WHITESPACE@240..241 " "
|
WHITESPACE@240..241 " "
|
||||||
PLUS@241..242 "+"
|
PLUS@241..242 "+"
|
||||||
WHITESPACE@242..243 " "
|
WHITESPACE@242..243 " "
|
||||||
|
|
|
@ -41,7 +41,8 @@ SOURCE_FILE@0..116
|
||||||
GENERIC_PARAM_LIST@59..64
|
GENERIC_PARAM_LIST@59..64
|
||||||
L_ANGLE@59..60 "<"
|
L_ANGLE@59..60 "<"
|
||||||
LIFETIME_PARAM@60..63
|
LIFETIME_PARAM@60..63
|
||||||
LIFETIME@60..63 "\'de"
|
LIFETIME@60..63
|
||||||
|
LIFETIME_IDENT@60..63 "\'de"
|
||||||
R_ANGLE@63..64 ">"
|
R_ANGLE@63..64 ">"
|
||||||
WHITESPACE@64..65 " "
|
WHITESPACE@64..65 " "
|
||||||
PATH_TYPE@65..81
|
PATH_TYPE@65..81
|
||||||
|
@ -52,7 +53,8 @@ SOURCE_FILE@0..116
|
||||||
GENERIC_ARG_LIST@76..81
|
GENERIC_ARG_LIST@76..81
|
||||||
L_ANGLE@76..77 "<"
|
L_ANGLE@76..77 "<"
|
||||||
LIFETIME_ARG@77..80
|
LIFETIME_ARG@77..80
|
||||||
LIFETIME@77..80 "\'de"
|
LIFETIME@77..80
|
||||||
|
LIFETIME_IDENT@77..80 "\'de"
|
||||||
R_ANGLE@80..81 ">"
|
R_ANGLE@80..81 ">"
|
||||||
WHITESPACE@81..82 " "
|
WHITESPACE@81..82 " "
|
||||||
PLUS@82..83 "+"
|
PLUS@82..83 "+"
|
||||||
|
|
|
@ -16,7 +16,8 @@ SOURCE_FILE@0..506
|
||||||
EXPR_STMT@50..66
|
EXPR_STMT@50..66
|
||||||
EFFECT_EXPR@50..66
|
EFFECT_EXPR@50..66
|
||||||
LABEL@50..63
|
LABEL@50..63
|
||||||
LIFETIME@50..62 "\'empty_block"
|
LIFETIME@50..62
|
||||||
|
LIFETIME_IDENT@50..62 "\'empty_block"
|
||||||
COLON@62..63 ":"
|
COLON@62..63 ":"
|
||||||
WHITESPACE@63..64 " "
|
WHITESPACE@63..64 " "
|
||||||
BLOCK_EXPR@64..66
|
BLOCK_EXPR@64..66
|
||||||
|
@ -26,7 +27,8 @@ SOURCE_FILE@0..506
|
||||||
EXPR_STMT@72..295
|
EXPR_STMT@72..295
|
||||||
EFFECT_EXPR@72..295
|
EFFECT_EXPR@72..295
|
||||||
LABEL@72..79
|
LABEL@72..79
|
||||||
LIFETIME@72..78 "\'block"
|
LIFETIME@72..78
|
||||||
|
LIFETIME_IDENT@72..78 "\'block"
|
||||||
COLON@78..79 ":"
|
COLON@78..79 ":"
|
||||||
WHITESPACE@79..80 " "
|
WHITESPACE@79..80 " "
|
||||||
BLOCK_EXPR@80..295
|
BLOCK_EXPR@80..295
|
||||||
|
@ -66,7 +68,8 @@ SOURCE_FILE@0..506
|
||||||
BREAK_EXPR@147..159
|
BREAK_EXPR@147..159
|
||||||
BREAK_KW@147..152 "break"
|
BREAK_KW@147..152 "break"
|
||||||
WHITESPACE@152..153 " "
|
WHITESPACE@152..153 " "
|
||||||
LIFETIME@153..159 "\'block"
|
LIFETIME@153..159
|
||||||
|
LIFETIME_IDENT@153..159 "\'block"
|
||||||
SEMICOLON@159..160 ";"
|
SEMICOLON@159..160 ";"
|
||||||
WHITESPACE@160..169 "\n "
|
WHITESPACE@160..169 "\n "
|
||||||
R_CURLY@169..170 "}"
|
R_CURLY@169..170 "}"
|
||||||
|
@ -105,7 +108,8 @@ SOURCE_FILE@0..506
|
||||||
BREAK_EXPR@241..253
|
BREAK_EXPR@241..253
|
||||||
BREAK_KW@241..246 "break"
|
BREAK_KW@241..246 "break"
|
||||||
WHITESPACE@246..247 " "
|
WHITESPACE@246..247 " "
|
||||||
LIFETIME@247..253 "\'block"
|
LIFETIME@247..253
|
||||||
|
LIFETIME_IDENT@247..253 "\'block"
|
||||||
SEMICOLON@253..254 ";"
|
SEMICOLON@253..254 ";"
|
||||||
WHITESPACE@254..263 "\n "
|
WHITESPACE@254..263 "\n "
|
||||||
R_CURLY@263..264 "}"
|
R_CURLY@263..264 "}"
|
||||||
|
@ -135,7 +139,8 @@ SOURCE_FILE@0..506
|
||||||
WHITESPACE@313..314 " "
|
WHITESPACE@313..314 " "
|
||||||
EFFECT_EXPR@314..502
|
EFFECT_EXPR@314..502
|
||||||
LABEL@314..321
|
LABEL@314..321
|
||||||
LIFETIME@314..320 "\'block"
|
LIFETIME@314..320
|
||||||
|
LIFETIME_IDENT@314..320 "\'block"
|
||||||
COLON@320..321 ":"
|
COLON@320..321 ":"
|
||||||
WHITESPACE@321..322 " "
|
WHITESPACE@321..322 " "
|
||||||
BLOCK_EXPR@322..502
|
BLOCK_EXPR@322..502
|
||||||
|
@ -165,7 +170,8 @@ SOURCE_FILE@0..506
|
||||||
BREAK_EXPR@378..392
|
BREAK_EXPR@378..392
|
||||||
BREAK_KW@378..383 "break"
|
BREAK_KW@378..383 "break"
|
||||||
WHITESPACE@383..384 " "
|
WHITESPACE@383..384 " "
|
||||||
LIFETIME@384..390 "\'block"
|
LIFETIME@384..390
|
||||||
|
LIFETIME_IDENT@384..390 "\'block"
|
||||||
WHITESPACE@390..391 " "
|
WHITESPACE@390..391 " "
|
||||||
LITERAL@391..392
|
LITERAL@391..392
|
||||||
INT_NUMBER@391..392 "1"
|
INT_NUMBER@391..392 "1"
|
||||||
|
@ -197,7 +203,8 @@ SOURCE_FILE@0..506
|
||||||
BREAK_EXPR@461..475
|
BREAK_EXPR@461..475
|
||||||
BREAK_KW@461..466 "break"
|
BREAK_KW@461..466 "break"
|
||||||
WHITESPACE@466..467 " "
|
WHITESPACE@466..467 " "
|
||||||
LIFETIME@467..473 "\'block"
|
LIFETIME@467..473
|
||||||
|
LIFETIME_IDENT@467..473 "\'block"
|
||||||
WHITESPACE@473..474 " "
|
WHITESPACE@473..474 " "
|
||||||
LITERAL@474..475
|
LITERAL@474..475
|
||||||
INT_NUMBER@474..475 "2"
|
INT_NUMBER@474..475 "2"
|
||||||
|
|
|
@ -1373,14 +1373,14 @@ SOURCE_FILE@0..3813
|
||||||
WHITESPACE@2376..2377 " "
|
WHITESPACE@2376..2377 " "
|
||||||
IDENT@2377..2379 "u8"
|
IDENT@2377..2379 "u8"
|
||||||
L_ANGLE@2379..2380 "<"
|
L_ANGLE@2379..2380 "<"
|
||||||
LIFETIME@2380..2383 "\'u8"
|
LIFETIME_IDENT@2380..2383 "\'u8"
|
||||||
COLON@2383..2384 ":"
|
COLON@2383..2384 ":"
|
||||||
WHITESPACE@2384..2385 " "
|
WHITESPACE@2384..2385 " "
|
||||||
LIFETIME@2385..2388 "\'u8"
|
LIFETIME_IDENT@2385..2388 "\'u8"
|
||||||
WHITESPACE@2388..2389 " "
|
WHITESPACE@2388..2389 " "
|
||||||
PLUS@2389..2390 "+"
|
PLUS@2389..2390 "+"
|
||||||
WHITESPACE@2390..2391 " "
|
WHITESPACE@2390..2391 " "
|
||||||
LIFETIME@2391..2394 "\'u8"
|
LIFETIME_IDENT@2391..2394 "\'u8"
|
||||||
R_ANGLE@2394..2395 ">"
|
R_ANGLE@2394..2395 ">"
|
||||||
TOKEN_TREE@2395..2408
|
TOKEN_TREE@2395..2408
|
||||||
L_PAREN@2395..2396 "("
|
L_PAREN@2395..2396 "("
|
||||||
|
@ -1388,7 +1388,7 @@ SOURCE_FILE@0..3813
|
||||||
COLON@2398..2399 ":"
|
COLON@2398..2399 ":"
|
||||||
WHITESPACE@2399..2400 " "
|
WHITESPACE@2399..2400 " "
|
||||||
AMP@2400..2401 "&"
|
AMP@2400..2401 "&"
|
||||||
LIFETIME@2401..2404 "\'u8"
|
LIFETIME_IDENT@2401..2404 "\'u8"
|
||||||
WHITESPACE@2404..2405 " "
|
WHITESPACE@2404..2405 " "
|
||||||
IDENT@2405..2407 "u8"
|
IDENT@2405..2407 "u8"
|
||||||
R_PAREN@2407..2408 ")"
|
R_PAREN@2407..2408 ")"
|
||||||
|
@ -1397,7 +1397,7 @@ SOURCE_FILE@0..3813
|
||||||
R_ANGLE@2410..2411 ">"
|
R_ANGLE@2410..2411 ">"
|
||||||
WHITESPACE@2411..2412 " "
|
WHITESPACE@2411..2412 " "
|
||||||
AMP@2412..2413 "&"
|
AMP@2412..2413 "&"
|
||||||
LIFETIME@2413..2416 "\'u8"
|
LIFETIME_IDENT@2413..2416 "\'u8"
|
||||||
WHITESPACE@2416..2417 " "
|
WHITESPACE@2416..2417 " "
|
||||||
IDENT@2417..2419 "u8"
|
IDENT@2417..2419 "u8"
|
||||||
WHITESPACE@2419..2420 " "
|
WHITESPACE@2419..2420 " "
|
||||||
|
@ -1568,7 +1568,8 @@ SOURCE_FILE@0..3813
|
||||||
GENERIC_PARAM_LIST@2862..2870
|
GENERIC_PARAM_LIST@2862..2870
|
||||||
L_ANGLE@2862..2863 "<"
|
L_ANGLE@2862..2863 "<"
|
||||||
LIFETIME_PARAM@2863..2869
|
LIFETIME_PARAM@2863..2869
|
||||||
LIFETIME@2863..2869 "\'union"
|
LIFETIME@2863..2869
|
||||||
|
LIFETIME_IDENT@2863..2869 "\'union"
|
||||||
R_ANGLE@2869..2870 ">"
|
R_ANGLE@2869..2870 ">"
|
||||||
WHITESPACE@2870..2871 " "
|
WHITESPACE@2870..2871 " "
|
||||||
RECORD_FIELD_LIST@2871..2904
|
RECORD_FIELD_LIST@2871..2904
|
||||||
|
@ -1581,7 +1582,8 @@ SOURCE_FILE@0..3813
|
||||||
WHITESPACE@2879..2880 " "
|
WHITESPACE@2879..2880 " "
|
||||||
REF_TYPE@2880..2901
|
REF_TYPE@2880..2901
|
||||||
AMP@2880..2881 "&"
|
AMP@2880..2881 "&"
|
||||||
LIFETIME@2881..2887 "\'union"
|
LIFETIME@2881..2887
|
||||||
|
LIFETIME_IDENT@2881..2887 "\'union"
|
||||||
WHITESPACE@2887..2888 " "
|
WHITESPACE@2887..2888 " "
|
||||||
PATH_TYPE@2888..2901
|
PATH_TYPE@2888..2901
|
||||||
PATH@2888..2901
|
PATH@2888..2901
|
||||||
|
@ -1591,7 +1593,8 @@ SOURCE_FILE@0..3813
|
||||||
GENERIC_ARG_LIST@2893..2901
|
GENERIC_ARG_LIST@2893..2901
|
||||||
L_ANGLE@2893..2894 "<"
|
L_ANGLE@2893..2894 "<"
|
||||||
LIFETIME_ARG@2894..2900
|
LIFETIME_ARG@2894..2900
|
||||||
LIFETIME@2894..2900 "\'union"
|
LIFETIME@2894..2900
|
||||||
|
LIFETIME_IDENT@2894..2900 "\'union"
|
||||||
R_ANGLE@2900..2901 ">"
|
R_ANGLE@2900..2901 ">"
|
||||||
COMMA@2901..2902 ","
|
COMMA@2901..2902 ","
|
||||||
WHITESPACE@2902..2903 " "
|
WHITESPACE@2902..2903 " "
|
||||||
|
|
|
@ -175,7 +175,8 @@ SOURCE_FILE@0..519
|
||||||
GENERIC_ARG_LIST@162..166
|
GENERIC_ARG_LIST@162..166
|
||||||
L_ANGLE@162..163 "<"
|
L_ANGLE@162..163 "<"
|
||||||
LIFETIME_ARG@163..165
|
LIFETIME_ARG@163..165
|
||||||
LIFETIME@163..165 "\'a"
|
LIFETIME@163..165
|
||||||
|
LIFETIME_IDENT@163..165 "\'a"
|
||||||
R_ANGLE@165..166 ">"
|
R_ANGLE@165..166 ">"
|
||||||
R_PAREN@166..167 ")"
|
R_PAREN@166..167 ")"
|
||||||
R_ANGLE@167..168 ">"
|
R_ANGLE@167..168 ">"
|
||||||
|
@ -344,7 +345,8 @@ SOURCE_FILE@0..519
|
||||||
GENERIC_PARAM_LIST@345..349
|
GENERIC_PARAM_LIST@345..349
|
||||||
L_ANGLE@345..346 "<"
|
L_ANGLE@345..346 "<"
|
||||||
LIFETIME_PARAM@346..348
|
LIFETIME_PARAM@346..348
|
||||||
LIFETIME@346..348 "\'a"
|
LIFETIME@346..348
|
||||||
|
LIFETIME_IDENT@346..348 "\'a"
|
||||||
R_ANGLE@348..349 ">"
|
R_ANGLE@348..349 ">"
|
||||||
PARAM_LIST@349..368
|
PARAM_LIST@349..368
|
||||||
L_PAREN@349..350 "("
|
L_PAREN@349..350 "("
|
||||||
|
@ -376,7 +378,8 @@ SOURCE_FILE@0..519
|
||||||
GENERIC_PARAM_LIST@382..386
|
GENERIC_PARAM_LIST@382..386
|
||||||
L_ANGLE@382..383 "<"
|
L_ANGLE@382..383 "<"
|
||||||
LIFETIME_PARAM@383..385
|
LIFETIME_PARAM@383..385
|
||||||
LIFETIME@383..385 "\'a"
|
LIFETIME@383..385
|
||||||
|
LIFETIME_IDENT@383..385 "\'a"
|
||||||
R_ANGLE@385..386 ">"
|
R_ANGLE@385..386 ">"
|
||||||
PARAM_LIST@386..404
|
PARAM_LIST@386..404
|
||||||
L_PAREN@386..387 "("
|
L_PAREN@386..387 "("
|
||||||
|
@ -391,7 +394,8 @@ SOURCE_FILE@0..519
|
||||||
WHITESPACE@394..395 " "
|
WHITESPACE@394..395 " "
|
||||||
SELF_PARAM@395..403
|
SELF_PARAM@395..403
|
||||||
AMP@395..396 "&"
|
AMP@395..396 "&"
|
||||||
LIFETIME@396..398 "\'a"
|
LIFETIME@396..398
|
||||||
|
LIFETIME_IDENT@396..398 "\'a"
|
||||||
WHITESPACE@398..399 " "
|
WHITESPACE@398..399 " "
|
||||||
SELF_KW@399..403 "self"
|
SELF_KW@399..403 "self"
|
||||||
R_PAREN@403..404 ")"
|
R_PAREN@403..404 ")"
|
||||||
|
@ -408,7 +412,8 @@ SOURCE_FILE@0..519
|
||||||
GENERIC_PARAM_LIST@418..422
|
GENERIC_PARAM_LIST@418..422
|
||||||
L_ANGLE@418..419 "<"
|
L_ANGLE@418..419 "<"
|
||||||
LIFETIME_PARAM@419..421
|
LIFETIME_PARAM@419..421
|
||||||
LIFETIME@419..421 "\'a"
|
LIFETIME@419..421
|
||||||
|
LIFETIME_IDENT@419..421 "\'a"
|
||||||
R_ANGLE@421..422 ">"
|
R_ANGLE@421..422 ">"
|
||||||
PARAM_LIST@422..444
|
PARAM_LIST@422..444
|
||||||
L_PAREN@422..423 "("
|
L_PAREN@422..423 "("
|
||||||
|
@ -423,7 +428,8 @@ SOURCE_FILE@0..519
|
||||||
WHITESPACE@430..431 " "
|
WHITESPACE@430..431 " "
|
||||||
SELF_PARAM@431..443
|
SELF_PARAM@431..443
|
||||||
AMP@431..432 "&"
|
AMP@431..432 "&"
|
||||||
LIFETIME@432..434 "\'a"
|
LIFETIME@432..434
|
||||||
|
LIFETIME_IDENT@432..434 "\'a"
|
||||||
WHITESPACE@434..435 " "
|
WHITESPACE@434..435 " "
|
||||||
MUT_KW@435..438 "mut"
|
MUT_KW@435..438 "mut"
|
||||||
WHITESPACE@438..439 " "
|
WHITESPACE@438..439 " "
|
||||||
|
|
|
@ -22,7 +22,8 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@31..35
|
GENERIC_PARAM_LIST@31..35
|
||||||
L_ANGLE@31..32 "<"
|
L_ANGLE@31..32 "<"
|
||||||
LIFETIME_PARAM@32..34
|
LIFETIME_PARAM@32..34
|
||||||
LIFETIME@32..34 "\'a"
|
LIFETIME@32..34
|
||||||
|
LIFETIME_IDENT@32..34 "\'a"
|
||||||
R_ANGLE@34..35 ">"
|
R_ANGLE@34..35 ">"
|
||||||
WHITESPACE@35..36 " "
|
WHITESPACE@35..36 " "
|
||||||
PATH_TYPE@36..37
|
PATH_TYPE@36..37
|
||||||
|
@ -44,7 +45,8 @@ SOURCE_FILE@0..374
|
||||||
PARAM@42..49
|
PARAM@42..49
|
||||||
REF_TYPE@42..49
|
REF_TYPE@42..49
|
||||||
AMP@42..43 "&"
|
AMP@42..43 "&"
|
||||||
LIFETIME@43..45 "\'a"
|
LIFETIME@43..45
|
||||||
|
LIFETIME_IDENT@43..45 "\'a"
|
||||||
WHITESPACE@45..46 " "
|
WHITESPACE@45..46 " "
|
||||||
PATH_TYPE@46..49
|
PATH_TYPE@46..49
|
||||||
PATH@46..49
|
PATH@46..49
|
||||||
|
@ -82,12 +84,14 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@85..89
|
GENERIC_PARAM_LIST@85..89
|
||||||
L_ANGLE@85..86 "<"
|
L_ANGLE@85..86 "<"
|
||||||
LIFETIME_PARAM@86..88
|
LIFETIME_PARAM@86..88
|
||||||
LIFETIME@86..88 "\'a"
|
LIFETIME@86..88
|
||||||
|
LIFETIME_IDENT@86..88 "\'a"
|
||||||
R_ANGLE@88..89 ">"
|
R_ANGLE@88..89 ">"
|
||||||
WHITESPACE@89..90 " "
|
WHITESPACE@89..90 " "
|
||||||
REF_TYPE@90..95
|
REF_TYPE@90..95
|
||||||
AMP@90..91 "&"
|
AMP@90..91 "&"
|
||||||
LIFETIME@91..93 "\'a"
|
LIFETIME@91..93
|
||||||
|
LIFETIME_IDENT@91..93 "\'a"
|
||||||
WHITESPACE@93..94 " "
|
WHITESPACE@93..94 " "
|
||||||
PATH_TYPE@94..95
|
PATH_TYPE@94..95
|
||||||
PATH@94..95
|
PATH@94..95
|
||||||
|
@ -133,14 +137,16 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@140..144
|
GENERIC_PARAM_LIST@140..144
|
||||||
L_ANGLE@140..141 "<"
|
L_ANGLE@140..141 "<"
|
||||||
LIFETIME_PARAM@141..143
|
LIFETIME_PARAM@141..143
|
||||||
LIFETIME@141..143 "\'a"
|
LIFETIME@141..143
|
||||||
|
LIFETIME_IDENT@141..143 "\'a"
|
||||||
R_ANGLE@143..144 ">"
|
R_ANGLE@143..144 ">"
|
||||||
WHITESPACE@144..145 " "
|
WHITESPACE@144..145 " "
|
||||||
PAREN_TYPE@145..152
|
PAREN_TYPE@145..152
|
||||||
L_PAREN@145..146 "("
|
L_PAREN@145..146 "("
|
||||||
REF_TYPE@146..151
|
REF_TYPE@146..151
|
||||||
AMP@146..147 "&"
|
AMP@146..147 "&"
|
||||||
LIFETIME@147..149 "\'a"
|
LIFETIME@147..149
|
||||||
|
LIFETIME_IDENT@147..149 "\'a"
|
||||||
WHITESPACE@149..150 " "
|
WHITESPACE@149..150 " "
|
||||||
PATH_TYPE@150..151
|
PATH_TYPE@150..151
|
||||||
PATH@150..151
|
PATH@150..151
|
||||||
|
@ -162,7 +168,8 @@ SOURCE_FILE@0..374
|
||||||
PARAM@157..164
|
PARAM@157..164
|
||||||
REF_TYPE@157..164
|
REF_TYPE@157..164
|
||||||
AMP@157..158 "&"
|
AMP@157..158 "&"
|
||||||
LIFETIME@158..160 "\'a"
|
LIFETIME@158..160
|
||||||
|
LIFETIME_IDENT@158..160 "\'a"
|
||||||
WHITESPACE@160..161 " "
|
WHITESPACE@160..161 " "
|
||||||
PATH_TYPE@161..164
|
PATH_TYPE@161..164
|
||||||
PATH@161..164
|
PATH@161..164
|
||||||
|
@ -200,14 +207,16 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@202..206
|
GENERIC_PARAM_LIST@202..206
|
||||||
L_ANGLE@202..203 "<"
|
L_ANGLE@202..203 "<"
|
||||||
LIFETIME_PARAM@203..205
|
LIFETIME_PARAM@203..205
|
||||||
LIFETIME@203..205 "\'a"
|
LIFETIME@203..205
|
||||||
|
LIFETIME_IDENT@203..205 "\'a"
|
||||||
R_ANGLE@205..206 ">"
|
R_ANGLE@205..206 ">"
|
||||||
WHITESPACE@206..207 " "
|
WHITESPACE@206..207 " "
|
||||||
SLICE_TYPE@207..214
|
SLICE_TYPE@207..214
|
||||||
L_BRACK@207..208 "["
|
L_BRACK@207..208 "["
|
||||||
REF_TYPE@208..213
|
REF_TYPE@208..213
|
||||||
AMP@208..209 "&"
|
AMP@208..209 "&"
|
||||||
LIFETIME@209..211 "\'a"
|
LIFETIME@209..211
|
||||||
|
LIFETIME_IDENT@209..211 "\'a"
|
||||||
WHITESPACE@211..212 " "
|
WHITESPACE@211..212 " "
|
||||||
PATH_TYPE@212..213
|
PATH_TYPE@212..213
|
||||||
PATH@212..213
|
PATH@212..213
|
||||||
|
@ -267,7 +276,8 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@261..265
|
GENERIC_PARAM_LIST@261..265
|
||||||
L_ANGLE@261..262 "<"
|
L_ANGLE@261..262 "<"
|
||||||
LIFETIME_PARAM@262..264
|
LIFETIME_PARAM@262..264
|
||||||
LIFETIME@262..264 "\'a"
|
LIFETIME@262..264
|
||||||
|
LIFETIME_IDENT@262..264 "\'a"
|
||||||
R_ANGLE@264..265 ">"
|
R_ANGLE@264..265 ">"
|
||||||
WHITESPACE@265..266 " "
|
WHITESPACE@265..266 " "
|
||||||
PATH_TYPE@266..285
|
PATH_TYPE@266..285
|
||||||
|
@ -277,7 +287,8 @@ SOURCE_FILE@0..374
|
||||||
L_ANGLE@266..267 "<"
|
L_ANGLE@266..267 "<"
|
||||||
REF_TYPE@267..272
|
REF_TYPE@267..272
|
||||||
AMP@267..268 "&"
|
AMP@267..268 "&"
|
||||||
LIFETIME@268..270 "\'a"
|
LIFETIME@268..270
|
||||||
|
LIFETIME_IDENT@268..270 "\'a"
|
||||||
WHITESPACE@270..271 " "
|
WHITESPACE@270..271 " "
|
||||||
PATH_TYPE@271..272
|
PATH_TYPE@271..272
|
||||||
PATH@271..272
|
PATH@271..272
|
||||||
|
@ -336,7 +347,8 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@333..337
|
GENERIC_PARAM_LIST@333..337
|
||||||
L_ANGLE@333..334 "<"
|
L_ANGLE@333..334 "<"
|
||||||
LIFETIME_PARAM@334..336
|
LIFETIME_PARAM@334..336
|
||||||
LIFETIME@334..336 "\'a"
|
LIFETIME@334..336
|
||||||
|
LIFETIME_IDENT@334..336 "\'a"
|
||||||
R_ANGLE@336..337 ">"
|
R_ANGLE@336..337 ">"
|
||||||
WHITESPACE@337..338 " "
|
WHITESPACE@337..338 " "
|
||||||
FOR_TYPE@338..362
|
FOR_TYPE@338..362
|
||||||
|
@ -344,7 +356,8 @@ SOURCE_FILE@0..374
|
||||||
GENERIC_PARAM_LIST@341..345
|
GENERIC_PARAM_LIST@341..345
|
||||||
L_ANGLE@341..342 "<"
|
L_ANGLE@341..342 "<"
|
||||||
LIFETIME_PARAM@342..344
|
LIFETIME_PARAM@342..344
|
||||||
LIFETIME@342..344 "\'b"
|
LIFETIME@342..344
|
||||||
|
LIFETIME_IDENT@342..344 "\'b"
|
||||||
R_ANGLE@344..345 ">"
|
R_ANGLE@344..345 ">"
|
||||||
WHITESPACE@345..346 " "
|
WHITESPACE@345..346 " "
|
||||||
FN_PTR_TYPE@346..362
|
FN_PTR_TYPE@346..362
|
||||||
|
@ -354,7 +367,8 @@ SOURCE_FILE@0..374
|
||||||
PARAM@349..354
|
PARAM@349..354
|
||||||
REF_TYPE@349..354
|
REF_TYPE@349..354
|
||||||
AMP@349..350 "&"
|
AMP@349..350 "&"
|
||||||
LIFETIME@350..352 "\'a"
|
LIFETIME@350..352
|
||||||
|
LIFETIME_IDENT@350..352 "\'a"
|
||||||
WHITESPACE@352..353 " "
|
WHITESPACE@352..353 " "
|
||||||
PATH_TYPE@353..354
|
PATH_TYPE@353..354
|
||||||
PATH@353..354
|
PATH@353..354
|
||||||
|
@ -366,7 +380,8 @@ SOURCE_FILE@0..374
|
||||||
PARAM@356..361
|
PARAM@356..361
|
||||||
REF_TYPE@356..361
|
REF_TYPE@356..361
|
||||||
AMP@356..357 "&"
|
AMP@356..357 "&"
|
||||||
LIFETIME@357..359 "\'b"
|
LIFETIME@357..359
|
||||||
|
LIFETIME_IDENT@357..359 "\'b"
|
||||||
WHITESPACE@359..360 " "
|
WHITESPACE@359..360 " "
|
||||||
PATH_TYPE@360..361
|
PATH_TYPE@360..361
|
||||||
PATH@360..361
|
PATH@360..361
|
||||||
|
|
|
@ -7,14 +7,16 @@ SOURCE_FILE@0..195
|
||||||
GENERIC_PARAM_LIST@8..12
|
GENERIC_PARAM_LIST@8..12
|
||||||
L_ANGLE@8..9 "<"
|
L_ANGLE@8..9 "<"
|
||||||
LIFETIME_PARAM@9..11
|
LIFETIME_PARAM@9..11
|
||||||
LIFETIME@9..11 "\'a"
|
LIFETIME@9..11
|
||||||
|
LIFETIME_IDENT@9..11 "\'a"
|
||||||
R_ANGLE@11..12 ">"
|
R_ANGLE@11..12 ">"
|
||||||
WHITESPACE@12..13 " "
|
WHITESPACE@12..13 " "
|
||||||
EQ@13..14 "="
|
EQ@13..14 "="
|
||||||
WHITESPACE@14..15 " "
|
WHITESPACE@14..15 " "
|
||||||
REF_TYPE@15..36
|
REF_TYPE@15..36
|
||||||
AMP@15..16 "&"
|
AMP@15..16 "&"
|
||||||
LIFETIME@16..18 "\'a"
|
LIFETIME@16..18
|
||||||
|
LIFETIME_IDENT@16..18 "\'a"
|
||||||
WHITESPACE@18..19 " "
|
WHITESPACE@18..19 " "
|
||||||
PAREN_TYPE@19..36
|
PAREN_TYPE@19..36
|
||||||
L_PAREN@19..20 "("
|
L_PAREN@19..20 "("
|
||||||
|
@ -109,7 +111,8 @@ SOURCE_FILE@0..195
|
||||||
PLUS@104..105 "+"
|
PLUS@104..105 "+"
|
||||||
WHITESPACE@105..106 " "
|
WHITESPACE@105..106 " "
|
||||||
TYPE_BOUND@106..113
|
TYPE_BOUND@106..113
|
||||||
LIFETIME@106..113 "\'static"
|
LIFETIME@106..113
|
||||||
|
LIFETIME_IDENT@106..113 "\'static"
|
||||||
R_PAREN@113..114 ")"
|
R_PAREN@113..114 ")"
|
||||||
SEMICOLON@114..115 ";"
|
SEMICOLON@114..115 ";"
|
||||||
WHITESPACE@115..116 "\n"
|
WHITESPACE@115..116 "\n"
|
||||||
|
|
|
@ -15,7 +15,7 @@ flate2 = "1.0"
|
||||||
pico-args = "0.3.1"
|
pico-args = "0.3.1"
|
||||||
proc-macro2 = "1.0.8"
|
proc-macro2 = "1.0.8"
|
||||||
quote = "1.0.2"
|
quote = "1.0.2"
|
||||||
ungrammar = "1.1.3"
|
ungrammar = "1.4"
|
||||||
walkdir = "2.3.1"
|
walkdir = "2.3.1"
|
||||||
write-json = "0.1.0"
|
write-json = "0.1.0"
|
||||||
xshell = "0.1"
|
xshell = "0.1"
|
||||||
|
|
|
@ -76,7 +76,7 @@ pub(crate) const KINDS_SRC: KindsSrc = KindsSrc {
|
||||||
"ERROR",
|
"ERROR",
|
||||||
"IDENT",
|
"IDENT",
|
||||||
"WHITESPACE",
|
"WHITESPACE",
|
||||||
"LIFETIME",
|
"LIFETIME_IDENT",
|
||||||
"COMMENT",
|
"COMMENT",
|
||||||
"SHEBANG",
|
"SHEBANG",
|
||||||
"L_DOLLAR",
|
"L_DOLLAR",
|
||||||
|
@ -202,6 +202,7 @@ pub(crate) const KINDS_SRC: KindsSrc = KindsSrc {
|
||||||
"TYPE_PARAM",
|
"TYPE_PARAM",
|
||||||
"CONST_PARAM",
|
"CONST_PARAM",
|
||||||
"GENERIC_ARG_LIST",
|
"GENERIC_ARG_LIST",
|
||||||
|
"LIFETIME",
|
||||||
"LIFETIME_ARG",
|
"LIFETIME_ARG",
|
||||||
"TYPE_ARG",
|
"TYPE_ARG",
|
||||||
"ASSOC_TYPE_ARG",
|
"ASSOC_TYPE_ARG",
|
||||||
|
|
|
@ -380,7 +380,7 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> Result<String> {
|
||||||
macro_rules! T {
|
macro_rules! T {
|
||||||
#([#punctuation_values] => { $crate::SyntaxKind::#punctuation };)*
|
#([#punctuation_values] => { $crate::SyntaxKind::#punctuation };)*
|
||||||
#([#all_keywords_idents] => { $crate::SyntaxKind::#all_keywords };)*
|
#([#all_keywords_idents] => { $crate::SyntaxKind::#all_keywords };)*
|
||||||
[lifetime] => { $crate::SyntaxKind::LIFETIME };
|
[lifetime_ident] => { $crate::SyntaxKind::LIFETIME_IDENT };
|
||||||
[ident] => { $crate::SyntaxKind::IDENT };
|
[ident] => { $crate::SyntaxKind::IDENT };
|
||||||
[shebang] => { $crate::SyntaxKind::SHEBANG };
|
[shebang] => { $crate::SyntaxKind::SHEBANG };
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue