@@ -33,6 +33,7 @@ pub(crate) enum PatternRefutability {
33
33
Irrefutable ,
34
34
}
35
35
36
+ #[ derive( Debug ) ]
36
37
pub ( crate ) enum Visible {
37
38
Yes ,
38
39
Editable ,
@@ -383,6 +384,30 @@ impl<'a> CompletionContext<'a> {
383
384
FamousDefs ( & self . sema , self . krate )
384
385
}
385
386
387
+ /// Checks if an item is visible and not `doc(hidden)` at the completion site.
388
+ pub ( crate ) fn def_is_visible ( & self , item : & ScopeDef ) -> Visible {
389
+ match item {
390
+ ScopeDef :: ModuleDef ( def) => match def {
391
+ hir:: ModuleDef :: Module ( it) => self . is_visible ( it) ,
392
+ hir:: ModuleDef :: Function ( it) => self . is_visible ( it) ,
393
+ hir:: ModuleDef :: Adt ( it) => self . is_visible ( it) ,
394
+ hir:: ModuleDef :: Variant ( it) => self . is_visible ( it) ,
395
+ hir:: ModuleDef :: Const ( it) => self . is_visible ( it) ,
396
+ hir:: ModuleDef :: Static ( it) => self . is_visible ( it) ,
397
+ hir:: ModuleDef :: Trait ( it) => self . is_visible ( it) ,
398
+ hir:: ModuleDef :: TypeAlias ( it) => self . is_visible ( it) ,
399
+ hir:: ModuleDef :: Macro ( it) => self . is_visible ( it) ,
400
+ hir:: ModuleDef :: BuiltinType ( _) => Visible :: Yes ,
401
+ } ,
402
+ ScopeDef :: GenericParam ( _)
403
+ | ScopeDef :: ImplSelfType ( _)
404
+ | ScopeDef :: AdtSelfType ( _)
405
+ | ScopeDef :: Local ( _)
406
+ | ScopeDef :: Label ( _)
407
+ | ScopeDef :: Unknown => Visible :: Yes ,
408
+ }
409
+ }
410
+
386
411
/// Checks if an item is visible and not `doc(hidden)` at the completion site.
387
412
pub ( crate ) fn is_visible < I > ( & self , item : & I ) -> Visible
388
413
where
@@ -393,14 +418,6 @@ impl<'a> CompletionContext<'a> {
393
418
self . is_visible_impl ( & vis, & attrs, item. krate ( self . db ) )
394
419
}
395
420
396
- pub ( crate ) fn is_scope_def_hidden ( & self , scope_def : ScopeDef ) -> bool {
397
- if let ( Some ( attrs) , Some ( krate) ) = ( scope_def. attrs ( self . db ) , scope_def. krate ( self . db ) ) {
398
- return self . is_doc_hidden ( & attrs, krate) ;
399
- }
400
-
401
- false
402
- }
403
-
404
421
/// Check if an item is `#[doc(hidden)]`.
405
422
pub ( crate ) fn is_item_hidden ( & self , item : & hir:: ItemInNs ) -> bool {
406
423
let attrs = item. attrs ( self . db ) ;
@@ -468,6 +485,14 @@ impl<'a> CompletionContext<'a> {
468
485
self . scope . process_all_names ( & mut |name, def| f ( name, def) ) ;
469
486
}
470
487
488
+ fn is_scope_def_hidden ( & self , scope_def : ScopeDef ) -> bool {
489
+ if let ( Some ( attrs) , Some ( krate) ) = ( scope_def. attrs ( self . db ) , scope_def. krate ( self . db ) ) {
490
+ return self . is_doc_hidden ( & attrs, krate) ;
491
+ }
492
+
493
+ false
494
+ }
495
+
471
496
fn is_visible_impl (
472
497
& self ,
473
498
vis : & hir:: Visibility ,
0 commit comments