@@ -2,7 +2,7 @@ use crate::common::{render_const, render_typ};
2
2
use crate :: json_generator:: json_types:: * ;
3
3
use emmylua_code_analysis:: {
4
4
DbIndex , FileId , LuaDeprecated , LuaMemberKey , LuaMemberOwner , LuaNoDiscard , LuaSemanticDeclId ,
5
- LuaSignature , LuaType , LuaTypeCache , LuaTypeDecl , Vfs ,
5
+ LuaSignature , LuaType , LuaTypeCache , LuaTypeDecl , LuaTypeDeclId , Vfs ,
6
6
} ;
7
7
use rowan:: TextRange ;
8
8
@@ -11,6 +11,7 @@ pub fn export(db: &DbIndex) -> Index {
11
11
modules : export_modules ( db) ,
12
12
types : export_types ( db) ,
13
13
globals : export_globals ( db) ,
14
+ config : db. get_emmyrc ( ) . clone ( ) ,
14
15
}
15
16
}
16
17
@@ -135,38 +136,30 @@ fn export_class(db: &DbIndex, type_decl: &LuaTypeDecl) -> Class {
135
136
. iter ( )
136
137
. map ( |typ| render_typ ( db, typ) )
137
138
. collect ( ) ,
138
- generics : type_index
139
- . get_generic_params ( & type_decl_id)
140
- . map ( |v| v. as_slice ( ) )
141
- . unwrap_or_default ( )
142
- . iter ( )
143
- . map ( |( name, typ) | TypeVar {
144
- name : name. clone ( ) ,
145
- base : typ. as_ref ( ) . map ( |typ| render_typ ( db, typ) ) ,
146
- } )
147
- . collect ( ) ,
139
+ generics : export_generics ( db, & type_decl_id) ,
148
140
members : export_members ( db, member_owner) ,
149
141
}
150
142
}
151
143
152
144
fn export_alias ( db : & DbIndex , type_decl : & LuaTypeDecl ) -> Alias {
153
145
let type_decl_id = type_decl. get_id ( ) ;
154
146
let property = export_property ( db, & LuaSemanticDeclId :: TypeDecl ( type_decl. get_id ( ) . clone ( ) ) ) ;
155
- let member_owner = LuaMemberOwner :: Type ( type_decl_id) ;
147
+ let member_owner = LuaMemberOwner :: Type ( type_decl_id. clone ( ) ) ;
156
148
157
149
Alias {
158
150
name : type_decl. get_full_name ( ) . to_string ( ) ,
159
151
property,
160
152
loc : export_loc_for_type ( db, type_decl) ,
161
153
typ : type_decl. get_alias_ref ( ) . map ( |typ| render_typ ( db, typ) ) ,
154
+ generics : export_generics ( db, & type_decl_id) ,
162
155
members : export_members ( db, member_owner) ,
163
156
}
164
157
}
165
158
166
159
fn export_enum ( db : & DbIndex , type_decl : & LuaTypeDecl ) -> Enum {
167
160
let type_decl_id = type_decl. get_id ( ) ;
168
161
let property = export_property ( db, & LuaSemanticDeclId :: TypeDecl ( type_decl. get_id ( ) . clone ( ) ) ) ;
169
- let member_owner = LuaMemberOwner :: Type ( type_decl_id) ;
162
+ let member_owner = LuaMemberOwner :: Type ( type_decl_id. clone ( ) ) ;
170
163
171
164
Enum {
172
165
name : type_decl. get_full_name ( ) . to_string ( ) ,
@@ -175,10 +168,26 @@ fn export_enum(db: &DbIndex, type_decl: &LuaTypeDecl) -> Enum {
175
168
typ : type_decl
176
169
. get_enum_field_type ( db)
177
170
. map ( |typ| render_typ ( db, & typ) ) ,
171
+ generics : export_generics ( db, & type_decl_id) ,
178
172
members : export_members ( db, member_owner) ,
179
173
}
180
174
}
181
175
176
+ fn export_generics ( db : & DbIndex , type_decl_id : & LuaTypeDeclId ) -> Vec < TypeVar > {
177
+ let type_index = db. get_type_index ( ) ;
178
+
179
+ type_index
180
+ . get_generic_params ( & type_decl_id)
181
+ . map ( |v| v. as_slice ( ) )
182
+ . unwrap_or_default ( )
183
+ . iter ( )
184
+ . map ( |( name, typ) | TypeVar {
185
+ name : name. clone ( ) ,
186
+ base : typ. as_ref ( ) . map ( |typ| render_typ ( db, typ) ) ,
187
+ } )
188
+ . collect ( )
189
+ }
190
+
182
191
fn export_members ( db : & DbIndex , member_owner : LuaMemberOwner ) -> Vec < Member > {
183
192
let member_index = db. get_member_index ( ) ;
184
193
let type_index = db. get_type_index ( ) ;
0 commit comments