Skip to content

Commit 5a1df07

Browse files
Add visibility diagnostics for private fields to the correct location
1 parent f3cbd0e commit 5a1df07

File tree

2 files changed

+291
-6
lines changed

2 files changed

+291
-6
lines changed

crates/ide-diagnostics/src/handlers/private_field.rs

Lines changed: 148 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use hir::{EditionedFileId, FileRange, HasCrate, HasSource, Semantics};
22
use ide_db::{RootDatabase, assists::Assist, source_change::SourceChange, text_edit::TextEdit};
3-
use syntax::{AstNode, TextRange, TextSize, ast::HasVisibility};
3+
use syntax::{AstNode, SyntaxKind, TextRange, TextSize, ast::HasVisibility};
44

55
use crate::{Diagnostic, DiagnosticCode, DiagnosticsContext, fix};
66

77
// Diagnostic: private-field
88
//
99
// This diagnostic is triggered if the accessed field is not visible from the current module.
1010
pub(crate) fn private_field(ctx: &DiagnosticsContext<'_>, d: &hir::PrivateField) -> Diagnostic {
11-
// FIXME: add quickfix
1211
Diagnostic::new_with_syntax_node_ptr(
1312
ctx,
1413
DiagnosticCode::RustcHardError("E0616"),
@@ -50,10 +49,24 @@ pub(crate) fn field_is_private_fixes(
5049
source.with_value(visibility.syntax()).original_file_range_opt(sema.db)?.0
5150
}
5251
None => {
53-
let (range, _) = source.syntax().original_file_range_opt(sema.db)?;
52+
let field_syntax = source.value.syntax();
53+
let vis_before = field_syntax.children_with_tokens().find(|it| {
54+
!matches!(
55+
it.kind(),
56+
SyntaxKind::WHITESPACE | SyntaxKind::COMMENT | SyntaxKind::ATTR
57+
)
58+
})?;
59+
60+
// Get the text range of the first non-comment token relative to the field node
61+
let relative_offset =
62+
vis_before.text_range().start() - field_syntax.text_range().start();
63+
let (field_range, _) = source.syntax().original_file_range_opt(sema.db)?;
64+
65+
let absolute_offset = field_range.range.start() + relative_offset;
66+
5467
FileRange {
55-
file_id: range.file_id,
56-
range: TextRange::at(range.range.start(), TextSize::new(0)),
68+
file_id: field_range.file_id,
69+
range: TextRange::at(absolute_offset, TextSize::new(0)),
5770
}
5871
}
5972
};
@@ -225,6 +238,136 @@ pub mod foo {
225238
226239
fn foo(v: foo::bar::Struct) {
227240
v.field;
241+
}
242+
"#,
243+
);
244+
}
245+
246+
#[test]
247+
fn change_visibility_of_field_with_doc_comment() {
248+
check_fix(
249+
r#"
250+
pub mod foo {
251+
pub struct Foo {
252+
/// This is a doc comment
253+
bar: u32,
254+
}
255+
}
256+
257+
fn main() {
258+
let x = foo::Foo { bar: 0 };
259+
x.bar$0;
260+
}
261+
"#,
262+
r#"
263+
pub mod foo {
264+
pub struct Foo {
265+
/// This is a doc comment
266+
pub(crate) bar: u32,
267+
}
268+
}
269+
270+
fn main() {
271+
let x = foo::Foo { bar: 0 };
272+
x.bar;
273+
}
274+
"#,
275+
);
276+
}
277+
278+
#[test]
279+
fn change_visibility_of_field_with_line_comment() {
280+
check_fix(
281+
r#"
282+
pub mod foo {
283+
pub struct Foo {
284+
// This is a line comment
285+
bar: u32,
286+
}
287+
}
288+
289+
fn main() {
290+
let x = foo::Foo { bar: 0 };
291+
x.bar$0;
292+
}
293+
"#,
294+
r#"
295+
pub mod foo {
296+
pub struct Foo {
297+
// This is a line comment
298+
pub(crate) bar: u32,
299+
}
300+
}
301+
302+
fn main() {
303+
let x = foo::Foo { bar: 0 };
304+
x.bar;
305+
}
306+
"#,
307+
);
308+
}
309+
310+
#[test]
311+
fn change_visibility_of_field_with_multiple_doc_comments() {
312+
check_fix(
313+
r#"
314+
pub mod foo {
315+
pub struct Foo {
316+
/// First line
317+
/// Second line
318+
bar: u32,
319+
}
320+
}
321+
322+
fn main() {
323+
let x = foo::Foo { bar: 0 };
324+
x.bar$0;
325+
}
326+
"#,
327+
r#"
328+
pub mod foo {
329+
pub struct Foo {
330+
/// First line
331+
/// Second line
332+
pub(crate) bar: u32,
333+
}
334+
}
335+
336+
fn main() {
337+
let x = foo::Foo { bar: 0 };
338+
x.bar;
339+
}
340+
"#,
341+
);
342+
}
343+
344+
#[test]
345+
fn change_visibility_of_field_with_attr_and_comment() {
346+
check_fix(
347+
r#"
348+
mod foo {
349+
pub struct Foo {
350+
#[rustfmt::skip]
351+
/// First line
352+
/// Second line
353+
bar: u32,
354+
}
355+
}
356+
fn main() {
357+
foo::Foo { $0bar: 42 };
358+
}
359+
"#,
360+
r#"
361+
mod foo {
362+
pub struct Foo {
363+
#[rustfmt::skip]
364+
/// First line
365+
/// Second line
366+
pub(crate) bar: u32,
367+
}
368+
}
369+
fn main() {
370+
foo::Foo { bar: 42 };
228371
}
229372
"#,
230373
);

crates/parser/src/syntax_kind/generated.rs

Lines changed: 143 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,149 @@ impl SyntaxKind {
10061006
}
10071007
}
10081008
#[macro_export]
1009-
macro_rules ! T_ { [$] => { $ crate :: SyntaxKind :: DOLLAR } ; [;] => { $ 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 :: 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 } ; [Self] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [abstract] => { $ crate :: SyntaxKind :: ABSTRACT_KW } ; [as] => { $ crate :: SyntaxKind :: AS_KW } ; [become] => { $ crate :: SyntaxKind :: BECOME_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 } ; [do] => { $ crate :: SyntaxKind :: DO_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [enum] => { $ crate :: SyntaxKind :: ENUM_KW } ; [extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [final] => { $ crate :: SyntaxKind :: FINAL_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 } ; [override] => { $ crate :: SyntaxKind :: OVERRIDE_KW } ; [priv] => { $ crate :: SyntaxKind :: PRIV_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 } ; [type] => { $ crate :: SyntaxKind :: TYPE_KW } ; [typeof] => { $ crate :: SyntaxKind :: TYPEOF_KW } ; [unsafe] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [unsized] => { $ crate :: SyntaxKind :: UNSIZED_KW } ; [use] => { $ crate :: SyntaxKind :: USE_KW } ; [virtual] => { $ crate :: SyntaxKind :: VIRTUAL_KW } ; [where] => { $ crate :: SyntaxKind :: WHERE_KW } ; [while] => { $ crate :: SyntaxKind :: WHILE_KW } ; [yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [asm] => { $ crate :: SyntaxKind :: ASM_KW } ; [att_syntax] => { $ crate :: SyntaxKind :: ATT_SYNTAX_KW } ; [auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ; [clobber_abi] => { $ crate :: SyntaxKind :: CLOBBER_ABI_KW } ; [default] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ; [global_asm] => { $ crate :: SyntaxKind :: GLOBAL_ASM_KW } ; [inlateout] => { $ crate :: SyntaxKind :: INLATEOUT_KW } ; [inout] => { $ crate :: SyntaxKind :: INOUT_KW } ; [label] => { $ crate :: SyntaxKind :: LABEL_KW } ; [lateout] => { $ crate :: SyntaxKind :: LATEOUT_KW } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [may_unwind] => { $ crate :: SyntaxKind :: MAY_UNWIND_KW } ; [naked_asm] => { $ crate :: SyntaxKind :: NAKED_ASM_KW } ; [nomem] => { $ crate :: SyntaxKind :: NOMEM_KW } ; [noreturn] => { $ crate :: SyntaxKind :: NORETURN_KW } ; [nostack] => { $ crate :: SyntaxKind :: NOSTACK_KW } ; [offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ; [options] => { $ crate :: SyntaxKind :: OPTIONS_KW } ; [out] => { $ crate :: SyntaxKind :: OUT_KW } ; [preserves_flags] => { $ crate :: SyntaxKind :: PRESERVES_FLAGS_KW } ; [pure] => { $ crate :: SyntaxKind :: PURE_KW } ; [raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [readonly] => { $ crate :: SyntaxKind :: READONLY_KW } ; [safe] => { $ crate :: SyntaxKind :: SAFE_KW } ; [sym] => { $ crate :: SyntaxKind :: SYM_KW } ; [union] => { $ crate :: SyntaxKind :: UNION_KW } ; [yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [async] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [await] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [gen] => { $ crate :: SyntaxKind :: GEN_KW } ; [try] => { $ crate :: SyntaxKind :: TRY_KW } ; [lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [int_number] => { $ crate :: SyntaxKind :: INT_NUMBER } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [string] => { $ crate :: SyntaxKind :: STRING } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; [frontmatter] => { $ crate :: SyntaxKind :: FRONTMATTER } ; }
1009+
macro_rules ! T_ {
1010+
[$] => { $ crate :: SyntaxKind :: DOLLAR } ;
1011+
[;] => { $ crate :: SyntaxKind :: SEMICOLON } ;
1012+
[,] => { $ crate :: SyntaxKind :: COMMA } ;
1013+
['('] => { $ crate :: SyntaxKind :: L_PAREN } ;
1014+
[')'] => { $ crate :: SyntaxKind :: R_PAREN } ;
1015+
['{'] => { $ crate :: SyntaxKind :: L_CURLY } ;
1016+
['}'] => { $ crate :: SyntaxKind :: R_CURLY } ;
1017+
['['] => { $ crate :: SyntaxKind :: L_BRACK } ;
1018+
[']'] => { $ crate :: SyntaxKind :: R_BRACK } ;
1019+
[<] => { $ crate :: SyntaxKind :: L_ANGLE } ;
1020+
[>] => { $ crate :: SyntaxKind :: R_ANGLE } ;
1021+
[@] => { $ crate :: SyntaxKind :: AT } ;
1022+
[#] => { $ crate :: SyntaxKind :: POUND } ;
1023+
[~] => { $ crate :: SyntaxKind :: TILDE } ;
1024+
[?] => { $ crate :: SyntaxKind :: QUESTION } ;
1025+
[&] => { $ crate :: SyntaxKind :: AMP } ;
1026+
[|] => { $ crate :: SyntaxKind :: PIPE } ;
1027+
[+] => { $ crate :: SyntaxKind :: PLUS } ;
1028+
[*] => { $ crate :: SyntaxKind :: STAR } ;
1029+
[/] => { $ crate :: SyntaxKind :: SLASH } ;
1030+
[^] => { $ crate :: SyntaxKind :: CARET } ;
1031+
[%] => { $ crate :: SyntaxKind :: PERCENT } ;
1032+
[_] => { $ crate :: SyntaxKind :: UNDERSCORE } ;
1033+
[.] => { $ crate :: SyntaxKind :: DOT } ;
1034+
[..] => { $ crate :: SyntaxKind :: DOT2 } ;
1035+
[...] => { $ crate :: SyntaxKind :: DOT3 } ;
1036+
[..=] => { $ crate :: SyntaxKind :: DOT2EQ } ;
1037+
[:] => { $ crate :: SyntaxKind :: COLON } ;
1038+
[::] => { $ crate :: SyntaxKind :: COLON2 } ;
1039+
[=] => { $ crate :: SyntaxKind :: EQ } ;
1040+
[==] => { $ crate :: SyntaxKind :: EQ2 } ;
1041+
[=>] => { $ crate :: SyntaxKind :: FAT_ARROW } ;
1042+
[!] => { $ crate :: SyntaxKind :: BANG } ;
1043+
[!=] => { $ crate :: SyntaxKind :: NEQ } ;
1044+
[-] => { $ crate :: SyntaxKind :: MINUS } ;
1045+
[->] => { $ crate :: SyntaxKind :: THIN_ARROW } ;
1046+
[<=] => { $ crate :: SyntaxKind :: LTEQ } ;
1047+
[>=] => { $ crate :: SyntaxKind :: GTEQ } ;
1048+
[+=] => { $ crate :: SyntaxKind :: PLUSEQ } ;
1049+
[-=] => { $ crate :: SyntaxKind :: MINUSEQ } ;
1050+
[|=] => { $ crate :: SyntaxKind :: PIPEEQ } ;
1051+
[&=] => { $ crate :: SyntaxKind :: AMPEQ } ;
1052+
[^=] => { $ crate :: SyntaxKind :: CARETEQ } ;
1053+
[/=] => { $ crate :: SyntaxKind :: SLASHEQ } ;
1054+
[*=] => { $ crate :: SyntaxKind :: STAREQ } ;
1055+
[%=] => { $ crate :: SyntaxKind :: PERCENTEQ } ;
1056+
[&&] => { $ crate :: SyntaxKind :: AMP2 } ;
1057+
[||] => { $ crate :: SyntaxKind :: PIPE2 } ;
1058+
[<<] => { $ crate :: SyntaxKind :: SHL } ;
1059+
[>>] => { $ crate :: SyntaxKind :: SHR } ;
1060+
[<<=] => { $ crate :: SyntaxKind :: SHLEQ } ;
1061+
[>>=] => { $ crate :: SyntaxKind :: SHREQ } ;
1062+
[Self] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ;
1063+
[abstract] => { $ crate :: SyntaxKind :: ABSTRACT_KW } ;
1064+
[as] => { $ crate :: SyntaxKind :: AS_KW } ;
1065+
[become] => { $ crate :: SyntaxKind :: BECOME_KW } ;
1066+
[box] => { $ crate :: SyntaxKind :: BOX_KW } ;
1067+
[break] => { $ crate :: SyntaxKind :: BREAK_KW } ;
1068+
[const] => { $ crate :: SyntaxKind :: CONST_KW } ;
1069+
[continue] => { $ crate :: SyntaxKind :: CONTINUE_KW } ;
1070+
[crate] => { $ crate :: SyntaxKind :: CRATE_KW } ;
1071+
[do] => { $ crate :: SyntaxKind :: DO_KW } ;
1072+
[else] => { $ crate :: SyntaxKind :: ELSE_KW } ;
1073+
[enum] => { $ crate :: SyntaxKind :: ENUM_KW } ;
1074+
[extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ;
1075+
[false] => { $ crate :: SyntaxKind :: FALSE_KW } ;
1076+
[final] => { $ crate :: SyntaxKind :: FINAL_KW } ;
1077+
[fn] => { $ crate :: SyntaxKind :: FN_KW } ;
1078+
[for] => { $ crate :: SyntaxKind :: FOR_KW } ;
1079+
[if] => { $ crate :: SyntaxKind :: IF_KW } ;
1080+
[impl] => { $ crate :: SyntaxKind :: IMPL_KW } ;
1081+
[in] => { $ crate :: SyntaxKind :: IN_KW } ;
1082+
[let] => { $ crate :: SyntaxKind :: LET_KW } ;
1083+
[loop] => { $ crate :: SyntaxKind :: LOOP_KW } ;
1084+
[macro] => { $ crate :: SyntaxKind :: MACRO_KW } ;
1085+
[match] => { $ crate :: SyntaxKind :: MATCH_KW } ;
1086+
[mod] => { $ crate :: SyntaxKind :: MOD_KW } ;
1087+
[move] => { $ crate :: SyntaxKind :: MOVE_KW } ;
1088+
[mut] => { $ crate :: SyntaxKind :: MUT_KW } ;
1089+
[override] => { $ crate :: SyntaxKind :: OVERRIDE_KW } ;
1090+
[priv] => { $ crate :: SyntaxKind :: PRIV_KW } ;
1091+
[pub] => { $ crate :: SyntaxKind :: PUB_KW } ;
1092+
[ref] => { $ crate :: SyntaxKind :: REF_KW } ;
1093+
[return] => { $ crate :: SyntaxKind :: RETURN_KW } ;
1094+
[self] => { $ crate :: SyntaxKind :: SELF_KW } ;
1095+
[static] => { $ crate :: SyntaxKind :: STATIC_KW } ;
1096+
[struct] => { $ crate :: SyntaxKind :: STRUCT_KW } ;
1097+
[super] => { $ crate :: SyntaxKind :: SUPER_KW } ;
1098+
[trait] => { $ crate :: SyntaxKind :: TRAIT_KW } ;
1099+
[true] => { $ crate :: SyntaxKind :: TRUE_KW } ;
1100+
[type] => { $ crate :: SyntaxKind :: TYPE_KW } ;
1101+
[typeof] => { $ crate :: SyntaxKind :: TYPEOF_KW } ;
1102+
[unsafe] => { $ crate :: SyntaxKind :: UNSAFE_KW } ;
1103+
[unsized] => { $ crate :: SyntaxKind :: UNSIZED_KW } ;
1104+
[use] => { $ crate :: SyntaxKind :: USE_KW } ;
1105+
[virtual] => { $ crate :: SyntaxKind :: VIRTUAL_KW } ;
1106+
[where] => { $ crate :: SyntaxKind :: WHERE_KW } ;
1107+
[while] => { $ crate :: SyntaxKind :: WHILE_KW } ;
1108+
[yield] => { $ crate :: SyntaxKind :: YIELD_KW } ;
1109+
[asm] => { $ crate :: SyntaxKind :: ASM_KW } ;
1110+
[att_syntax] => { $ crate :: SyntaxKind :: ATT_SYNTAX_KW } ;
1111+
[auto] => { $ crate :: SyntaxKind :: AUTO_KW } ;
1112+
[builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ;
1113+
[clobber_abi] => { $ crate :: SyntaxKind :: CLOBBER_ABI_KW } ;
1114+
[default] => { $ crate :: SyntaxKind :: DEFAULT_KW } ;
1115+
[dyn] => { $ crate :: SyntaxKind :: DYN_KW } ;
1116+
[format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ;
1117+
[global_asm] => { $ crate :: SyntaxKind :: GLOBAL_ASM_KW } ;
1118+
[inlateout] => { $ crate :: SyntaxKind :: INLATEOUT_KW } ;
1119+
[inout] => { $ crate :: SyntaxKind :: INOUT_KW } ;
1120+
[label] => { $ crate :: SyntaxKind :: LABEL_KW } ;
1121+
[lateout] => { $ crate :: SyntaxKind :: LATEOUT_KW } ;
1122+
[macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ;
1123+
[may_unwind] => { $ crate :: SyntaxKind :: MAY_UNWIND_KW } ;
1124+
[naked_asm] => { $ crate :: SyntaxKind :: NAKED_ASM_KW } ;
1125+
[nomem] => { $ crate :: SyntaxKind :: NOMEM_KW } ;
1126+
[noreturn] => { $ crate :: SyntaxKind :: NORETURN_KW } ;
1127+
[nostack] => { $ crate :: SyntaxKind :: NOSTACK_KW } ;
1128+
[offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ;
1129+
[options] => { $ crate :: SyntaxKind :: OPTIONS_KW } ;
1130+
[out] => { $ crate :: SyntaxKind :: OUT_KW } ;
1131+
[preserves_flags] => { $ crate :: SyntaxKind :: PRESERVES_FLAGS_KW } ;
1132+
[pure] => { $ crate :: SyntaxKind :: PURE_KW } ;
1133+
[raw] => { $ crate :: SyntaxKind :: RAW_KW } ;
1134+
[readonly] => { $ crate :: SyntaxKind :: READONLY_KW } ;
1135+
[safe] => { $ crate :: SyntaxKind :: SAFE_KW } ;
1136+
[sym] => { $ crate :: SyntaxKind :: SYM_KW } ;
1137+
[union] => { $ crate :: SyntaxKind :: UNION_KW } ;
1138+
[yeet] => { $ crate :: SyntaxKind :: YEET_KW } ;
1139+
[async] => { $ crate :: SyntaxKind :: ASYNC_KW } ;
1140+
[await] => { $ crate :: SyntaxKind :: AWAIT_KW } ;
1141+
[dyn] => { $ crate :: SyntaxKind :: DYN_KW } ;
1142+
[gen] => { $ crate :: SyntaxKind :: GEN_KW } ;
1143+
[try] => { $ crate :: SyntaxKind :: TRY_KW } ;
1144+
[lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ;
1145+
[int_number] => { $ crate :: SyntaxKind :: INT_NUMBER } ;
1146+
[ident] => { $ crate :: SyntaxKind :: IDENT } ;
1147+
[string] => { $ crate :: SyntaxKind :: STRING } ;
1148+
[shebang] => { $ crate :: SyntaxKind :: SHEBANG } ;
1149+
[frontmatter] => { $ crate :: SyntaxKind :: FRONTMATTER } ;
1150+
}
1151+
10101152
impl ::core::marker::Copy for SyntaxKind {}
10111153
impl ::core::clone::Clone for SyntaxKind {
10121154
#[inline]

0 commit comments

Comments
 (0)