diff --git a/crates/tinymist-query/src/analysis/definition.rs b/crates/tinymist-query/src/analysis/definition.rs index dd0cd21c..79116833 100644 --- a/crates/tinymist-query/src/analysis/definition.rs +++ b/crates/tinymist-query/src/analysis/definition.rs @@ -409,22 +409,17 @@ pub(crate) fn find_definition<'a>( let values = analyze_expr(world.deref(), &use_site); - let func_or_module = values.into_iter().find_map(|v| match &v { - Value::Func(..) | Value::Module(..) => Some(v), + let func = values.into_iter().find_map(|v| match &v { + Value::Func(..) => Some(v), _ => None, }); - Some(match func_or_module { + Some(match func { Some(Value::Func(f)) => Definition::Func(FuncDefinition { value: f.clone(), span: f.span(), use_site, }), - Some(Value::Module(m)) => { - trace!("find module. {m:?}"); - // todo - return None; - } _ => { return match may_ident { ast::Expr::Ident(e) => find_syntax_definition(world, current, use_site, e.get()), diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_alias.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_alias.typ new file mode 100644 index 00000000..601c0bed --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_alias.typ @@ -0,0 +1,5 @@ +// path: base.typ +#let f() = 1; +----- +#import "base.typ": f as one +#(/* position after */ one); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_ident.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_ident.typ new file mode 100644 index 00000000..1847d1d3 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_ident.typ @@ -0,0 +1,5 @@ +// path: base.typ +#let f() = 1; +----- +#import "base.typ": f +#(/* position after */ f); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_new_name.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_new_name.typ new file mode 100644 index 00000000..704c9c65 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_new_name.typ @@ -0,0 +1,4 @@ +// path: base.typ +----- +#import "base.typ" as x +#(/* position after */ x); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_self.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_self.typ new file mode 100644 index 00000000..4408677d --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_self.typ @@ -0,0 +1,4 @@ +// path: base.typ +----- +#import "base.typ" +#(/* position after */ base); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_star.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_star.typ new file mode 100644 index 00000000..a336bd84 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_star.typ @@ -0,0 +1,7 @@ +// path: base.typ +#let f() = 1; +----- +. + +#import "base.typ": * +#(/* position after */ f); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/import_star_variable.typ b/crates/tinymist-query/src/fixtures/goto_definition/import_star_variable.typ new file mode 100644 index 00000000..61bbbff7 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/import_star_variable.typ @@ -0,0 +1,7 @@ +// path: variable.typ +#let x = 2; +----- +. + +#import "variable.typ": * +#(/* position after */ x); diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_alias.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_alias.typ.snap new file mode 100644 index 00000000..23297017 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_alias.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_alias.typ +--- +[ + { + "originSelectionRange": "1:23:1:26", + "targetRange": "0:6:0:8", + "targetSelectionRange": "0:6:0:8" + } +] diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_ident.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_ident.typ.snap new file mode 100644 index 00000000..ac80f5fa --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_ident.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_ident.typ +--- +[ + { + "originSelectionRange": "1:23:1:24", + "targetRange": "0:6:0:8", + "targetSelectionRange": "0:6:0:8" + } +] diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_new_name.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_new_name.typ.snap new file mode 100644 index 00000000..bc221e40 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_new_name.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_new_name.typ +--- +[ + { + "originSelectionRange": "1:23:1:24", + "targetRange": "0:22:0:23", + "targetSelectionRange": "0:22:0:23" + } +] diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_self.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_self.typ.snap new file mode 100644 index 00000000..aa1a57b1 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_self.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_self.typ +--- +[ + { + "originSelectionRange": "1:23:1:27", + "targetRange": "0:8:0:18", + "targetSelectionRange": "0:8:0:18" + } +] diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_star.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_star.typ.snap new file mode 100644 index 00000000..662fbab2 --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_star.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_star.typ +--- +[ + { + "originSelectionRange": "3:23:3:24", + "targetRange": "0:6:0:8", + "targetSelectionRange": "0:6:0:8" + } +] diff --git a/crates/tinymist-query/src/fixtures/goto_definition/test@import_star_variable.typ.snap b/crates/tinymist-query/src/fixtures/goto_definition/test@import_star_variable.typ.snap new file mode 100644 index 00000000..1e634f0f --- /dev/null +++ b/crates/tinymist-query/src/fixtures/goto_definition/test@import_star_variable.typ.snap @@ -0,0 +1,12 @@ +--- +source: crates/tinymist-query/src/goto_definition.rs +expression: "JsonRepr::new_redacted(result, &REDACT_LOC)" +input_file: crates/tinymist-query/src/fixtures/goto_definition/import_star_variable.typ +--- +[ + { + "originSelectionRange": "3:23:3:24", + "targetRange": "0:1:0:10", + "targetSelectionRange": "0:1:0:10" + } +]