@@ -19,14 +19,32 @@ use crate::{
19
19
} ;
20
20
21
21
pub ( crate ) use crate :: render:: {
22
- const_:: ConstRender , enum_variant:: EnumVariantRender , function:: FunctionRender ,
23
- macro_:: MacroRender , type_alias:: TypeAliasRender ,
22
+ const_:: render_const , enum_variant:: render_enum_variant , function:: render_fn ,
23
+ macro_:: render_macro , type_alias:: render_type_alias ,
24
24
} ;
25
25
26
- /// Generic renderer for completion items.
27
- #[ derive( Debug ) ]
28
- pub ( crate ) struct Render < ' a > {
26
+ pub ( crate ) fn render_field < ' a > (
27
+ ctx : RenderContext < ' a > ,
28
+ field : hir:: Field ,
29
+ ty : & Type ,
30
+ ) -> CompletionItem {
31
+ Render :: new ( ctx) . add_field ( field, ty)
32
+ }
33
+
34
+ pub ( crate ) fn render_tuple_field < ' a > (
29
35
ctx : RenderContext < ' a > ,
36
+ field : usize ,
37
+ ty : & Type ,
38
+ ) -> CompletionItem {
39
+ Render :: new ( ctx) . add_tuple_field ( field, ty)
40
+ }
41
+
42
+ pub ( crate ) fn render_resolution < ' a > (
43
+ ctx : RenderContext < ' a > ,
44
+ local_name : String ,
45
+ resolution : & ScopeDef ,
46
+ ) -> Option < CompletionItem > {
47
+ Render :: new ( ctx) . render_resolution ( local_name, resolution)
30
48
}
31
49
32
50
/// Interface for data and methods required for items rendering.
@@ -74,12 +92,18 @@ impl<'a> RenderContext<'a> {
74
92
}
75
93
}
76
94
95
+ /// Generic renderer for completion items.
96
+ #[ derive( Debug ) ]
97
+ struct Render < ' a > {
98
+ ctx : RenderContext < ' a > ,
99
+ }
100
+
77
101
impl < ' a > Render < ' a > {
78
- pub ( crate ) fn new ( ctx : RenderContext < ' a > ) -> Render < ' a > {
102
+ fn new ( ctx : RenderContext < ' a > ) -> Render < ' a > {
79
103
Render { ctx }
80
104
}
81
105
82
- pub ( crate ) fn add_field ( & mut self , field : hir:: Field , ty : & Type ) -> CompletionItem {
106
+ fn add_field ( & mut self , field : hir:: Field , ty : & Type ) -> CompletionItem {
83
107
let is_deprecated = self . ctx . is_deprecated ( field) ;
84
108
let name = field. name ( self . ctx . db ( ) ) ;
85
109
let mut item = CompletionItem :: new (
@@ -96,17 +120,17 @@ impl<'a> Render<'a> {
96
120
item = item. set_score ( score) ;
97
121
}
98
122
99
- return item. build ( ) ;
123
+ item. build ( )
100
124
}
101
125
102
- pub ( crate ) fn add_tuple_field ( & mut self , field : usize , ty : & Type ) -> CompletionItem {
126
+ fn add_tuple_field ( & mut self , field : usize , ty : & Type ) -> CompletionItem {
103
127
CompletionItem :: new ( CompletionKind :: Reference , self . ctx . source_range ( ) , field. to_string ( ) )
104
128
. kind ( CompletionItemKind :: Field )
105
129
. detail ( ty. display ( self . ctx . db ( ) ) . to_string ( ) )
106
130
. build ( )
107
131
}
108
132
109
- pub ( crate ) fn render_resolution (
133
+ fn render_resolution (
110
134
self ,
111
135
local_name : String ,
112
136
resolution : & ScopeDef ,
@@ -120,15 +144,15 @@ impl<'a> Render<'a> {
120
144
121
145
let kind = match resolution {
122
146
ScopeDef :: ModuleDef ( Function ( func) ) => {
123
- let item = FunctionRender :: new ( self . ctx , Some ( local_name) , * func) . render ( ) ;
147
+ let item = render_fn ( self . ctx , Some ( local_name) , * func) ;
124
148
return Some ( item) ;
125
149
}
126
150
ScopeDef :: ModuleDef ( EnumVariant ( var) ) => {
127
- let item = EnumVariantRender :: new ( self . ctx , Some ( local_name) , * var, None ) . render ( ) ;
151
+ let item = render_enum_variant ( self . ctx , Some ( local_name) , * var, None ) ;
128
152
return Some ( item) ;
129
153
}
130
154
ScopeDef :: MacroDef ( mac) => {
131
- let item = MacroRender :: new ( self . ctx , local_name, * mac) . render ( ) ;
155
+ let item = render_macro ( self . ctx , local_name, * mac) ;
132
156
return item;
133
157
}
134
158
0 commit comments