1
1
//! Attributes & documentation for hir types.
2
2
3
- use either:: Either ;
4
3
use hir_def:: {
5
4
attr:: { AttrsWithOwner , Documentation } ,
6
5
item_scope:: ItemInNs ,
@@ -9,13 +8,13 @@ use hir_def::{
9
8
resolver:: HasResolver ,
10
9
AttrDefId , GenericParamId , ModuleDefId ,
11
10
} ;
12
- use hir_expand:: { hygiene:: Hygiene , MacroDefId } ;
11
+ use hir_expand:: hygiene:: Hygiene ;
13
12
use hir_ty:: db:: HirDatabase ;
14
13
use syntax:: { ast, AstNode } ;
15
14
16
15
use crate :: {
17
16
Adt , AssocItem , Const , ConstParam , Enum , Field , Function , GenericParam , Impl , LifetimeParam ,
18
- MacroDef , Module , ModuleDef , Static , Struct , Trait , TypeAlias , TypeParam , Union , Variant ,
17
+ Macro , Module , ModuleDef , Static , Struct , Trait , TypeAlias , TypeParam , Union , Variant ,
19
18
} ;
20
19
21
20
pub trait HasAttrs {
@@ -26,7 +25,7 @@ pub trait HasAttrs {
26
25
db : & dyn HirDatabase ,
27
26
link : & str ,
28
27
ns : Option < Namespace > ,
29
- ) -> Option < Either < ModuleDef , MacroDef > > ;
28
+ ) -> Option < ModuleDef > ;
30
29
}
31
30
32
31
#[ derive( PartialEq , Eq , Hash , Copy , Clone , Debug ) ]
@@ -47,9 +46,9 @@ macro_rules! impl_has_attrs {
47
46
let def = AttrDefId :: $def_id( self . into( ) ) ;
48
47
db. attrs( def) . docs( )
49
48
}
50
- fn resolve_doc_path( self , db: & dyn HirDatabase , link: & str , ns: Option <Namespace >) -> Option <Either < ModuleDef , MacroDef > > {
49
+ fn resolve_doc_path( self , db: & dyn HirDatabase , link: & str , ns: Option <Namespace >) -> Option <ModuleDef > {
51
50
let def = AttrDefId :: $def_id( self . into( ) ) ;
52
- resolve_doc_path( db, def, link, ns) . map( |it| it . map_left ( ModuleDef :: from) . map_right ( MacroDef :: from ) )
51
+ resolve_doc_path( db, def, link, ns) . map( ModuleDef :: from)
53
52
}
54
53
}
55
54
) * } ;
@@ -62,7 +61,7 @@ impl_has_attrs![
62
61
( Const , ConstId ) ,
63
62
( Trait , TraitId ) ,
64
63
( TypeAlias , TypeAliasId ) ,
65
- ( MacroDef , MacroDefId ) ,
64
+ ( Macro , MacroId ) ,
66
65
( Function , FunctionId ) ,
67
66
( Adt , AdtId ) ,
68
67
( Module , ModuleId ) ,
@@ -79,7 +78,7 @@ macro_rules! impl_has_attrs_enum {
79
78
fn docs( self , db: & dyn HirDatabase ) -> Option <Documentation > {
80
79
$enum:: $variant( self ) . docs( db)
81
80
}
82
- fn resolve_doc_path( self , db: & dyn HirDatabase , link: & str , ns: Option <Namespace >) -> Option <Either < ModuleDef , MacroDef > > {
81
+ fn resolve_doc_path( self , db: & dyn HirDatabase , link: & str , ns: Option <Namespace >) -> Option <ModuleDef > {
83
82
$enum:: $variant( self ) . resolve_doc_path( db, link, ns)
84
83
}
85
84
}
@@ -111,7 +110,7 @@ impl HasAttrs for AssocItem {
111
110
db : & dyn HirDatabase ,
112
111
link : & str ,
113
112
ns : Option < Namespace > ,
114
- ) -> Option < Either < ModuleDef , MacroDef > > {
113
+ ) -> Option < ModuleDef > {
115
114
match self {
116
115
AssocItem :: Function ( it) => it. resolve_doc_path ( db, link, ns) ,
117
116
AssocItem :: Const ( it) => it. resolve_doc_path ( db, link, ns) ,
@@ -125,7 +124,7 @@ fn resolve_doc_path(
125
124
def : AttrDefId ,
126
125
link : & str ,
127
126
ns : Option < Namespace > ,
128
- ) -> Option < Either < ModuleDefId , MacroDefId > > {
127
+ ) -> Option < ModuleDefId > {
129
128
let resolver = match def {
130
129
AttrDefId :: ModuleId ( it) => it. resolver ( db. upcast ( ) ) ,
131
130
AttrDefId :: FieldId ( it) => it. parent . resolver ( db. upcast ( ) ) ,
@@ -138,14 +137,13 @@ fn resolve_doc_path(
138
137
AttrDefId :: TypeAliasId ( it) => it. resolver ( db. upcast ( ) ) ,
139
138
AttrDefId :: ImplId ( it) => it. resolver ( db. upcast ( ) ) ,
140
139
AttrDefId :: ExternBlockId ( it) => it. resolver ( db. upcast ( ) ) ,
140
+ AttrDefId :: MacroId ( it) => it. resolver ( db. upcast ( ) ) ,
141
141
AttrDefId :: GenericParamId ( it) => match it {
142
142
GenericParamId :: TypeParamId ( it) => it. parent ( ) ,
143
143
GenericParamId :: ConstParamId ( it) => it. parent ( ) ,
144
144
GenericParamId :: LifetimeParamId ( it) => it. parent ,
145
145
}
146
146
. resolver ( db. upcast ( ) ) ,
147
- // FIXME
148
- AttrDefId :: MacroDefId ( _) => return None ,
149
147
} ;
150
148
151
149
let modpath = {
@@ -167,13 +165,13 @@ fn resolve_doc_path(
167
165
resolved
168
166
} ;
169
167
match ns {
170
- Some ( Namespace :: Types ) => resolved. take_types ( ) . map ( Either :: Left ) ,
171
- Some ( Namespace :: Values ) => resolved. take_values ( ) . map ( Either :: Left ) ,
172
- Some ( Namespace :: Macros ) => resolved. take_macros ( ) . map ( Either :: Right ) ,
168
+ Some ( Namespace :: Types ) => resolved. take_types ( ) ,
169
+ Some ( Namespace :: Values ) => resolved. take_values ( ) ,
170
+ Some ( Namespace :: Macros ) => resolved. take_macros ( ) . map ( ModuleDefId :: MacroId ) ,
173
171
None => resolved. iter_items ( ) . next ( ) . map ( |it| match it {
174
- ItemInNs :: Types ( it) => Either :: Left ( it ) ,
175
- ItemInNs :: Values ( it) => Either :: Left ( it ) ,
176
- ItemInNs :: Macros ( it) => Either :: Right ( it) ,
172
+ ItemInNs :: Types ( it) => it ,
173
+ ItemInNs :: Values ( it) => it ,
174
+ ItemInNs :: Macros ( it) => ModuleDefId :: MacroId ( it) ,
177
175
} ) ,
178
176
}
179
177
}
0 commit comments