Skip to content

Commit f107dea

Browse files
authored
Merge pull request #591 from taminomara/main
Add more info to json docs export
2 parents 30140c0 + bf9a6fd commit f107dea

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

crates/emmylua_doc_cli/src/json_generator/export.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::common::{render_const, render_typ};
22
use crate::json_generator::json_types::*;
33
use emmylua_code_analysis::{
44
DbIndex, FileId, LuaDeprecated, LuaMemberKey, LuaMemberOwner, LuaNoDiscard, LuaSemanticDeclId,
5-
LuaSignature, LuaType, LuaTypeCache, LuaTypeDecl, Vfs,
5+
LuaSignature, LuaType, LuaTypeCache, LuaTypeDecl, LuaTypeDeclId, Vfs,
66
};
77
use rowan::TextRange;
88

@@ -11,6 +11,7 @@ pub fn export(db: &DbIndex) -> Index {
1111
modules: export_modules(db),
1212
types: export_types(db),
1313
globals: export_globals(db),
14+
config: db.get_emmyrc().clone(),
1415
}
1516
}
1617

@@ -135,38 +136,30 @@ fn export_class(db: &DbIndex, type_decl: &LuaTypeDecl) -> Class {
135136
.iter()
136137
.map(|typ| render_typ(db, typ))
137138
.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),
148140
members: export_members(db, member_owner),
149141
}
150142
}
151143

152144
fn export_alias(db: &DbIndex, type_decl: &LuaTypeDecl) -> Alias {
153145
let type_decl_id = type_decl.get_id();
154146
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());
156148

157149
Alias {
158150
name: type_decl.get_full_name().to_string(),
159151
property,
160152
loc: export_loc_for_type(db, type_decl),
161153
typ: type_decl.get_alias_ref().map(|typ| render_typ(db, typ)),
154+
generics: export_generics(db, &type_decl_id),
162155
members: export_members(db, member_owner),
163156
}
164157
}
165158

166159
fn export_enum(db: &DbIndex, type_decl: &LuaTypeDecl) -> Enum {
167160
let type_decl_id = type_decl.get_id();
168161
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());
170163

171164
Enum {
172165
name: type_decl.get_full_name().to_string(),
@@ -175,10 +168,26 @@ fn export_enum(db: &DbIndex, type_decl: &LuaTypeDecl) -> Enum {
175168
typ: type_decl
176169
.get_enum_field_type(db)
177170
.map(|typ| render_typ(db, &typ)),
171+
generics: export_generics(db, &type_decl_id),
178172
members: export_members(db, member_owner),
179173
}
180174
}
181175

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+
182191
fn export_members(db: &DbIndex, member_owner: LuaMemberOwner) -> Vec<Member> {
183192
let member_index = db.get_member_index();
184193
let type_index = db.get_type_index();

crates/emmylua_doc_cli/src/json_generator/json_types.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use emmylua_code_analysis::Emmyrc;
12
use serde::{Deserialize, Serialize};
23
use std::path::PathBuf;
34

@@ -6,6 +7,7 @@ pub struct Index {
67
pub modules: Vec<Module>,
78
pub types: Vec<Type>,
89
pub globals: Vec<Global>,
10+
pub config: Emmyrc,
911
}
1012

1113
#[derive(Debug, Serialize, Deserialize)]
@@ -69,6 +71,7 @@ pub struct Enum {
6971
pub property: Property,
7072
pub loc: Vec<Loc>,
7173
pub typ: Option<String>,
74+
pub generics: Vec<TypeVar>,
7275
pub members: Vec<Member>,
7376
}
7477

@@ -79,6 +82,7 @@ pub struct Alias {
7982
pub property: Property,
8083
pub loc: Vec<Loc>,
8184
pub typ: Option<String>,
85+
pub generics: Vec<TypeVar>,
8286
pub members: Vec<Member>,
8387
}
8488

0 commit comments

Comments
 (0)