[[package]]
name = "ungrammar"
-version = "1.13.0"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76760314176cc2b94047af2f921b92c39f11a34dc05c43a3c2b0fc91cb22959f"
+checksum = "50ef6d7335c77ec3e4a7c4be74c2b9e4642569e94a4004c836f8cca71fede3a7"
[[package]]
name = "unicase"
}
fn try_hover_for_attribute(token: &SyntaxToken) -> Option<RangeInfo<HoverResult>> {
- let attr = token.ancestors().nth(1).and_then(ast::Attr::cast)?;
+ let attr = token.ancestors().find_map(ast::Attr::cast)?;
let (path, tt) = attr.as_simple_call()?;
if !tt.syntax().text_range().contains(token.text_range().start()) {
return None;
}
if let Some(resolved) = sema.resolve_path(&path) {
- if path.syntax().parent().and_then(ast::Attr::cast).is_some() {
+ if path.syntax().ancestors().find_map(ast::Attr::cast).is_some() {
if let PathResolution::Def(ModuleDef::Function(func)) = resolved {
if func.attrs(sema.db).by_key("proc_macro_attribute").exists() {
return Some(NameRefClass::Definition(resolved.into()));
ATTR@0..21
POUND@0..1 "#"
L_BRACK@1..2 "["
- PATH@2..5
- PATH_SEGMENT@2..5
- NAME_REF@2..5
- IDENT@2..5 "cfg"
- TOKEN_TREE@5..20
- L_PAREN@5..6 "("
- IDENT@6..13 "feature"
- EQ@13..14 "="
- STRING@14..19 "\"std\""
- R_PAREN@19..20 ")"
+ META@2..20
+ PATH@2..5
+ PATH_SEGMENT@2..5
+ NAME_REF@2..5
+ IDENT@2..5 "cfg"
+ TOKEN_TREE@5..20
+ L_PAREN@5..6 "("
+ IDENT@6..13 "feature"
+ EQ@13..14 "="
+ STRING@14..19 "\"std\""
+ R_PAREN@19..20 ")"
R_BRACK@20..21 "]"
MOD_KW@21..24 "mod"
NAME@24..25
ATTR@26..47
POUND@26..27 "#"
L_BRACK@27..28 "["
- PATH@28..31
- PATH_SEGMENT@28..31
- NAME_REF@28..31
- IDENT@28..31 "cfg"
- TOKEN_TREE@31..46
- L_PAREN@31..32 "("
- IDENT@32..39 "feature"
- EQ@39..40 "="
- STRING@40..45 "\"std\""
- R_PAREN@45..46 ")"
+ META@28..46
+ PATH@28..31
+ PATH_SEGMENT@28..31
+ NAME_REF@28..31
+ IDENT@28..31 "cfg"
+ TOKEN_TREE@31..46
+ L_PAREN@31..32 "("
+ IDENT@32..39 "feature"
+ EQ@39..40 "="
+ STRING@40..45 "\"std\""
+ R_PAREN@45..46 ")"
R_BRACK@46..47 "]"
MOD_KW@47..50 "mod"
NAME@50..51
}
pub(super) fn meta(p: &mut Parser) {
+ let meta = p.start();
paths::use_path(p);
match p.current() {
T!['('] | T!['['] | T!['{'] => items::token_tree(p),
_ => {}
}
+
+ meta.complete(p, META);
}
fn attr(p: &mut Parser, inner: bool) {
ITEM_LIST,
ASSOC_ITEM_LIST,
ATTR,
- META_ITEM,
+ META,
USE_TREE,
USE_TREE_LIST,
PATH,
pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }
pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
- pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
- pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
- pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
- pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
+ pub fn meta(&self) -> Option<Meta> { support::child(&self.syntax) }
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Meta {
+ pub(crate) syntax: SyntaxNode,
+}
+impl Meta {
+ pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
+ pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
+ pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
+ pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
+}
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprStmt {
pub(crate) syntax: SyntaxNode,
}
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
+impl AstNode for Meta {
+ fn can_cast(kind: SyntaxKind) -> bool { kind == META }
+ 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 ExprStmt {
fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT }
fn cast(syntax: SyntaxNode) -> Option<Self> {
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for Meta {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
impl std::fmt::Display for ExprStmt {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
impl ast::Attr {
pub fn as_simple_atom(&self) -> Option<SmolStr> {
- if self.eq_token().is_some() || self.token_tree().is_some() {
+ let meta = self.meta()?;
+ if meta.eq_token().is_some() || meta.token_tree().is_some() {
return None;
}
self.simple_name()
}
pub fn as_simple_call(&self) -> Option<(SmolStr, ast::TokenTree)> {
- let tt = self.token_tree()?;
+ let tt = self.meta()?.token_tree()?;
Some((self.simple_name()?, tt))
}
pub fn simple_name(&self) -> Option<SmolStr> {
- let path = self.path()?;
+ let path = self.meta()?.path()?;
match (path.segment(), path.qualifier()) {
(Some(segment), None) => Some(segment.syntax().first_token()?.text().into()),
_ => None,
_ => AttrKind::Outer,
}
}
+
+ pub fn path(&self) -> Option<ast::Path> {
+ self.meta()?.path()
+ }
+
+ pub fn expr(&self) -> Option<ast::Expr> {
+ self.meta()?.expr()
+ }
+
+ pub fn token_tree(&self) -> Option<ast::TokenTree> {
+ self.meta()?.token_tree()
+ }
}
#[derive(Debug, Clone, PartialEq, Eq)]
ATTR@0..18
POUND@0..1 "#"
L_BRACK@1..2 "["
- PATH@2..5
- PATH_SEGMENT@2..5
- NAME_REF@2..5
- IDENT@2..5 "foo"
- TOKEN_TREE@5..17
- L_PAREN@5..6 "("
- IDENT@6..9 "foo"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- PLUS@11..12 "+"
- COMMA@12..13 ","
- WHITESPACE@13..14 " "
- INT_NUMBER@14..16 "92"
- R_PAREN@16..17 ")"
+ META@2..17
+ PATH@2..5
+ PATH_SEGMENT@2..5
+ NAME_REF@2..5
+ IDENT@2..5 "foo"
+ TOKEN_TREE@5..17
+ L_PAREN@5..6 "("
+ IDENT@6..9 "foo"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ PLUS@11..12 "+"
+ COMMA@12..13 ","
+ WHITESPACE@13..14 " "
+ INT_NUMBER@14..16 "92"
+ R_PAREN@16..17 ")"
R_BRACK@17..18 "]"
WHITESPACE@18..19 "\n"
FN_KW@19..21 "fn"
ATTR@34..53
POUND@34..35 "#"
L_BRACK@35..36 "["
- PATH@36..39
- PATH_SEGMENT@36..39
- NAME_REF@36..39
- IDENT@36..39 "foo"
- TOKEN_TREE@39..53
- L_PAREN@39..40 "("
- WHITESPACE@40..41 "\n"
- FN_KW@41..43 "fn"
- WHITESPACE@43..44 " "
- IDENT@44..47 "foo"
- TOKEN_TREE@47..49
- L_PAREN@47..48 "("
- R_PAREN@48..49 ")"
- WHITESPACE@49..50 " "
- TOKEN_TREE@50..53
- L_CURLY@50..51 "{"
- WHITESPACE@51..52 "\n"
- R_CURLY@52..53 "}"
+ META@36..53
+ PATH@36..39
+ PATH_SEGMENT@36..39
+ NAME_REF@36..39
+ IDENT@36..39 "foo"
+ TOKEN_TREE@39..53
+ L_PAREN@39..40 "("
+ WHITESPACE@40..41 "\n"
+ FN_KW@41..43 "fn"
+ WHITESPACE@43..44 " "
+ IDENT@44..47 "foo"
+ TOKEN_TREE@47..49
+ L_PAREN@47..48 "("
+ R_PAREN@48..49 ")"
+ WHITESPACE@49..50 " "
+ TOKEN_TREE@50..53
+ L_CURLY@50..51 "{"
+ WHITESPACE@51..52 "\n"
+ R_CURLY@52..53 "}"
WHITESPACE@53..54 "\n"
error 53..53: expected R_PAREN
error 53..53: expected `]`
POUND@39..40 "#"
BANG@40..41 "!"
L_BRACK@41..42 "["
- PATH@42..45
- PATH_SEGMENT@42..45
- NAME_REF@42..45
- IDENT@42..45 "doc"
- TOKEN_TREE@45..82
- L_PAREN@45..46 "("
- STRING@46..81 "\"Inner attributes not ..."
- R_PAREN@81..82 ")"
+ META@42..82
+ PATH@42..45
+ PATH_SEGMENT@42..45
+ NAME_REF@42..45
+ IDENT@42..45 "doc"
+ TOKEN_TREE@45..82
+ L_PAREN@45..46 "("
+ STRING@46..81 "\"Inner attributes not ..."
+ R_PAREN@81..82 ")"
R_BRACK@82..83 "]"
WHITESPACE@83..92 "\n "
COMMENT@92..122 "//! Nor are ModuleDoc ..."
POUND@152..153 "#"
BANG@153..154 "!"
L_BRACK@154..155 "["
- PATH@155..158
- PATH_SEGMENT@155..158
- NAME_REF@155..158
- IDENT@155..158 "doc"
- TOKEN_TREE@158..170
- L_PAREN@158..159 "("
- STRING@159..169 "\"Nor here\""
- R_PAREN@169..170 ")"
+ META@155..170
+ PATH@155..158
+ PATH_SEGMENT@155..158
+ NAME_REF@155..158
+ IDENT@155..158 "doc"
+ TOKEN_TREE@158..170
+ L_PAREN@158..159 "("
+ STRING@159..169 "\"Nor here\""
+ R_PAREN@169..170 ")"
R_BRACK@170..171 "]"
WHITESPACE@171..180 "\n "
ATTR@180..212
POUND@180..181 "#"
BANG@181..182 "!"
L_BRACK@182..183 "["
- PATH@183..186
- PATH_SEGMENT@183..186
- NAME_REF@183..186
- IDENT@183..186 "doc"
- TOKEN_TREE@186..211
- L_PAREN@186..187 "("
- STRING@187..210 "\"We error on each attr\""
- R_PAREN@210..211 ")"
+ META@183..211
+ PATH@183..186
+ PATH_SEGMENT@183..186
+ NAME_REF@183..186
+ IDENT@183..186 "doc"
+ TOKEN_TREE@186..211
+ L_PAREN@186..187 "("
+ STRING@187..210 "\"We error on each attr\""
+ R_PAREN@210..211 ")"
R_BRACK@211..212 "]"
WHITESPACE@212..221 "\n "
COMMENT@221..251 "//! Nor are ModuleDoc ..."
POUND@283..284 "#"
BANG@284..285 "!"
L_BRACK@285..286 "["
- PATH@286..289
- PATH_SEGMENT@286..289
- NAME_REF@286..289
- IDENT@286..289 "doc"
- TOKEN_TREE@289..301
- L_PAREN@289..290 "("
- STRING@290..300 "\"Nor here\""
- R_PAREN@300..301 ")"
+ META@286..301
+ PATH@286..289
+ PATH_SEGMENT@286..289
+ NAME_REF@286..289
+ IDENT@286..289 "doc"
+ TOKEN_TREE@289..301
+ L_PAREN@289..290 "("
+ STRING@290..300 "\"Nor here\""
+ R_PAREN@300..301 ")"
R_BRACK@301..302 "]"
WHITESPACE@302..311 "\n "
COMMENT@311..341 "//! Nor are ModuleDoc ..."
ATTR@210..222
POUND@210..211 "#"
L_BRACK@211..212 "["
- PATH@212..215
- PATH_SEGMENT@212..215
- NAME_REF@212..215
- IDENT@212..215 "cfg"
- TOKEN_TREE@215..221
- L_PAREN@215..216 "("
- IDENT@216..220 "test"
- R_PAREN@220..221 ")"
+ META@212..221
+ PATH@212..215
+ PATH_SEGMENT@212..215
+ NAME_REF@212..215
+ IDENT@212..215 "cfg"
+ TOKEN_TREE@215..221
+ L_PAREN@215..216 "("
+ IDENT@216..220 "test"
+ R_PAREN@220..221 ")"
R_BRACK@221..222 "]"
WHITESPACE@222..231 "\n "
ATTR@231..232
ATTR@68..80
POUND@68..69 "#"
L_BRACK@69..70 "["
- PATH@70..73
- PATH_SEGMENT@70..73
- NAME_REF@70..73
- IDENT@70..73 "cfg"
- TOKEN_TREE@73..79
- L_PAREN@73..74 "("
- IDENT@74..78 "test"
- R_PAREN@78..79 ")"
+ META@70..79
+ PATH@70..73
+ PATH_SEGMENT@70..73
+ NAME_REF@70..73
+ IDENT@70..73 "cfg"
+ TOKEN_TREE@73..79
+ L_PAREN@73..74 "("
+ IDENT@74..78 "test"
+ R_PAREN@78..79 ")"
R_BRACK@79..80 "]"
WHITESPACE@80..85 "\n "
R_CURLY@85..86 "}"
ATTR@14..18
POUND@14..15 "#"
L_BRACK@15..16 "["
- PATH@16..17
- PATH_SEGMENT@16..17
- NAME_REF@16..17
- IDENT@16..17 "A"
+ META@16..17
+ PATH@16..17
+ PATH_SEGMENT@16..17
+ NAME_REF@16..17
+ IDENT@16..17 "A"
R_BRACK@17..18 "]"
WHITESPACE@18..19 " "
BIN_EXPR@19..24
ATTR@29..33
POUND@29..30 "#"
L_BRACK@30..31 "["
- PATH@31..32
- PATH_SEGMENT@31..32
- NAME_REF@31..32
- IDENT@31..32 "B"
+ META@31..32
+ PATH@31..32
+ PATH_SEGMENT@31..32
+ NAME_REF@31..32
+ IDENT@31..32 "B"
R_BRACK@32..33 "]"
WHITESPACE@33..34 " "
IF_EXPR@34..44
ATTR@15..43
POUND@15..16 "#"
L_BRACK@16..17 "["
- PATH@17..22
- PATH_SEGMENT@17..22
- NAME_REF@17..22
- IDENT@17..22 "serde"
- TOKEN_TREE@22..42
- L_PAREN@22..23 "("
- IDENT@23..27 "with"
- WHITESPACE@27..28 " "
- EQ@28..29 "="
- WHITESPACE@29..30 " "
- STRING@30..41 "\"url_serde\""
- R_PAREN@41..42 ")"
+ META@17..42
+ PATH@17..22
+ PATH_SEGMENT@17..22
+ NAME_REF@17..22
+ IDENT@17..22 "serde"
+ TOKEN_TREE@22..42
+ L_PAREN@22..23 "("
+ IDENT@23..27 "with"
+ WHITESPACE@27..28 " "
+ EQ@28..29 "="
+ WHITESPACE@29..30 " "
+ STRING@30..41 "\"url_serde\""
+ R_PAREN@41..42 ")"
R_BRACK@42..43 "]"
WHITESPACE@43..48 "\n "
VISIBILITY@48..51
ATTR@15..43
POUND@15..16 "#"
L_BRACK@16..17 "["
- PATH@17..22
- PATH_SEGMENT@17..22
- NAME_REF@17..22
- IDENT@17..22 "serde"
- TOKEN_TREE@22..42
- L_PAREN@22..23 "("
- IDENT@23..27 "with"
- WHITESPACE@27..28 " "
- EQ@28..29 "="
- WHITESPACE@29..30 " "
- STRING@30..41 "\"url_serde\""
- R_PAREN@41..42 ")"
+ META@17..42
+ PATH@17..22
+ PATH_SEGMENT@17..22
+ NAME_REF@17..22
+ IDENT@17..22 "serde"
+ TOKEN_TREE@22..42
+ L_PAREN@22..23 "("
+ IDENT@23..27 "with"
+ WHITESPACE@27..28 " "
+ EQ@28..29 "="
+ WHITESPACE@29..30 " "
+ STRING@30..41 "\"url_serde\""
+ R_PAREN@41..42 ")"
R_BRACK@42..43 "]"
WHITESPACE@43..48 "\n "
VISIBILITY@48..51
POUND@54..55 "#"
BANG@55..56 "!"
L_BRACK@56..57 "["
- PATH@57..60
- PATH_SEGMENT@57..60
- NAME_REF@57..60
- IDENT@57..60 "doc"
- TOKEN_TREE@60..90
- L_PAREN@60..61 "("
- STRING@61..89 "\"This is also a doc c ..."
- R_PAREN@89..90 ")"
+ META@57..90
+ PATH@57..60
+ PATH_SEGMENT@57..60
+ NAME_REF@57..60
+ IDENT@57..60 "doc"
+ TOKEN_TREE@60..90
+ L_PAREN@60..61 "("
+ STRING@61..89 "\"This is also a doc c ..."
+ R_PAREN@89..90 ")"
R_BRACK@90..91 "]"
WHITESPACE@91..92 "\n"
R_CURLY@92..93 "}"
POUND@34..35 "#"
BANG@35..36 "!"
L_BRACK@36..37 "["
- PATH@37..40
- PATH_SEGMENT@37..40
- NAME_REF@37..40
- IDENT@37..40 "doc"
- TOKEN_TREE@40..59
- L_PAREN@40..41 "("
- STRING@41..58 "\"Inner attribute\""
- R_PAREN@58..59 ")"
+ META@37..59
+ PATH@37..40
+ PATH_SEGMENT@37..40
+ NAME_REF@37..40
+ IDENT@37..40 "doc"
+ TOKEN_TREE@40..59
+ L_PAREN@40..41 "("
+ STRING@41..58 "\"Inner attribute\""
+ R_PAREN@58..59 ")"
R_BRACK@59..60 "]"
WHITESPACE@60..69 "\n "
ATTR@69..86
POUND@69..70 "#"
BANG@70..71 "!"
L_BRACK@71..72 "["
- PATH@72..75
- PATH_SEGMENT@72..75
- NAME_REF@72..75
- IDENT@72..75 "doc"
- TOKEN_TREE@75..85
- L_PAREN@75..76 "("
- STRING@76..84 "\"Can be\""
- R_PAREN@84..85 ")"
+ META@72..85
+ PATH@72..75
+ PATH_SEGMENT@72..75
+ NAME_REF@72..75
+ IDENT@72..75 "doc"
+ TOKEN_TREE@75..85
+ L_PAREN@75..76 "("
+ STRING@76..84 "\"Can be\""
+ R_PAREN@84..85 ")"
R_BRACK@85..86 "]"
WHITESPACE@86..95 "\n "
ATTR@95..113
POUND@95..96 "#"
BANG@96..97 "!"
L_BRACK@97..98 "["
- PATH@98..101
- PATH_SEGMENT@98..101
- NAME_REF@98..101
- IDENT@98..101 "doc"
- TOKEN_TREE@101..112
- L_PAREN@101..102 "("
- STRING@102..111 "\"Stacked\""
- R_PAREN@111..112 ")"
+ META@98..112
+ PATH@98..101
+ PATH_SEGMENT@98..101
+ NAME_REF@98..101
+ IDENT@98..101 "doc"
+ TOKEN_TREE@101..112
+ L_PAREN@101..102 "("
+ STRING@102..111 "\"Stacked\""
+ R_PAREN@111..112 ")"
R_BRACK@112..113 "]"
WHITESPACE@113..122 "\n "
MATCH_ARM@122..129
ATTR@34..58
POUND@34..35 "#"
L_BRACK@35..36 "["
- PATH@36..39
- PATH_SEGMENT@36..39
- NAME_REF@36..39
- IDENT@36..39 "cfg"
- TOKEN_TREE@39..57
- L_PAREN@39..40 "("
- IDENT@40..47 "feature"
- WHITESPACE@47..48 " "
- EQ@48..49 "="
- WHITESPACE@49..50 " "
- STRING@50..56 "\"some\""
- R_PAREN@56..57 ")"
+ META@36..57
+ PATH@36..39
+ PATH_SEGMENT@36..39
+ NAME_REF@36..39
+ IDENT@36..39 "cfg"
+ TOKEN_TREE@39..57
+ L_PAREN@39..40 "("
+ IDENT@40..47 "feature"
+ WHITESPACE@47..48 " "
+ EQ@48..49 "="
+ WHITESPACE@49..50 " "
+ STRING@50..56 "\"some\""
+ R_PAREN@56..57 ")"
R_BRACK@57..58 "]"
WHITESPACE@58..67 "\n "
WILDCARD_PAT@67..68
ATTR@84..109
POUND@84..85 "#"
L_BRACK@85..86 "["
- PATH@86..89
- PATH_SEGMENT@86..89
- NAME_REF@86..89
- IDENT@86..89 "cfg"
- TOKEN_TREE@89..108
- L_PAREN@89..90 "("
- IDENT@90..97 "feature"
- WHITESPACE@97..98 " "
- EQ@98..99 "="
- WHITESPACE@99..100 " "
- STRING@100..107 "\"other\""
- R_PAREN@107..108 ")"
+ META@86..108
+ PATH@86..89
+ PATH_SEGMENT@86..89
+ NAME_REF@86..89
+ IDENT@86..89 "cfg"
+ TOKEN_TREE@89..108
+ L_PAREN@89..90 "("
+ IDENT@90..97 "feature"
+ WHITESPACE@97..98 " "
+ EQ@98..99 "="
+ WHITESPACE@99..100 " "
+ STRING@100..107 "\"other\""
+ R_PAREN@107..108 ")"
R_BRACK@108..109 "]"
WHITESPACE@109..118 "\n "
WILDCARD_PAT@118..119
ATTR@135..159
POUND@135..136 "#"
L_BRACK@136..137 "["
- PATH@137..140
- PATH_SEGMENT@137..140
- NAME_REF@137..140
- IDENT@137..140 "cfg"
- TOKEN_TREE@140..158
- L_PAREN@140..141 "("
- IDENT@141..148 "feature"
- WHITESPACE@148..149 " "
- EQ@149..150 "="
- WHITESPACE@150..151 " "
- STRING@151..157 "\"many\""
- R_PAREN@157..158 ")"
+ META@137..158
+ PATH@137..140
+ PATH_SEGMENT@137..140
+ NAME_REF@137..140
+ IDENT@137..140 "cfg"
+ TOKEN_TREE@140..158
+ L_PAREN@140..141 "("
+ IDENT@141..148 "feature"
+ WHITESPACE@148..149 " "
+ EQ@149..150 "="
+ WHITESPACE@150..151 " "
+ STRING@151..157 "\"many\""
+ R_PAREN@157..158 ")"
R_BRACK@158..159 "]"
WHITESPACE@159..168 "\n "
ATTR@168..198
POUND@168..169 "#"
L_BRACK@169..170 "["
- PATH@170..173
- PATH_SEGMENT@170..173
- NAME_REF@170..173
- IDENT@170..173 "cfg"
- TOKEN_TREE@173..197
- L_PAREN@173..174 "("
- IDENT@174..181 "feature"
- WHITESPACE@181..182 " "
- EQ@182..183 "="
- WHITESPACE@183..184 " "
- STRING@184..196 "\"attributes\""
- R_PAREN@196..197 ")"
+ META@170..197
+ PATH@170..173
+ PATH_SEGMENT@170..173
+ NAME_REF@170..173
+ IDENT@170..173 "cfg"
+ TOKEN_TREE@173..197
+ L_PAREN@173..174 "("
+ IDENT@174..181 "feature"
+ WHITESPACE@181..182 " "
+ EQ@182..183 "="
+ WHITESPACE@183..184 " "
+ STRING@184..196 "\"attributes\""
+ R_PAREN@196..197 ")"
R_BRACK@197..198 "]"
WHITESPACE@198..207 "\n "
ATTR@207..233
POUND@207..208 "#"
L_BRACK@208..209 "["
- PATH@209..212
- PATH_SEGMENT@209..212
- NAME_REF@209..212
- IDENT@209..212 "cfg"
- TOKEN_TREE@212..232
- L_PAREN@212..213 "("
- IDENT@213..220 "feature"
- WHITESPACE@220..221 " "
- EQ@221..222 "="
- WHITESPACE@222..223 " "
- STRING@223..231 "\"before\""
- R_PAREN@231..232 ")"
+ META@209..232
+ PATH@209..212
+ PATH_SEGMENT@209..212
+ NAME_REF@209..212
+ IDENT@209..212 "cfg"
+ TOKEN_TREE@212..232
+ L_PAREN@212..213 "("
+ IDENT@213..220 "feature"
+ WHITESPACE@220..221 " "
+ EQ@221..222 "="
+ WHITESPACE@222..223 " "
+ STRING@223..231 "\"before\""
+ R_PAREN@231..232 ")"
R_BRACK@232..233 "]"
WHITESPACE@233..242 "\n "
WILDCARD_PAT@242..243
ATTR@7..26
POUND@7..8 "#"
L_BRACK@8..9 "["
- PATH@9..15
- PATH_SEGMENT@9..15
- NAME_REF@9..15
- IDENT@9..15 "derive"
- TOKEN_TREE@15..25
- L_PAREN@15..16 "("
- IDENT@16..24 "Lifetime"
- R_PAREN@24..25 ")"
+ META@9..25
+ PATH@9..15
+ PATH_SEGMENT@9..15
+ NAME_REF@9..15
+ IDENT@9..15 "derive"
+ TOKEN_TREE@15..25
+ L_PAREN@15..16 "("
+ IDENT@16..24 "Lifetime"
+ R_PAREN@24..25 ")"
R_BRACK@25..26 "]"
WHITESPACE@26..27 " "
LIFETIME@27..29
ATTR@31..46
POUND@31..32 "#"
L_BRACK@32..33 "["
- PATH@33..39
- PATH_SEGMENT@33..39
- NAME_REF@33..39
- IDENT@33..39 "derive"
- TOKEN_TREE@39..45
- L_PAREN@39..40 "("
- IDENT@40..44 "Type"
- R_PAREN@44..45 ")"
+ META@33..45
+ PATH@33..39
+ PATH_SEGMENT@33..39
+ NAME_REF@33..39
+ IDENT@33..39 "derive"
+ TOKEN_TREE@39..45
+ L_PAREN@39..40 "("
+ IDENT@40..44 "Type"
+ R_PAREN@44..45 ")"
R_BRACK@45..46 "]"
WHITESPACE@46..47 " "
NAME@47..48
ATTR@20..32
POUND@20..21 "#"
L_BRACK@21..22 "["
- PATH@22..25
- PATH_SEGMENT@22..25
- NAME_REF@22..25
- IDENT@22..25 "cfg"
- TOKEN_TREE@25..31
- L_PAREN@25..26 "("
- IDENT@26..30 "test"
- R_PAREN@30..31 ")"
+ META@22..31
+ PATH@22..25
+ PATH_SEGMENT@22..25
+ NAME_REF@22..25
+ IDENT@22..25 "cfg"
+ TOKEN_TREE@25..31
+ L_PAREN@25..26 "("
+ IDENT@26..30 "test"
+ R_PAREN@30..31 ")"
R_BRACK@31..32 "]"
WHITESPACE@32..33 " "
NAME_REF@33..38
ATTR@15..19
POUND@15..16 "#"
L_BRACK@16..17 "["
- PATH@17..18
- PATH_SEGMENT@17..18
- NAME_REF@17..18
- IDENT@17..18 "A"
+ META@17..18
+ PATH@17..18
+ PATH_SEGMENT@17..18
+ NAME_REF@17..18
+ IDENT@17..18 "A"
R_BRACK@18..19 "]"
WHITESPACE@19..20 " "
CALL_EXPR@20..25
ATTR@31..35
POUND@31..32 "#"
L_BRACK@32..33 "["
- PATH@33..34
- PATH_SEGMENT@33..34
- NAME_REF@33..34
- IDENT@33..34 "B"
+ META@33..34
+ PATH@33..34
+ PATH_SEGMENT@33..34
+ NAME_REF@33..34
+ IDENT@33..34 "B"
R_BRACK@34..35 "]"
WHITESPACE@35..36 " "
MACRO_CALL@36..42
ATTR@47..51
POUND@47..48 "#"
L_BRACK@48..49 "["
- PATH@49..50
- PATH_SEGMENT@49..50
- NAME_REF@49..50
- IDENT@49..50 "C"
+ META@49..50
+ PATH@49..50
+ PATH_SEGMENT@49..50
+ NAME_REF@49..50
+ IDENT@49..50 "C"
R_BRACK@50..51 "]"
WHITESPACE@51..52 " "
ATTR@52..56
POUND@52..53 "#"
L_BRACK@53..54 "["
- PATH@54..55
- PATH_SEGMENT@54..55
- NAME_REF@54..55
- IDENT@54..55 "D"
+ META@54..55
+ PATH@54..55
+ PATH_SEGMENT@54..55
+ NAME_REF@54..55
+ IDENT@54..55 "D"
R_BRACK@55..56 "]"
WHITESPACE@56..57 " "
BLOCK_EXPR@57..59
ATTR@64..68
POUND@64..65 "#"
L_BRACK@65..66 "["
- PATH@66..67
- PATH_SEGMENT@66..67
- NAME_REF@66..67
- IDENT@66..67 "D"
+ META@66..67
+ PATH@66..67
+ PATH_SEGMENT@66..67
+ NAME_REF@66..67
+ IDENT@66..67 "D"
R_BRACK@67..68 "]"
WHITESPACE@68..69 " "
RETURN_EXPR@69..78
ATTR@17..21
POUND@17..18 "#"
L_BRACK@18..19 "["
- PATH@19..20
- PATH_SEGMENT@19..20
- NAME_REF@19..20
- IDENT@19..20 "A"
+ META@19..20
+ PATH@19..20
+ PATH_SEGMENT@19..20
+ NAME_REF@19..20
+ IDENT@19..20 "A"
R_BRACK@20..21 "]"
WHITESPACE@21..22 " "
MACRO_CALL@22..28
ATTR@36..40
POUND@36..37 "#"
L_BRACK@37..38 "["
- PATH@38..39
- PATH_SEGMENT@38..39
- NAME_REF@38..39
- IDENT@38..39 "B"
+ META@38..39
+ PATH@38..39
+ PATH_SEGMENT@38..39
+ NAME_REF@38..39
+ IDENT@38..39 "B"
R_BRACK@39..40 "]"
WHITESPACE@40..41 " "
AMP@41..42 "&"
ATTR@120..127
POUND@120..121 "#"
L_BRACK@121..122 "["
- PATH@122..126
- PATH_SEGMENT@122..126
- NAME_REF@122..126
- IDENT@122..126 "attr"
+ META@122..126
+ PATH@122..126
+ PATH_SEGMENT@122..126
+ NAME_REF@122..126
+ IDENT@122..126 "attr"
R_BRACK@126..127 "]"
PARAM_LIST@127..129
PIPE@127..128 "|"
ATTR@5..16
POUND@5..6 "#"
L_BRACK@6..7 "["
- PATH@7..15
- PATH_SEGMENT@7..15
- NAME_REF@7..15
- IDENT@7..15 "must_use"
+ META@7..15
+ PATH@7..15
+ PATH_SEGMENT@7..15
+ NAME_REF@7..15
+ IDENT@7..15 "must_use"
R_BRACK@15..16 "]"
WHITESPACE@16..17 " "
NAME@17..21
ATTR@5..13
POUND@5..6 "#"
L_BRACK@6..7 "["
- PATH@7..12
- PATH_SEGMENT@7..12
- NAME_REF@7..12
- IDENT@7..12 "attr1"
+ META@7..12
+ PATH@7..12
+ PATH_SEGMENT@7..12
+ NAME_REF@7..12
+ IDENT@7..12 "attr1"
R_BRACK@12..13 "]"
WHITESPACE@13..14 " "
IDENT_PAT@14..17
ATTR@73..86
POUND@73..74 "#"
L_BRACK@74..75 "["
- PATH@75..78
- PATH_SEGMENT@75..78
- NAME_REF@75..78
- IDENT@75..78 "cfg"
- TOKEN_TREE@78..85
- L_PAREN@78..79 "("
- IDENT@79..82 "any"
- TOKEN_TREE@82..84
- L_PAREN@82..83 "("
- R_PAREN@83..84 ")"
- R_PAREN@84..85 ")"
+ META@75..85
+ PATH@75..78
+ PATH_SEGMENT@75..78
+ NAME_REF@75..78
+ IDENT@75..78 "cfg"
+ TOKEN_TREE@78..85
+ L_PAREN@78..79 "("
+ IDENT@79..82 "any"
+ TOKEN_TREE@82..84
+ L_PAREN@82..83 "("
+ R_PAREN@83..84 ")"
+ R_PAREN@84..85 ")"
R_BRACK@85..86 "]"
WHITESPACE@86..87 " "
NAME_REF@87..88
ATTR@23..35
POUND@23..24 "#"
L_BRACK@24..25 "["
- PATH@25..28
- PATH_SEGMENT@25..28
- NAME_REF@25..28
- IDENT@25..28 "cfg"
- TOKEN_TREE@28..34
- L_PAREN@28..29 "("
- IDENT@29..33 "test"
- R_PAREN@33..34 ")"
+ META@25..34
+ PATH@25..28
+ PATH_SEGMENT@25..28
+ NAME_REF@25..28
+ IDENT@25..28 "cfg"
+ TOKEN_TREE@28..34
+ L_PAREN@28..29 "("
+ IDENT@29..33 "test"
+ R_PAREN@33..34 ")"
R_BRACK@34..35 "]"
WHITESPACE@35..36 " "
INT_NUMBER@36..37 "2"
ATTR@20..27
POUND@20..21 "#"
L_BRACK@21..22 "["
- PATH@22..26
- PATH_SEGMENT@22..26
- NAME_REF@22..26
- IDENT@22..26 "attr"
+ META@22..26
+ PATH@22..26
+ PATH_SEGMENT@22..26
+ NAME_REF@22..26
+ IDENT@22..26 "attr"
R_BRACK@26..27 "]"
WHITESPACE@27..28 " "
INT_NUMBER@28..30 "92"
ATTR@26..38
POUND@26..27 "#"
L_BRACK@27..28 "["
- PATH@28..31
- PATH_SEGMENT@28..31
- NAME_REF@28..31
- IDENT@28..31 "cfg"
- TOKEN_TREE@31..37
- L_PAREN@31..32 "("
- IDENT@32..36 "test"
- R_PAREN@36..37 ")"
+ META@28..37
+ PATH@28..31
+ PATH_SEGMENT@28..31
+ NAME_REF@28..31
+ IDENT@28..31 "cfg"
+ TOKEN_TREE@31..37
+ L_PAREN@31..32 "("
+ IDENT@32..36 "test"
+ R_PAREN@36..37 ")"
R_BRACK@37..38 "]"
WHITESPACE@38..39 " "
INT_NUMBER@39..40 "2"
POUND@0..1 "#"
BANG@1..2 "!"
L_BRACK@2..3 "["
- PATH@3..7
- PATH_SEGMENT@3..7
- NAME_REF@3..7
- IDENT@3..7 "attr"
+ META@3..7
+ PATH@3..7
+ PATH_SEGMENT@3..7
+ NAME_REF@3..7
+ IDENT@3..7 "attr"
R_BRACK@7..8 "]"
WHITESPACE@8..9 "\n"
ATTR@9..23
POUND@9..10 "#"
BANG@10..11 "!"
L_BRACK@11..12 "["
- PATH@12..16
- PATH_SEGMENT@12..16
- NAME_REF@12..16
- IDENT@12..16 "attr"
- TOKEN_TREE@16..22
- L_PAREN@16..17 "("
- TRUE_KW@17..21 "true"
- R_PAREN@21..22 ")"
+ META@12..22
+ PATH@12..16
+ PATH_SEGMENT@12..16
+ NAME_REF@12..16
+ IDENT@12..16 "attr"
+ TOKEN_TREE@16..22
+ L_PAREN@16..17 "("
+ TRUE_KW@17..21 "true"
+ R_PAREN@21..22 ")"
R_BRACK@22..23 "]"
WHITESPACE@23..24 "\n"
ATTR@24..39
POUND@24..25 "#"
BANG@25..26 "!"
L_BRACK@26..27 "["
- PATH@27..31
- PATH_SEGMENT@27..31
- NAME_REF@27..31
- IDENT@27..31 "attr"
- TOKEN_TREE@31..38
- L_PAREN@31..32 "("
- IDENT@32..37 "ident"
- R_PAREN@37..38 ")"
+ META@27..38
+ PATH@27..31
+ PATH_SEGMENT@27..31
+ NAME_REF@27..31
+ IDENT@27..31 "attr"
+ TOKEN_TREE@31..38
+ L_PAREN@31..32 "("
+ IDENT@32..37 "ident"
+ R_PAREN@37..38 ")"
R_BRACK@38..39 "]"
WHITESPACE@39..40 "\n"
ATTR@40..116
POUND@40..41 "#"
BANG@41..42 "!"
L_BRACK@42..43 "["
- PATH@43..47
- PATH_SEGMENT@43..47
- NAME_REF@43..47
- IDENT@43..47 "attr"
- TOKEN_TREE@47..115
- L_PAREN@47..48 "("
- IDENT@48..53 "ident"
- COMMA@53..54 ","
- WHITESPACE@54..55 " "
- INT_NUMBER@55..58 "100"
- COMMA@58..59 ","
- WHITESPACE@59..60 " "
- TRUE_KW@60..64 "true"
- COMMA@64..65 ","
- WHITESPACE@65..66 " "
- STRING@66..72 "\"true\""
- COMMA@72..73 ","
- WHITESPACE@73..74 " "
- IDENT@74..79 "ident"
- WHITESPACE@79..80 " "
- EQ@80..81 "="
- WHITESPACE@81..82 " "
- INT_NUMBER@82..85 "100"
- COMMA@85..86 ","
- WHITESPACE@86..87 " "
- IDENT@87..92 "ident"
- WHITESPACE@92..93 " "
- EQ@93..94 "="
- WHITESPACE@94..95 " "
- STRING@95..102 "\"hello\""
- COMMA@102..103 ","
- WHITESPACE@103..104 " "
- IDENT@104..109 "ident"
- TOKEN_TREE@109..114
- L_PAREN@109..110 "("
- INT_NUMBER@110..113 "100"
- R_PAREN@113..114 ")"
- R_PAREN@114..115 ")"
+ META@43..115
+ PATH@43..47
+ PATH_SEGMENT@43..47
+ NAME_REF@43..47
+ IDENT@43..47 "attr"
+ TOKEN_TREE@47..115
+ L_PAREN@47..48 "("
+ IDENT@48..53 "ident"
+ COMMA@53..54 ","
+ WHITESPACE@54..55 " "
+ INT_NUMBER@55..58 "100"
+ COMMA@58..59 ","
+ WHITESPACE@59..60 " "
+ TRUE_KW@60..64 "true"
+ COMMA@64..65 ","
+ WHITESPACE@65..66 " "
+ STRING@66..72 "\"true\""
+ COMMA@72..73 ","
+ WHITESPACE@73..74 " "
+ IDENT@74..79 "ident"
+ WHITESPACE@79..80 " "
+ EQ@80..81 "="
+ WHITESPACE@81..82 " "
+ INT_NUMBER@82..85 "100"
+ COMMA@85..86 ","
+ WHITESPACE@86..87 " "
+ IDENT@87..92 "ident"
+ WHITESPACE@92..93 " "
+ EQ@93..94 "="
+ WHITESPACE@94..95 " "
+ STRING@95..102 "\"hello\""
+ COMMA@102..103 ","
+ WHITESPACE@103..104 " "
+ IDENT@104..109 "ident"
+ TOKEN_TREE@109..114
+ L_PAREN@109..110 "("
+ INT_NUMBER@110..113 "100"
+ R_PAREN@113..114 ")"
+ R_PAREN@114..115 ")"
R_BRACK@115..116 "]"
WHITESPACE@116..117 "\n"
ATTR@117..130
POUND@117..118 "#"
BANG@118..119 "!"
L_BRACK@119..120 "["
- PATH@120..124
- PATH_SEGMENT@120..124
- NAME_REF@120..124
- IDENT@120..124 "attr"
- TOKEN_TREE@124..129
- L_PAREN@124..125 "("
- INT_NUMBER@125..128 "100"
- R_PAREN@128..129 ")"
+ META@120..129
+ PATH@120..124
+ PATH_SEGMENT@120..124
+ NAME_REF@120..124
+ IDENT@120..124 "attr"
+ TOKEN_TREE@124..129
+ L_PAREN@124..125 "("
+ INT_NUMBER@125..128 "100"
+ R_PAREN@128..129 ")"
R_BRACK@129..130 "]"
WHITESPACE@130..131 "\n"
ATTR@131..155
POUND@131..132 "#"
BANG@132..133 "!"
L_BRACK@133..134 "["
- PATH@134..138
- PATH_SEGMENT@134..138
- NAME_REF@134..138
- IDENT@134..138 "attr"
- TOKEN_TREE@138..154
- L_PAREN@138..139 "("
- IDENT@139..146 "enabled"
- WHITESPACE@146..147 " "
- EQ@147..148 "="
- WHITESPACE@148..149 " "
- TRUE_KW@149..153 "true"
- R_PAREN@153..154 ")"
+ META@134..154
+ PATH@134..138
+ PATH_SEGMENT@134..138
+ NAME_REF@134..138
+ IDENT@134..138 "attr"
+ TOKEN_TREE@138..154
+ L_PAREN@138..139 "("
+ IDENT@139..146 "enabled"
+ WHITESPACE@146..147 " "
+ EQ@147..148 "="
+ WHITESPACE@148..149 " "
+ TRUE_KW@149..153 "true"
+ R_PAREN@153..154 ")"
R_BRACK@154..155 "]"
WHITESPACE@155..156 "\n"
ATTR@156..173
POUND@156..157 "#"
BANG@157..158 "!"
L_BRACK@158..159 "["
- PATH@159..166
- PATH_SEGMENT@159..166
- NAME_REF@159..166
- IDENT@159..166 "enabled"
- TOKEN_TREE@166..172
- L_PAREN@166..167 "("
- TRUE_KW@167..171 "true"
- R_PAREN@171..172 ")"
+ META@159..172
+ PATH@159..166
+ PATH_SEGMENT@159..166
+ NAME_REF@159..166
+ IDENT@159..166 "enabled"
+ TOKEN_TREE@166..172
+ L_PAREN@166..167 "("
+ TRUE_KW@167..171 "true"
+ R_PAREN@171..172 ")"
R_BRACK@172..173 "]"
WHITESPACE@173..174 "\n"
ATTR@174..191
POUND@174..175 "#"
BANG@175..176 "!"
L_BRACK@176..177 "["
- PATH@177..181
- PATH_SEGMENT@177..181
- NAME_REF@177..181
- IDENT@177..181 "attr"
- TOKEN_TREE@181..190
- L_PAREN@181..182 "("
- STRING@182..189 "\"hello\""
- R_PAREN@189..190 ")"
+ META@177..190
+ PATH@177..181
+ PATH_SEGMENT@177..181
+ NAME_REF@177..181
+ IDENT@177..181 "attr"
+ TOKEN_TREE@181..190
+ L_PAREN@181..182 "("
+ STRING@182..189 "\"hello\""
+ R_PAREN@189..190 ")"
R_BRACK@190..191 "]"
WHITESPACE@191..192 "\n"
ATTR@192..214
POUND@192..193 "#"
BANG@193..194 "!"
L_BRACK@194..195 "["
- PATH@195..199
- PATH_SEGMENT@195..199
- NAME_REF@195..199
- IDENT@195..199 "repr"
- TOKEN_TREE@199..213
- L_PAREN@199..200 "("
- IDENT@200..201 "C"
- COMMA@201..202 ","
- WHITESPACE@202..203 " "
- IDENT@203..208 "align"
- WHITESPACE@208..209 " "
- EQ@209..210 "="
- WHITESPACE@210..211 " "
- INT_NUMBER@211..212 "4"
- R_PAREN@212..213 ")"
+ META@195..213
+ PATH@195..199
+ PATH_SEGMENT@195..199
+ NAME_REF@195..199
+ IDENT@195..199 "repr"
+ TOKEN_TREE@199..213
+ L_PAREN@199..200 "("
+ IDENT@200..201 "C"
+ COMMA@201..202 ","
+ WHITESPACE@202..203 " "
+ IDENT@203..208 "align"
+ WHITESPACE@208..209 " "
+ EQ@209..210 "="
+ WHITESPACE@210..211 " "
+ INT_NUMBER@211..212 "4"
+ R_PAREN@212..213 ")"
R_BRACK@213..214 "]"
WHITESPACE@214..215 "\n"
ATTR@215..236
POUND@215..216 "#"
BANG@216..217 "!"
L_BRACK@217..218 "["
- PATH@218..222
- PATH_SEGMENT@218..222
- NAME_REF@218..222
- IDENT@218..222 "repr"
- TOKEN_TREE@222..235
- L_PAREN@222..223 "("
- IDENT@223..224 "C"
- COMMA@224..225 ","
- WHITESPACE@225..226 " "
- IDENT@226..231 "align"
- TOKEN_TREE@231..234
- L_PAREN@231..232 "("
- INT_NUMBER@232..233 "4"
- R_PAREN@233..234 ")"
- R_PAREN@234..235 ")"
+ META@218..235
+ PATH@218..222
+ PATH_SEGMENT@218..222
+ NAME_REF@218..222
+ IDENT@218..222 "repr"
+ TOKEN_TREE@222..235
+ L_PAREN@222..223 "("
+ IDENT@223..224 "C"
+ COMMA@224..225 ","
+ WHITESPACE@225..226 " "
+ IDENT@226..231 "align"
+ TOKEN_TREE@231..234
+ L_PAREN@231..232 "("
+ INT_NUMBER@232..233 "4"
+ R_PAREN@233..234 ")"
+ R_PAREN@234..235 ")"
R_BRACK@235..236 "]"
POUND@79..80 "#"
BANG@80..81 "!"
L_BRACK@81..82 "["
- PATH@82..86
- PATH_SEGMENT@82..86
- NAME_REF@82..86
- IDENT@82..86 "attr"
+ META@82..86
+ PATH@82..86
+ PATH_SEGMENT@82..86
+ NAME_REF@82..86
+ IDENT@82..86 "attr"
R_BRACK@86..87 "]"
WHITESPACE@87..92 "\n "
MODULE@92..98
ATTR@0..12
POUND@0..1 "#"
L_BRACK@1..2 "["
- PATH@2..5
- PATH_SEGMENT@2..5
- NAME_REF@2..5
- IDENT@2..5 "cfg"
- TOKEN_TREE@5..11
- L_PAREN@5..6 "("
- IDENT@6..10 "test"
- R_PAREN@10..11 ")"
+ META@2..11
+ PATH@2..5
+ PATH_SEGMENT@2..5
+ NAME_REF@2..5
+ IDENT@2..5 "cfg"
+ TOKEN_TREE@5..11
+ L_PAREN@5..6 "("
+ IDENT@6..10 "test"
+ R_PAREN@10..11 ")"
R_BRACK@11..12 "]"
WHITESPACE@12..13 "\n"
ATTR@13..22
POUND@13..14 "#"
L_BRACK@14..15 "["
- PATH@15..21
- PATH_SEGMENT@15..21
- NAME_REF@15..21
- IDENT@15..21 "ignore"
+ META@15..21
+ PATH@15..21
+ PATH_SEGMENT@15..21
+ NAME_REF@15..21
+ IDENT@15..21 "ignore"
R_BRACK@21..22 "]"
WHITESPACE@22..23 "\n"
FN_KW@23..25 "fn"
ATTR@36..52
POUND@36..37 "#"
L_BRACK@37..38 "["
- PATH@38..42
- PATH_SEGMENT@38..42
- NAME_REF@38..42
- IDENT@38..42 "path"
- WHITESPACE@42..43 " "
- EQ@43..44 "="
- WHITESPACE@44..45 " "
- LITERAL@45..51
- STRING@45..51 "\"a.rs\""
+ META@38..51
+ PATH@38..42
+ PATH_SEGMENT@38..42
+ NAME_REF@38..42
+ IDENT@38..42 "path"
+ WHITESPACE@42..43 " "
+ EQ@43..44 "="
+ WHITESPACE@44..45 " "
+ LITERAL@45..51
+ STRING@45..51 "\"a.rs\""
R_BRACK@51..52 "]"
WHITESPACE@52..53 "\n"
MOD_KW@53..56 "mod"
ATTR@0..10
POUND@0..1 "#"
L_BRACK@1..2 "["
- PATH@2..5
- PATH_SEGMENT@2..5
- NAME_REF@2..5
- IDENT@2..5 "foo"
- TOKEN_TREE@5..9
- L_PAREN@5..6 "("
- IDENT@6..7 "a"
- COMMA@7..8 ","
- R_PAREN@8..9 ")"
+ META@2..9
+ PATH@2..5
+ PATH_SEGMENT@2..5
+ NAME_REF@2..5
+ IDENT@2..5 "foo"
+ TOKEN_TREE@5..9
+ L_PAREN@5..6 "("
+ IDENT@6..7 "a"
+ COMMA@7..8 ","
+ R_PAREN@8..9 ")"
R_BRACK@9..10 "]"
WHITESPACE@10..11 "\n"
FN_KW@11..13 "fn"
POUND@271..272 "#"
BANG@272..273 "!"
L_BRACK@273..274 "["
- PATH@274..279
- PATH_SEGMENT@274..279
- NAME_REF@274..279
- IDENT@274..279 "allow"
- TOKEN_TREE@279..301
- L_PAREN@279..280 "("
- IDENT@280..300 "non_camel_case_types"
- R_PAREN@300..301 ")"
+ META@274..301
+ PATH@274..279
+ PATH_SEGMENT@274..279
+ NAME_REF@274..279
+ IDENT@274..279 "allow"
+ TOKEN_TREE@279..301
+ L_PAREN@279..280 "("
+ IDENT@280..300 "non_camel_case_types"
+ R_PAREN@300..301 ")"
R_BRACK@301..302 "]"
WHITESPACE@302..303 "\n"
ATTR@303..323
POUND@303..304 "#"
BANG@304..305 "!"
L_BRACK@305..306 "["
- PATH@306..311
- PATH_SEGMENT@306..311
- NAME_REF@306..311
- IDENT@306..311 "allow"
- TOKEN_TREE@311..322
- L_PAREN@311..312 "("
- IDENT@312..321 "dead_code"
- R_PAREN@321..322 ")"
+ META@306..322
+ PATH@306..311
+ PATH_SEGMENT@306..311
+ NAME_REF@306..311
+ IDENT@306..311 "allow"
+ TOKEN_TREE@311..322
+ L_PAREN@311..312 "("
+ IDENT@312..321 "dead_code"
+ R_PAREN@321..322 ")"
R_BRACK@322..323 "]"
WHITESPACE@323..324 "\n"
ATTR@324..351
POUND@324..325 "#"
BANG@325..326 "!"
L_BRACK@326..327 "["
- PATH@327..332
- PATH_SEGMENT@327..332
- NAME_REF@327..332
- IDENT@327..332 "allow"
- TOKEN_TREE@332..350
- L_PAREN@332..333 "("
- IDENT@333..349 "unreachable_code"
- R_PAREN@349..350 ")"
+ META@327..350
+ PATH@327..332
+ PATH_SEGMENT@327..332
+ NAME_REF@327..332
+ IDENT@327..332 "allow"
+ TOKEN_TREE@332..350
+ L_PAREN@332..333 "("
+ IDENT@333..349 "unreachable_code"
+ R_PAREN@349..350 ")"
R_BRACK@350..351 "]"
WHITESPACE@351..352 "\n"
ATTR@352..376
POUND@352..353 "#"
BANG@353..354 "!"
L_BRACK@354..355 "["
- PATH@355..360
- PATH_SEGMENT@355..360
- NAME_REF@355..360
- IDENT@355..360 "allow"
- TOKEN_TREE@360..375
- L_PAREN@360..361 "("
- IDENT@361..374 "unused_parens"
- R_PAREN@374..375 ")"
+ META@355..375
+ PATH@355..360
+ PATH_SEGMENT@355..360
+ NAME_REF@355..360
+ IDENT@355..360 "allow"
+ TOKEN_TREE@360..375
+ L_PAREN@360..361 "("
+ IDENT@361..374 "unused_parens"
+ R_PAREN@374..375 ")"
R_BRACK@375..376 "]"
WHITESPACE@376..378 "\n\n"
ATTR@378..405
POUND@378..379 "#"
BANG@379..380 "!"
L_BRACK@380..381 "["
- PATH@381..396
- PATH_SEGMENT@381..396
- NAME_REF@381..396
- IDENT@381..396 "recursion_limit"
- WHITESPACE@396..397 " "
- EQ@397..398 "="
- WHITESPACE@398..399 " "
- LITERAL@399..404
- STRING@399..404 "\"128\""
+ META@381..404
+ PATH@381..396
+ PATH_SEGMENT@381..396
+ NAME_REF@381..396
+ IDENT@381..396 "recursion_limit"
+ WHITESPACE@396..397 " "
+ EQ@397..398 "="
+ WHITESPACE@398..399 " "
+ LITERAL@399..404
+ STRING@399..404 "\"128\""
R_BRACK@404..405 "]"
WHITESPACE@405..407 "\n\n"
USE@407..427
ATTR@77..106
POUND@77..78 "#"
L_BRACK@78..79 "["
- PATH@79..82
- PATH_SEGMENT@79..82
- NAME_REF@79..82
- IDENT@79..82 "cfg"
- TOKEN_TREE@82..105
- L_PAREN@82..83 "("
- IDENT@83..90 "feature"
- WHITESPACE@90..91 " "
- EQ@91..92 "="
- WHITESPACE@92..93 " "
- STRING@93..104 "\"backtrace\""
- R_PAREN@104..105 ")"
+ META@79..105
+ PATH@79..82
+ PATH_SEGMENT@79..82
+ NAME_REF@79..82
+ IDENT@79..82 "cfg"
+ TOKEN_TREE@82..105
+ L_PAREN@82..83 "("
+ IDENT@83..90 "feature"
+ WHITESPACE@90..91 " "
+ EQ@91..92 "="
+ WHITESPACE@92..93 " "
+ STRING@93..104 "\"backtrace\""
+ R_PAREN@104..105 ")"
R_BRACK@105..106 "]"
WHITESPACE@106..111 "\n "
LET_KW@111..114 "let"
POUND@17..18 "#"
BANG@18..19 "!"
L_BRACK@19..20 "["
- PATH@20..23
- PATH_SEGMENT@20..23
- NAME_REF@20..23
- IDENT@20..23 "doc"
- TOKEN_TREE@23..56
- L_PAREN@23..24 "("
- STRING@24..55 "\"Inner attributes all ..."
- R_PAREN@55..56 ")"
+ META@20..56
+ PATH@20..23
+ PATH_SEGMENT@20..23
+ NAME_REF@20..23
+ IDENT@20..23 "doc"
+ TOKEN_TREE@23..56
+ L_PAREN@23..24 "("
+ STRING@24..55 "\"Inner attributes all ..."
+ R_PAREN@55..56 ")"
R_BRACK@56..57 "]"
WHITESPACE@57..62 "\n "
COMMENT@62..97 "//! As are ModuleDoc ..."
POUND@112..113 "#"
BANG@113..114 "!"
L_BRACK@114..115 "["
- PATH@115..118
- PATH_SEGMENT@115..118
- NAME_REF@115..118
- IDENT@115..118 "doc"
- TOKEN_TREE@118..179
- L_PAREN@118..119 "("
- STRING@119..178 "\"Inner attributes are ..."
- R_PAREN@178..179 ")"
+ META@115..179
+ PATH@115..118
+ PATH_SEGMENT@115..118
+ NAME_REF@115..118
+ IDENT@115..118 "doc"
+ TOKEN_TREE@118..179
+ L_PAREN@118..119 "("
+ STRING@119..178 "\"Inner attributes are ..."
+ R_PAREN@178..179 ")"
R_BRACK@179..180 "]"
WHITESPACE@180..189 "\n "
ATTR@189..244
POUND@189..190 "#"
BANG@190..191 "!"
L_BRACK@191..192 "["
- PATH@192..195
- PATH_SEGMENT@192..195
- NAME_REF@192..195
- IDENT@192..195 "doc"
- TOKEN_TREE@195..243
- L_PAREN@195..196 "("
- STRING@196..242 "\"Being validated is n ..."
- R_PAREN@242..243 ")"
+ META@192..243
+ PATH@192..195
+ PATH_SEGMENT@192..195
+ NAME_REF@192..195
+ IDENT@192..195 "doc"
+ TOKEN_TREE@195..243
+ L_PAREN@195..196 "("
+ STRING@196..242 "\"Being validated is n ..."
+ R_PAREN@242..243 ")"
R_BRACK@243..244 "]"
WHITESPACE@244..253 "\n "
COMMENT@253..288 "//! As are ModuleDoc ..."
POUND@310..311 "#"
BANG@311..312 "!"
L_BRACK@312..313 "["
- PATH@313..316
- PATH_SEGMENT@313..316
- NAME_REF@313..316
- IDENT@313..316 "doc"
- TOKEN_TREE@316..408
- L_PAREN@316..317 "("
- STRING@317..407 "\"Inner attributes are ..."
- R_PAREN@407..408 ")"
+ META@313..408
+ PATH@313..316
+ PATH_SEGMENT@313..316
+ NAME_REF@313..316
+ IDENT@313..316 "doc"
+ TOKEN_TREE@316..408
+ L_PAREN@316..317 "("
+ STRING@317..407 "\"Inner attributes are ..."
+ R_PAREN@407..408 ")"
R_BRACK@408..409 "]"
WHITESPACE@409..418 "\n "
COMMENT@418..453 "//! As are ModuleDoc ..."
ATTR@488..533
POUND@488..489 "#"
L_BRACK@489..490 "["
- PATH@490..493
- PATH_SEGMENT@490..493
- NAME_REF@490..493
- IDENT@490..493 "doc"
- TOKEN_TREE@493..532
- L_PAREN@493..494 "("
- STRING@494..531 "\"Outer attributes are ..."
- R_PAREN@531..532 ")"
+ META@490..532
+ PATH@490..493
+ PATH_SEGMENT@490..493
+ NAME_REF@490..493
+ IDENT@490..493 "doc"
+ TOKEN_TREE@493..532
+ L_PAREN@493..494 "("
+ STRING@494..531 "\"Outer attributes are ..."
+ R_PAREN@531..532 ")"
R_BRACK@532..533 "]"
WHITESPACE@533..534 " "
L_CURLY@534..535 "{"
POUND@690..691 "#"
BANG@691..692 "!"
L_BRACK@692..693 "["
- PATH@693..698
- PATH_SEGMENT@693..698
- NAME_REF@693..698
- IDENT@693..698 "allow"
- TOKEN_TREE@698..716
- L_PAREN@698..699 "("
- IDENT@699..715 "unused_variables"
- R_PAREN@715..716 ")"
+ META@693..716
+ PATH@693..698
+ PATH_SEGMENT@693..698
+ NAME_REF@693..698
+ IDENT@693..698 "allow"
+ TOKEN_TREE@698..716
+ L_PAREN@698..699 "("
+ IDENT@699..715 "unused_variables"
+ R_PAREN@715..716 ")"
R_BRACK@716..717 "]"
WHITESPACE@717..718 " "
COMMENT@718..755 "// this is `inner_at ..."
POUND@47..48 "#"
BANG@48..49 "!"
L_BRACK@49..50 "["
- PATH@50..53
- PATH_SEGMENT@50..53
- NAME_REF@50..53
- IDENT@50..53 "doc"
- TOKEN_TREE@53..83
- L_PAREN@53..54 "("
- STRING@54..82 "\"This is also a doc c ..."
- R_PAREN@82..83 ")"
+ META@50..83
+ PATH@50..53
+ PATH_SEGMENT@50..53
+ NAME_REF@50..53
+ IDENT@50..53 "doc"
+ TOKEN_TREE@53..83
+ L_PAREN@53..54 "("
+ STRING@54..82 "\"This is also a doc c ..."
+ R_PAREN@82..83 ")"
R_BRACK@83..84 "]"
WHITESPACE@84..85 "\n"
R_CURLY@85..86 "}"
ATTR@6..14
POUND@6..7 "#"
L_BRACK@7..8 "["
- PATH@8..13
- PATH_SEGMENT@8..13
- NAME_REF@8..13
- IDENT@8..13 "attr1"
+ META@8..13
+ PATH@8..13
+ PATH_SEGMENT@8..13
+ NAME_REF@8..13
+ IDENT@8..13 "attr1"
R_BRACK@13..14 "]"
WHITESPACE@14..15 " "
ATTR@15..23
POUND@15..16 "#"
L_BRACK@16..17 "["
- PATH@17..22
- PATH_SEGMENT@17..22
- NAME_REF@17..22
- IDENT@17..22 "attr2"
+ META@17..22
+ PATH@17..22
+ PATH_SEGMENT@17..22
+ NAME_REF@17..22
+ IDENT@17..22 "attr2"
R_BRACK@22..23 "]"
WHITESPACE@23..24 " "
IDENT_PAT@24..27
ATTR@44..52
POUND@44..45 "#"
L_BRACK@45..46 "["
- PATH@46..51
- PATH_SEGMENT@46..51
- NAME_REF@46..51
- IDENT@46..51 "attr1"
+ META@46..51
+ PATH@46..51
+ PATH_SEGMENT@46..51
+ NAME_REF@46..51
+ IDENT@46..51 "attr1"
R_BRACK@51..52 "]"
WHITESPACE@52..53 " "
IDENT_PAT@53..54
ATTR@106..113
POUND@106..107 "#"
L_BRACK@107..108 "["
- PATH@108..112
- PATH_SEGMENT@108..112
- NAME_REF@108..112
- IDENT@108..112 "attr"
+ META@108..112
+ PATH@108..112
+ PATH_SEGMENT@108..112
+ NAME_REF@108..112
+ IDENT@108..112 "attr"
R_BRACK@112..113 "]"
WHITESPACE@113..114 " "
DOT3@114..117 "..."
ATTR@146..153
POUND@146..147 "#"
L_BRACK@147..148 "["
- PATH@148..152
- PATH_SEGMENT@148..152
- NAME_REF@148..152
- IDENT@148..152 "attr"
+ META@148..152
+ PATH@148..152
+ PATH_SEGMENT@148..152
+ NAME_REF@148..152
+ IDENT@148..152 "attr"
R_BRACK@152..153 "]"
WHITESPACE@153..154 " "
REF_TYPE@154..166
ATTR@197..204
POUND@197..198 "#"
L_BRACK@198..199 "["
- PATH@199..203
- PATH_SEGMENT@199..203
- NAME_REF@199..203
- IDENT@199..203 "attr"
+ META@199..203
+ PATH@199..203
+ PATH_SEGMENT@199..203
+ NAME_REF@199..203
+ IDENT@199..203 "attr"
R_BRACK@203..204 "]"
WHITESPACE@204..205 " "
WILDCARD_PAT@205..206
POUND@213..214 "#"
WHITESPACE@214..215 " "
L_BRACK@215..216 "["
- PATH@216..220
- PATH_SEGMENT@216..220
- NAME_REF@216..220
- IDENT@216..220 "attr"
+ META@216..220
+ PATH@216..220
+ PATH_SEGMENT@216..220
+ NAME_REF@216..220
+ IDENT@216..220 "attr"
R_BRACK@220..221 "]"
WHITESPACE@221..222 " "
IDENT_PAT@222..227
ATTR@257..268
POUND@257..258 "#"
L_BRACK@258..259 "["
- PATH@259..267
- PATH_SEGMENT@259..267
- NAME_REF@259..267
- IDENT@259..267 "must_use"
+ META@259..267
+ PATH@259..267
+ PATH_SEGMENT@259..267
+ NAME_REF@259..267
+ IDENT@259..267 "must_use"
R_BRACK@267..268 "]"
WHITESPACE@268..269 " "
NAME@269..273
ATTR@289..296
POUND@289..290 "#"
L_BRACK@290..291 "["
- PATH@291..295
- PATH_SEGMENT@291..295
- NAME_REF@291..295
- IDENT@291..295 "attr"
+ META@291..295
+ PATH@291..295
+ PATH_SEGMENT@291..295
+ NAME_REF@291..295
+ IDENT@291..295 "attr"
R_BRACK@295..296 "]"
WHITESPACE@296..297 " "
NAME@297..301
ATTR@317..324
POUND@317..318 "#"
L_BRACK@318..319 "["
- PATH@319..323
- PATH_SEGMENT@319..323
- NAME_REF@319..323
- IDENT@319..323 "attr"
+ META@319..323
+ PATH@319..323
+ PATH_SEGMENT@319..323
+ NAME_REF@319..323
+ IDENT@319..323 "attr"
R_BRACK@323..324 "]"
WHITESPACE@324..325 " "
AMP@325..326 "&"
ATTR@350..357
POUND@350..351 "#"
L_BRACK@351..352 "["
- PATH@352..356
- PATH_SEGMENT@352..356
- NAME_REF@352..356
- IDENT@352..356 "attr"
+ META@352..356
+ PATH@352..356
+ PATH_SEGMENT@352..356
+ NAME_REF@352..356
+ IDENT@352..356 "attr"
R_BRACK@356..357 "]"
WHITESPACE@357..358 " "
AMP@358..359 "&"
ATTR@387..394
POUND@387..388 "#"
L_BRACK@388..389 "["
- PATH@389..393
- PATH_SEGMENT@389..393
- NAME_REF@389..393
- IDENT@389..393 "attr"
+ META@389..393
+ PATH@389..393
+ PATH_SEGMENT@389..393
+ NAME_REF@389..393
+ IDENT@389..393 "attr"
R_BRACK@393..394 "]"
WHITESPACE@394..395 " "
AMP@395..396 "&"
ATTR@423..430
POUND@423..424 "#"
L_BRACK@424..425 "["
- PATH@425..429
- PATH_SEGMENT@425..429
- NAME_REF@425..429
- IDENT@425..429 "attr"
+ META@425..429
+ PATH@425..429
+ PATH_SEGMENT@425..429
+ NAME_REF@425..429
+ IDENT@425..429 "attr"
R_BRACK@429..430 "]"
WHITESPACE@430..431 " "
AMP@431..432 "&"
ATTR@458..465
POUND@458..459 "#"
L_BRACK@459..460 "["
- PATH@460..464
- PATH_SEGMENT@460..464
- NAME_REF@460..464
- IDENT@460..464 "attr"
+ META@460..464
+ PATH@460..464
+ PATH_SEGMENT@460..464
+ NAME_REF@460..464
+ IDENT@460..464 "attr"
R_BRACK@464..465 "]"
WHITESPACE@465..466 " "
NAME@466..470
ATTR@491..498
POUND@491..492 "#"
L_BRACK@492..493 "["
- PATH@493..497
- PATH_SEGMENT@493..497
- NAME_REF@493..497
- IDENT@493..497 "attr"
+ META@493..497
+ PATH@493..497
+ PATH_SEGMENT@493..497
+ NAME_REF@493..497
+ IDENT@493..497 "attr"
R_BRACK@497..498 "]"
WHITESPACE@498..499 " "
NAME@499..503
ATTR@14..29
POUND@14..15 "#"
L_BRACK@15..16 "["
- PATH@16..28
- PATH_SEGMENT@16..28
- NAME_REF@16..28
- IDENT@16..28 "macro_export"
+ META@16..28
+ PATH@16..28
+ PATH_SEGMENT@16..28
+ NAME_REF@16..28
+ IDENT@16..28 "macro_export"
R_BRACK@28..29 "]"
WHITESPACE@29..30 "\n"
MACRO_RULES_KW@30..41 "macro_rules"
ATTR@95..102
POUND@95..96 "#"
L_BRACK@96..97 "["
- PATH@97..101
- PATH_SEGMENT@97..101
- NAME_REF@97..101
- IDENT@97..101 "test"
+ META@97..101
+ PATH@97..101
+ PATH_SEGMENT@97..101
+ NAME_REF@97..101
+ IDENT@97..101 "test"
R_BRACK@101..102 "]"
WHITESPACE@102..103 "\n"
FN_KW@103..105 "fn"
ATTR@92..105
POUND@92..93 "#"
L_BRACK@93..94 "["
- PATH@94..97
- PATH_SEGMENT@94..97
- NAME_REF@94..97
- IDENT@94..97 "cfg"
- TOKEN_TREE@97..104
- L_PAREN@97..98 "("
- IDENT@98..103 "never"
- R_PAREN@103..104 ")"
+ META@94..104
+ PATH@94..97
+ PATH_SEGMENT@94..97
+ NAME_REF@94..97
+ IDENT@94..97 "cfg"
+ TOKEN_TREE@97..104
+ L_PAREN@97..98 "("
+ IDENT@98..103 "never"
+ R_PAREN@103..104 ")"
R_BRACK@104..105 "]"
WHITESPACE@105..106 " "
SLICE_PAT@106..115
flate2 = "1.0"
proc-macro2 = "1.0.8"
quote = "1.0.2"
-ungrammar = "=1.13"
+ungrammar = "=1.14"
walkdir = "2.3.1"
write-json = "0.1.0"
xshell = "0.1"
"ITEM_LIST",
"ASSOC_ITEM_LIST",
"ATTR",
- "META_ITEM", // not an item actually
+ "META",
"USE_TREE",
"USE_TREE_LIST",
"PATH",