Skip to content

Commit c7f284a

Browse files
authored
Merge pull request #661 from taminomara/json-doc-fix
Lower type rendering level in json output
2 parents b36890e + 587c394 commit c7f284a

File tree

4 files changed

+43
-38
lines changed

4 files changed

+43
-38
lines changed

crates/emmylua_code_analysis/src/db_index/type/humanize_type.rs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ use itertools::Itertools;
55
use crate::{
66
DbIndex, GenericTpl, LuaAliasCallType, LuaFunctionType, LuaGenericType, LuaInstanceType,
77
LuaIntersectionType, LuaMemberKey, LuaMemberOwner, LuaObjectType, LuaSignatureId,
8-
LuaStringTplType, LuaTupleType, LuaType, LuaTypeDeclId, LuaUnionType, TypeSubstitutor,
9-
VariadicType,
8+
LuaStringTplType, LuaTupleType, LuaType, LuaTypeDeclId, LuaUnionType, VariadicType,
109
};
1110

1211
use super::{LuaAliasCallKind, LuaMultiLineUnion};
@@ -484,22 +483,6 @@ fn humanize_generic_type(db: &DbIndex, generic: &LuaGenericType, level: RenderLe
484483
};
485484

486485
let full_name = type_decl.get_full_name();
487-
match level {
488-
RenderLevel::Brief => {
489-
if type_decl.is_alias() {
490-
let params = generic
491-
.get_params()
492-
.iter()
493-
.map(|ty| ty.clone())
494-
.collect::<Vec<_>>();
495-
let substitutor = TypeSubstitutor::from_type_array(params);
496-
if let Some(origin) = type_decl.get_alias_origin(db, Some(&substitutor)) {
497-
return humanize_type(db, &origin, level.next_level());
498-
}
499-
}
500-
}
501-
_ => {}
502-
}
503486

504487
let generic_params = generic
505488
.get_params()

crates/emmylua_doc_cli/src/common.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use emmylua_code_analysis::{humanize_type, DbIndex, LuaType, RenderLevel};
22

3-
pub fn render_typ(db: &DbIndex, typ: &LuaType) -> String {
3+
pub fn render_typ(db: &DbIndex, typ: &LuaType, level: RenderLevel) -> String {
44
match typ {
55
LuaType::IntegerConst(_) => "integer".to_string(),
66
LuaType::FloatConst(_) => "number".to_string(),
77
LuaType::StringConst(_) => "string".to_string(),
88
LuaType::BooleanConst(_) => "boolean".to_string(),
9-
_ => humanize_type(db, typ, RenderLevel::Documentation),
9+
_ => humanize_type(db, typ, level),
1010
}
1111
}
1212

crates/emmylua_doc_cli/src/json_generator/export.rs

Lines changed: 27 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, LuaTypeDeclId, Vfs,
5+
LuaSignature, LuaType, LuaTypeCache, LuaTypeDecl, LuaTypeDeclId, RenderLevel, Vfs,
66
};
77
use rowan::TextRange;
88

@@ -34,7 +34,7 @@ fn export_modules(db: &DbIndex) -> Vec<Module> {
3434
let member_owner = LuaMemberOwner::Element(i.get_range().clone());
3535
(export_members(db, member_owner), None)
3636
}
37-
typ => (Vec::new(), Some(render_typ(db, typ))),
37+
typ => (Vec::new(), Some(render_typ(db, typ, RenderLevel::Simple))),
3838
};
3939

4040
let property = module
@@ -118,7 +118,7 @@ fn export_globals(db: &DbIndex) -> Vec<Global> {
118118
name: decl.get_name().to_string(),
119119
property,
120120
loc,
121-
typ: render_typ(db, typ),
121+
typ: render_typ(db, typ, RenderLevel::Simple),
122122
literal: render_const(typ),
123123
})),
124124
}
@@ -140,7 +140,7 @@ fn export_class(db: &DbIndex, type_decl: &LuaTypeDecl) -> Class {
140140
.get_super_types(&type_decl_id)
141141
.unwrap_or_default()
142142
.iter()
143-
.map(|typ| render_typ(db, typ))
143+
.map(|typ| render_typ(db, typ, RenderLevel::Simple))
144144
.collect(),
145145
generics: export_generics(db, &type_decl_id),
146146
members: export_members(db, member_owner),
@@ -156,7 +156,9 @@ fn export_alias(db: &DbIndex, type_decl: &LuaTypeDecl) -> Alias {
156156
name: type_decl.get_full_name().to_string(),
157157
property,
158158
loc: export_loc_for_type(db, type_decl),
159-
typ: type_decl.get_alias_ref().map(|typ| render_typ(db, typ)),
159+
typ: type_decl
160+
.get_alias_ref()
161+
.map(|typ| render_typ(db, typ, RenderLevel::Simple)),
160162
generics: export_generics(db, &type_decl_id),
161163
members: export_members(db, member_owner),
162164
}
@@ -173,7 +175,7 @@ fn export_enum(db: &DbIndex, type_decl: &LuaTypeDecl) -> Enum {
173175
loc: export_loc_for_type(db, type_decl),
174176
typ: type_decl
175177
.get_enum_field_type(db)
176-
.map(|typ| render_typ(db, &typ)),
178+
.map(|typ| render_typ(db, &typ, RenderLevel::Simple)),
177179
generics: export_generics(db, &type_decl_id),
178180
members: export_members(db, member_owner),
179181
}
@@ -189,7 +191,9 @@ fn export_generics(db: &DbIndex, type_decl_id: &LuaTypeDeclId) -> Vec<TypeVar> {
189191
.iter()
190192
.map(|(name, typ)| TypeVar {
191193
name: name.clone(),
192-
base: typ.as_ref().map(|typ| render_typ(db, typ)),
194+
base: typ
195+
.as_ref()
196+
.map(|typ| render_typ(db, typ, RenderLevel::Simple)),
193197
})
194198
.collect()
195199
}
@@ -212,7 +216,9 @@ fn export_members(db: &DbIndex, member_owner: LuaMemberOwner) -> Vec<Member> {
212216
let name = match member_key {
213217
LuaMemberKey::Name(name) => name.to_string(),
214218
LuaMemberKey::Integer(i) => format!("[{i}]"),
215-
LuaMemberKey::ExprType(typ) => format!("[{}]", render_typ(db, typ)),
219+
LuaMemberKey::ExprType(typ) => {
220+
format!("[{}]", render_typ(db, typ, RenderLevel::Simple))
221+
}
216222
_ => return None,
217223
};
218224

@@ -254,7 +260,9 @@ fn export_signature(
254260
.iter()
255261
.map(|(name, typ)| TypeVar {
256262
name: name.clone(),
257-
base: typ.as_ref().map(|typ| render_typ(db, typ)),
263+
base: typ
264+
.as_ref()
265+
.map(|typ| render_typ(db, typ, RenderLevel::Simple)),
258266
})
259267
.collect(),
260268
params: signature
@@ -264,7 +272,7 @@ fn export_signature(
264272
.map(|(i, name)| match signature.param_docs.get(&i) {
265273
Some(param_info) => FnParam {
266274
name: Some(name.clone()),
267-
typ: Some(render_typ(db, &param_info.type_ref)),
275+
typ: Some(render_typ(db, &param_info.type_ref, RenderLevel::Simple)),
268276
desc: param_info.description.clone(),
269277
},
270278
None => FnParam {
@@ -278,14 +286,20 @@ fn export_signature(
278286
.iter()
279287
.map(|ret| FnParam {
280288
name: ret.name.clone(),
281-
typ: Some(render_typ(db, &ret.type_ref)),
289+
typ: Some(render_typ(db, &ret.type_ref, RenderLevel::Simple)),
282290
desc: ret.description.clone(),
283291
})
284292
.collect(),
285293
overloads: signature
286294
.overloads
287295
.iter()
288-
.map(|overload| render_typ(db, &LuaType::DocFunction(overload.clone())))
296+
.map(|overload| {
297+
render_typ(
298+
db,
299+
&LuaType::DocFunction(overload.clone()),
300+
RenderLevel::Simple,
301+
)
302+
})
289303
.collect(),
290304
is_async: signature.is_async,
291305
is_meth: signature.is_colon_define,
@@ -308,7 +322,7 @@ fn export_field(
308322
name,
309323
property,
310324
loc,
311-
typ: render_typ(db, typ),
325+
typ: render_typ(db, typ, RenderLevel::Simple),
312326
literal: render_const(typ),
313327
}
314328
}

crates/emmylua_doc_cli/src/markdown_generator/render.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ fn render_doc_function_type(
6262
.map(|param| {
6363
let name = param.0.clone();
6464
if let Some(ty) = &param.1 {
65-
format!("{}: {}", name, render_typ(db, ty))
65+
format!(
66+
"{}: {}",
67+
name,
68+
render_typ(db, ty, RenderLevel::Documentation)
69+
)
6670
} else {
6771
name.to_string()
6872
}
@@ -71,7 +75,7 @@ fn render_doc_function_type(
7175

7276
let ret_type = lua_func.get_ret();
7377

74-
let ret_strs = render_typ(db, ret_type);
78+
let ret_strs = render_typ(db, ret_type, RenderLevel::Documentation);
7579

7680
let mut result = String::new();
7781
result.push_str("```lua\n");
@@ -126,7 +130,11 @@ fn render_signature_type(
126130
.map(|param| {
127131
let name = param.0.clone();
128132
if let Some(ty) = &param.1 {
129-
format!("{}: {}", name, render_typ(db, ty))
133+
format!(
134+
"{}: {}",
135+
name,
136+
render_typ(db, ty, RenderLevel::Documentation)
137+
)
130138
} else {
131139
name.to_string()
132140
}
@@ -160,14 +168,14 @@ fn render_signature_type(
160168
0 => {}
161169
1 => {
162170
result.push_str(" -> ");
163-
let type_text = render_typ(db, &rets[0].type_ref);
171+
let type_text = render_typ(db, &rets[0].type_ref, RenderLevel::Documentation);
164172
let name = rets[0].name.clone().unwrap_or("".to_string());
165173
result.push_str(format!("{} {}", name, type_text).as_str());
166174
}
167175
_ => {
168176
result.push('\n');
169177
for ret in rets {
170-
let type_text = render_typ(db, &ret.type_ref);
178+
let type_text = render_typ(db, &ret.type_ref, RenderLevel::Documentation);
171179
let name = ret.name.clone().unwrap_or("".to_string());
172180
result.push_str(format!(" -> {} {}\n", name, type_text).as_str());
173181
}

0 commit comments

Comments
 (0)