Skip to content

Commit

Permalink
fix: Capture more declarations for sway autocomplete (#6598)
Browse files Browse the repository at this point in the history
## Description

I noticed that autocomplete wasn't working for some function
declarations. It was because sometimes function declarations in the
token map are stored as `TyDecl::FunctionDecl(decl)` and sometimes as
`TypedAstToken::TypedFunctionDeclaration(TyFunctionDecl {..})`

This PR expands the matching for declarations to make autocomplete work
in more cases.

## Checklist

- [ ] I have linked to any relevant issues.
- [ ] I have commented my code, particularly in hard-to-understand
areas.
- [ ] I have updated the documentation where relevant (API docs, the
reference, and the Sway book).
- [ ] If my change requires substantial documentation changes, I have
[requested support from the DevRel
team](https://github.com/FuelLabs/devrel-requests/issues/new/choose)
- [ ] I have added tests that prove my fix is effective or that my
feature works.
- [ ] I have added (or requested a maintainer to add) the necessary
`Breaking*` or `New Feature` labels where relevant.
- [ ] I have done my best to ensure that my PR adheres to [the Fuel Labs
Code Review
Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md).
- [ ] I have requested a review from the relevant team or maintainers.
  • Loading branch information
sdankel authored Oct 1, 2024
1 parent c5f363b commit 069ae4a
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions sway-lsp/src/capabilities/code_actions/diagnostic/auto_import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,27 @@ pub(crate) fn get_call_paths_for_name<'s>(
trait_decl.call_path.to_import_path(ctx.engines, &namespace);
Some(call_path)
}
TyDecl::FunctionDecl(decl) => {
let function_decl = ctx.engines.de().get_function(&decl.decl_id);
let call_path = function_decl
.call_path
.to_import_path(ctx.engines, &namespace);
Some(call_path)
}
TyDecl::ConstantDecl(decl) => {
let constant_decl = ctx.engines.de().get_constant(&decl.decl_id);
let call_path = constant_decl
.call_path
.to_import_path(ctx.engines, &namespace);
Some(call_path)
}
TyDecl::TypeAliasDecl(decl) => {
let type_alias_decl = ctx.engines.de().get_type_alias(&decl.decl_id);
let call_path = type_alias_decl
.call_path
.to_import_path(ctx.engines, &namespace);
Some(call_path)
}
_ => None,
};
}
Expand Down

0 comments on commit 069ae4a

Please sign in to comment.