8940: Give ‘unsafe’ semantic token modifier to unsafe traits r=Veykril a=arzg
Hi! This is my first pull request that touches rust-analyzer itself beyond a search-and-replace, so please tell me if I should change anything or do anything differently. :)
Co-authored-by: Aramis Razzaghipour <aramisnoah@gmail.com>
8936: fix: Improve nightly downloads with better local state management r=matklad a=SomeoneToIgnore
When any nightly is downloaded, we store its GitHub release id in the local cache and never invalidate that cache.
Due to this, it was possible to do the following sequence:
* have the nightly locally
* downgrade the extension to any stable version
* observe that despite the `"rust-analyzer.updates.channel": "nightly",` setting, no nightly updates are happening
* on the next day, the actual update happens (given the new nightly is released)
Since it's impossible to install nightly version directly through the VSCode marketplace, any fiddling with dev version results in the same situation: one have to wait for the next nightly release to happen in order to restore the nightly.
This PR
* invalidates the cache eagerly during bootstrap if the current plugin is not nightly
* enforces the release id check for nightly versions only
* fixes the `ctx.globalStoragePath` deprecated API usage
Hopefully, it also helps mysterious non-updated plugins that we encounter from time to time, but hard to tell for sure.
8939: internal: disable debug symbols due to failing windows build r=matklad a=matklad
bors r+
🤖
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
8938: internal: Fix#8931 r=flodiebold a=flodiebold
- and add some better checking for similar bugs
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
The problem was the skipping of binders in
`resolve_method_call_as_callable`; this still doesn't use the _correct_
substitution, but at least it doesn't return a type with free variables
in it.
Fixes#8931.
8935: docs(manual): Add rust-tools.nvim to nvim-lsp r=matklad a=simrat39
I'm not sure what to write there but this seems fine
https://github.com/simrat39/rust-tools.nvim/issues/16
Co-authored-by: sim <simrats169169@gmail.com>
8932: internal: even prettier itemtrees r=jonas-schievink a=jonas-schievink
Extends the ItemTree pretty printer to handle all `Path`s, and to print generic parameters and where-clauses.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
8926: internal: Drop uncompressed release artifacts and those following the old naming convention r=matklad a=lnicola
Closes#6996
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
8924: Add last remaining module docstring r=flodiebold a=flodiebold
That was easier than expected.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
8921: Resolve any lifetime variables to 'static after inference r=flodiebold a=flodiebold
Chalk's unification can sometimes create lifetime variables, which we
currently don't really deal with, but at least we don't want to leak
them outside of inference.
Should fix#8919.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
Chalk's unification can sometimes create lifetime variables, which we
currently don't really deal with, but at least we don't want to leak
them outside of inference.
Should fix#8919.
8901: fix: `fill_match_arms` hangs on a tuple of large enums r=matklad a=iDawer
+ Lazy computation of missing arms.
+ Convenience function to test lazy computation: `ide_assists::tests::check_assist_unresolved`.
Fixes#8835
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
8916: ItemTree pretty-printing r=jonas-schievink a=jonas-schievink
This adds a printer for `ItemTree` contents, and a few tests to ensure that `ItemTree` lowering works like we expect it to. It also adds a new "Debug ItemTree" command that can be used to see the `ItemTree` of the currently open file. The pretty-printed output is usually close enough to Rust syntax that we can even use Rust syntax highlighting.
This is similar to the old `ItemTree` tests we had, but produces significantly more readable output, so these should actually carry their weight.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
8856: Use Chalk for unification r=flodiebold a=flodiebold
- use Chalk's unification, get rid of our own `unify`
- rewrite coercion to not use unification internals and to be more analogous to rustc
- fix various coercion bugs
- rewrite handling of obligations, since the old hacky optimization where we noted when an inference variable changes wasn't possible anymore
- stop trying to deeply resolve types all the time during inference, instead only do it shallowly where necessary
Co-authored-by: Florian Diebold <flodiebold@gmail.com>