File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed
crates/ide/src/syntax_highlighting Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change @@ -703,7 +703,24 @@ fn highlight_name_ref_by_syntax(
703703 } ;
704704
705705 match parent. kind ( ) {
706- EXTERN_CRATE => HlTag :: Symbol ( SymbolKind :: Module ) . into ( ) ,
706+ EXTERN_CRATE => {
707+ let mut h: Highlight = HlTag :: Symbol ( SymbolKind :: Module ) . into ( ) ;
708+ let is_crate_root = if let Some ( extern_crate) = ast:: ExternCrate :: cast ( parent. clone ( ) ) {
709+ if let Some ( first_segment) = extern_crate. name_ref ( ) {
710+ first_segment. syntax ( ) . text ( ) == name. syntax ( ) . text ( )
711+ } else {
712+ false
713+ }
714+ } else {
715+ false
716+ } ;
717+
718+ if is_crate_root {
719+ h |= HlMod :: CrateRoot ;
720+ }
721+
722+ h | HlMod :: Library
723+ } ,
707724 METHOD_CALL_EXPR => ast:: MethodCallExpr :: cast ( parent)
708725 . and_then ( |it| highlight_method_call ( sema, krate, & it, edition) )
709726 . unwrap_or_else ( || SymbolKind :: Method . into ( ) ) ,
Original file line number Diff line number Diff line change 5151< span class ="comment documentation "> //! ```</ span >
5252
5353< span class ="comment documentation "> //! ```rust</ span >
54- < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module injected "> Krate</ span > < span class ="semicolon injected "> ;</ span >
54+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="self_keyword crate_root injected "> self</ span > < span class ="semicolon injected "> ;</ span >
55+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> std</ span > < span class ="semicolon injected "> ;</ span >
56+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> core</ span > < span class ="semicolon injected "> ;</ span >
57+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> alloc</ span > < span class ="semicolon injected "> ;</ span >
58+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> proc_macro</ span > < span class ="semicolon injected "> ;</ span >
59+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> test</ span > < span class ="semicolon injected "> ;</ span >
60+ < span class ="comment documentation "> //!</ span > < span class ="comment documentation "> </ span > < span class ="keyword injected "> extern</ span > < span class ="none injected "> </ span > < span class ="keyword injected "> crate</ span > < span class ="none injected "> </ span > < span class ="module crate_root injected library "> Krate</ span > < span class ="semicolon injected "> ;</ span >
5561< span class ="comment documentation "> //! ```</ span >
5662< span class ="keyword "> mod</ span > < span class ="module declaration "> outline_module</ span > < span class ="semicolon "> ;</ span >
5763
Original file line number Diff line number Diff line change @@ -723,6 +723,12 @@ fn test_highlight_doc_comment() {
723723//! ```
724724
725725//! ```rust
726+ //! extern crate self;
727+ //! extern crate std;
728+ //! extern crate core;
729+ //! extern crate alloc;
730+ //! extern crate proc_macro;
731+ //! extern crate test;
726732//! extern crate Krate;
727733//! ```
728734mod outline_module;
You can’t perform that action at this time.
0 commit comments