diff --git a/crates/ra_parser/src/grammar.rs b/crates/ra_parser/src/grammar.rs index e428faffbf15..b2ffeff8c7ab 100644 --- a/crates/ra_parser/src/grammar.rs +++ b/crates/ra_parser/src/grammar.rs @@ -184,6 +184,10 @@ fn name_ref(p: &mut Parser) { let m = p.start(); p.bump(); m.complete(p, NAME_REF); + } else if p.at(SELF_KW) { + let m = p.start(); + p.bump(); + m.complete(p, SELF_KW); } else { p.err_and_bump("expected identifier"); } diff --git a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs index 3ce336676590..ab81a608cb51 100644 --- a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs +++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs @@ -1,2 +1,3 @@ extern crate foo; extern crate foo as bar; +extern crate self as baz; diff --git a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt index 5558d952e537..0176260c1450 100644 --- a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt +++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt @@ -1,4 +1,4 @@ -SOURCE_FILE@[0; 43) +SOURCE_FILE@[0; 69) EXTERN_CRATE_ITEM@[0; 17) EXTERN_KW@[0; 6) WHITESPACE@[6; 7) @@ -23,3 +23,18 @@ SOURCE_FILE@[0; 43) IDENT@[38; 41) "bar" SEMI@[41; 42) WHITESPACE@[42; 43) + EXTERN_CRATE_ITEM@[43; 68) + EXTERN_KW@[43; 49) + WHITESPACE@[49; 50) + CRATE_KW@[50; 55) + WHITESPACE@[55; 56) + SELF_KW@[56; 60) + SELF_KW@[56; 60) + WHITESPACE@[60; 61) + ALIAS@[61; 67) + AS_KW@[61; 63) + WHITESPACE@[63; 64) + NAME@[64; 67) + IDENT@[64; 67) "baz" + SEMI@[67; 68) + WHITESPACE@[68; 69)