Skip to content

Commit b15f027

Browse files
crowlKatskitsonk
andauthored
feat: infer object literals (#295)
Co-authored-by: Kitson Kelly <me@kitsonkelly.com>
1 parent 4d2a0df commit b15f027

9 files changed

Lines changed: 465 additions & 53 deletions

File tree

lib/deno_doc.generated.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// @generated file from wasmbuild -- do not edit
22
// deno-lint-ignore-file
33
// deno-fmt-ignore-file
4-
// source-hash: fca55b4c8c4ec02c0c7f784f24310c7ae07145c3
4+
// source-hash: c732f708820fb7e015bef5e68aba702403e8560d
55
let wasm;
66

77
const cachedTextDecoder = new TextDecoder("utf-8", {
@@ -392,7 +392,7 @@ const imports = {
392392
__wbindgen_throw: function (arg0, arg1) {
393393
throw new Error(getStringFromWasm0(arg0, arg1));
394394
},
395-
__wbindgen_closure_wrapper1097: function (arg0, arg1, arg2) {
395+
__wbindgen_closure_wrapper1109: function (arg0, arg1, arg2) {
396396
const ret = makeMutClosure(arg0, arg1, 203, __wbg_adapter_16);
397397
return addHeapObject(ret);
398398
},

lib/deno_doc_bg.wasm

3.19 KB
Binary file not shown.

src/class.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ pub fn class_to_class_def(
364364
Some(ts_type_ann_to_def(type_ann))
365365
} else if let Some(value) = &class_prop.value {
366366
// else, if it has an initializer, try to infer the type
367-
infer_ts_type_from_expr(value, false)
367+
infer_ts_type_from_expr(parsed_source, value, false)
368368
} else {
369369
// else, none
370370
None

src/enum.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub fn get_doc_for_ts_enum_decl(
4545
Str(str_) => str_.value.to_string(),
4646
};
4747
let init = if let Some(expr) = &enum_member.init {
48-
infer_ts_type_from_expr(expr, true)
48+
infer_ts_type_from_expr(parsed_source, expr, true)
4949
} else {
5050
None
5151
};

src/module.rs

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,34 +50,36 @@ pub fn get_doc_node_for_export_decl(
5050
fn_def,
5151
)]
5252
}
53-
Decl::Var(var_decl) => {
54-
super::variable::get_doc_for_var_decl(var_decl, previous_nodes)
55-
.into_iter()
56-
.map(|(name, var_def, maybe_range)| {
57-
let js_doc = if js_doc.is_empty() {
58-
js_doc_for_range(
59-
parsed_source,
60-
&maybe_range.unwrap_or_else(|| var_decl.range()),
61-
)
62-
} else {
63-
js_doc.clone()
64-
};
65-
let location = get_location(
66-
parsed_source,
67-
maybe_range
68-
.map(|range| range.start)
69-
.unwrap_or_else(|| var_decl.start()),
70-
);
71-
DocNode::variable(
72-
name,
73-
location,
74-
DeclarationKind::Export,
75-
js_doc,
76-
var_def,
77-
)
78-
})
79-
.collect()
80-
}
53+
Decl::Var(var_decl) => super::variable::get_doc_for_var_decl(
54+
parsed_source,
55+
var_decl,
56+
previous_nodes,
57+
)
58+
.into_iter()
59+
.map(|(name, var_def, maybe_range)| {
60+
let js_doc = if js_doc.is_empty() {
61+
js_doc_for_range(
62+
parsed_source,
63+
&maybe_range.unwrap_or_else(|| var_decl.range()),
64+
)
65+
} else {
66+
js_doc.clone()
67+
};
68+
let location = get_location(
69+
parsed_source,
70+
maybe_range
71+
.map(|range| range.start)
72+
.unwrap_or_else(|| var_decl.start()),
73+
);
74+
DocNode::variable(
75+
name,
76+
location,
77+
DeclarationKind::Export,
78+
js_doc,
79+
var_def,
80+
)
81+
})
82+
.collect(),
8183
Decl::TsInterface(ts_interface_decl) => {
8284
let (name, interface_def) =
8385
super::interface::get_doc_for_ts_interface_decl(

src/parser.rs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -456,20 +456,24 @@ impl<'a> DocParser<'a> {
456456
)])
457457
}
458458
Decl::Var(var_decl) => Some(
459-
super::variable::get_doc_for_var_decl(var_decl, previous_nodes)
460-
.into_iter()
461-
.map(|(name, var_def, _)| {
462-
let js_doc = js_doc_for_range(parsed_source, &var_decl.range());
463-
let location = get_location(parsed_source, var_decl.start());
464-
DocNode::variable(
465-
name,
466-
location,
467-
DeclarationKind::Declare,
468-
js_doc,
469-
var_def,
470-
)
471-
})
472-
.collect(),
459+
super::variable::get_doc_for_var_decl(
460+
parsed_source,
461+
var_decl,
462+
previous_nodes,
463+
)
464+
.into_iter()
465+
.map(|(name, var_def, _)| {
466+
let js_doc = js_doc_for_range(parsed_source, &var_decl.range());
467+
let location = get_location(parsed_source, var_decl.start());
468+
DocNode::variable(
469+
name,
470+
location,
471+
DeclarationKind::Declare,
472+
js_doc,
473+
var_def,
474+
)
475+
})
476+
.collect(),
473477
),
474478
Decl::TsInterface(ts_interface_decl) => {
475479
let (name, interface_def) =
@@ -837,6 +841,7 @@ impl<'a> DocParser<'a> {
837841
super::variable::VariableDef {
838842
kind: deno_ast::swc::ast::VarDeclKind::Var,
839843
ts_type: super::ts_type::infer_ts_type_from_expr(
844+
parsed_source,
840845
export_expr.expr.as_ref(),
841846
true,
842847
),

0 commit comments

Comments
 (0)