Skip to content

Commit 8791210

Browse files
committed
fix generic_index range
1 parent 37e8d9e commit 8791210

File tree

5 files changed

+32
-21
lines changed

5 files changed

+32
-21
lines changed

crates/emmylua_code_analysis/src/compilation/analyzer/doc/type_def_tags.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn analyze_class(analyzer: &mut DocAnalyzer, tag: LuaDocTagClass) -> Option<
3737
.get_type_index_mut()
3838
.add_generic_params(class_decl_id.clone(), generic_params.clone());
3939

40-
add_generic_index(analyzer, generic_params);
40+
add_generic_index(analyzer, generic_params, &tag);
4141
}
4242

4343
if let Some(supers) = tag.get_supers() {
@@ -200,10 +200,13 @@ fn get_generic_params(
200200
params_result
201201
}
202202

203-
fn add_generic_index(analyzer: &mut DocAnalyzer, generic_params: Vec<GenericParam>) {
203+
fn add_generic_index(
204+
analyzer: &mut DocAnalyzer,
205+
generic_params: Vec<GenericParam>,
206+
tag: &LuaDocTagClass,
207+
) {
204208
let mut ranges = Vec::new();
205-
let range = analyzer.comment.get_range();
206-
ranges.push(range);
209+
ranges.push(tag.get_effective_range());
207210
if let Some(comment_owner) = analyzer.comment.get_owner() {
208211
let range = comment_owner.get_range();
209212
ranges.push(range);
@@ -222,8 +225,6 @@ fn add_generic_index(analyzer: &mut DocAnalyzer, generic_params: Vec<GenericPara
222225
}
223226
}
224227

225-
dbg!(&ranges);
226-
227228
analyzer
228229
.generic_index
229230
.add_generic_scope(ranges, generic_params, false);

crates/emmylua_code_analysis/src/diagnostic/checker/param_type_check.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ fn check_call_expr(
4040
.infer_expr_list_types(&arg_exprs, None)
4141
.into_iter()
4242
.unzip();
43-
dbg!(&func);
4443

4544
let colon_call = call_expr.is_colon_call();
4645
let colon_define = func.is_colon_define();

crates/emmylua_code_analysis/src/diagnostic/test/param_type_check_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ mod test {
11411141
ws.def(
11421142
r#"
11431143
---@class ObserverParams<T>
1144-
---@field next fun( value: T)
1144+
---@field next fun(value: T)
11451145
---@field errorResume? fun(error: any)
11461146
11471147

crates/emmylua_code_analysis/src/semantic/generic/instantiate_type/mod.rs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,17 +186,6 @@ pub fn instantiate_doc_function(
186186
},
187187
_ => {
188188
let new_type = instantiate_type_generic(db, origin_param_type, substitutor);
189-
// 如果是 rest 参数且实例化后的类型是 tuple, 那么我们将展开 tuple
190-
// if origin_param.0 == "..." && tpl_func_params.len() == i + 1 {
191-
// if let LuaType::Tuple(tuple_type) = &new_type {
192-
// let base_index = new_params.len();
193-
// for (offset, tuple_element) in tuple_type.get_types().iter().enumerate() {
194-
// let param_name = format!("var{}", base_index + offset);
195-
// new_params.push((param_name, Some(tuple_element.clone())));
196-
// }
197-
// continue;
198-
// }
199-
// }
200189
new_params.push((origin_param.0.clone(), Some(new_type)));
201190
}
202191
}
@@ -283,8 +272,6 @@ fn instantiate_generic(
283272
generic: &LuaGenericType,
284273
substitutor: &TypeSubstitutor,
285274
) -> LuaType {
286-
dbg!(generic);
287-
dbg!(substitutor);
288275
let generic_params = generic.get_params();
289276
let mut new_params = Vec::new();
290277
for param in generic_params {

crates/emmylua_parser/src/syntax/node/doc/tag.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,30 @@ impl LuaDocTagClass {
255255
pub fn get_attrib(&self) -> Option<LuaDocAttribute> {
256256
self.child()
257257
}
258+
259+
pub fn get_effective_range(&self) -> rowan::TextRange {
260+
let mut range = self.syntax().text_range();
261+
262+
let mut next = self.syntax().next_sibling();
263+
while let Some(sibling) = next {
264+
if let LuaKind::Syntax(kind) = sibling.kind() {
265+
if matches!(
266+
kind,
267+
LuaSyntaxKind::DocTagClass
268+
| LuaSyntaxKind::DocTagAlias
269+
| LuaSyntaxKind::DocTagEnum
270+
| LuaSyntaxKind::DocTagType
271+
) {
272+
break;
273+
}
274+
}
275+
276+
range = range.cover(sibling.text_range());
277+
next = sibling.next_sibling();
278+
}
279+
280+
range
281+
}
258282
}
259283

260284
#[derive(Debug, Clone, PartialEq, Eq, Hash)]

0 commit comments

Comments
 (0)