@@ -19,14 +19,32 @@ use crate::{
1919} ;
2020
2121pub ( 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 ,
2424} ;
2525
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 > (
2935 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)
3048}
3149
3250/// Interface for data and methods required for items rendering.
@@ -74,12 +92,18 @@ impl<'a> RenderContext<'a> {
7492 }
7593}
7694
95+ /// Generic renderer for completion items.
96+ #[ derive( Debug ) ]
97+ struct Render < ' a > {
98+ ctx : RenderContext < ' a > ,
99+ }
100+
77101impl < ' a > Render < ' a > {
78- pub ( crate ) fn new ( ctx : RenderContext < ' a > ) -> Render < ' a > {
102+ fn new ( ctx : RenderContext < ' a > ) -> Render < ' a > {
79103 Render { ctx }
80104 }
81105
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 {
83107 let is_deprecated = self . ctx . is_deprecated ( field) ;
84108 let name = field. name ( self . ctx . db ( ) ) ;
85109 let mut item = CompletionItem :: new (
@@ -96,17 +120,17 @@ impl<'a> Render<'a> {
96120 item = item. set_score ( score) ;
97121 }
98122
99- return item. build ( ) ;
123+ item. build ( )
100124 }
101125
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 {
103127 CompletionItem :: new ( CompletionKind :: Reference , self . ctx . source_range ( ) , field. to_string ( ) )
104128 . kind ( CompletionItemKind :: Field )
105129 . detail ( ty. display ( self . ctx . db ( ) ) . to_string ( ) )
106130 . build ( )
107131 }
108132
109- pub ( crate ) fn render_resolution (
133+ fn render_resolution (
110134 self ,
111135 local_name : String ,
112136 resolution : & ScopeDef ,
@@ -120,15 +144,15 @@ impl<'a> Render<'a> {
120144
121145 let kind = match resolution {
122146 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) ;
124148 return Some ( item) ;
125149 }
126150 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 ) ;
128152 return Some ( item) ;
129153 }
130154 ScopeDef :: MacroDef ( mac) => {
131- let item = MacroRender :: new ( self . ctx , local_name, * mac) . render ( ) ;
155+ let item = render_macro ( self . ctx , local_name, * mac) ;
132156 return item;
133157 }
134158
0 commit comments