6731: Add replace_match_with_if_let assist r=matklad a=Veykril
Basically the counterpart to `replace_if_let_with_match`, I personally sometimes want to replace matches like
```rust
match foo {
pat => expr,
_ => (),
}
```
into the corresponding
```rust
if let pat = foo {
expr
}
```
which is the main reasoning behind this.
I put this into the same file as `replace_if_let_with_match` because the are complementing each other and I would probably rename the file to something like `replace_if_let_match` but I didn't do that for now because I was unsure whether git would still view this as a rename or not due to the amount of changes in the file so that the diff is still properly visible for now.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
6597: Upgrade Chalk r=flodiebold a=flodiebold
Also make overflow depth and max type size configurable through env variables. This can be helpful at least for debugging.
Tests currently fail because of rust-lang/chalk#656, so we'll need to wait for the next update to merge this.
Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
6733: Update attributes completion list r=jonas-schievink a=Veykril
Might be nice to have them grouped for readability/maintainability similar to how the [reference](https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index) does it but that would require the use of a `OnceCell` for sorting the entries back after construction.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
6725: Don't respawn proc macro server on crash r=jonas-schievink a=jonas-schievink
Now the thread managing IPC will exit when the server process crashes instead of respawning it.
Closes https://github.com/rust-analyzer/rust-analyzer/issues/6707
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6724: Fix `diagnostics` subcommand, look at all modules r=jonas-schievink a=jonas-schievink
The `diagnostics` subcommand used to only compute diagnostics for `lib.rs` / the root module of all workspace crates. This fixed it and makes it look at every module.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6723: Use correct, full substs for self type in impl r=flodiebold a=flodiebold
Without arbitrary self types, the self type could never refer to the method type parameters, so this wasn't a problem; but with arbitrary self types, it can.
This fixes the crash from #6668; but it doesn't make method resolution work for these methods.
Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
Without arbitrary self types, the self type could never refer to the method type
parameters, so this wasn't a problem; but with arbitrary self types, it can.
This fixes the crash from #6668; but it doesn't make method resolution work for
these methods.
6713: Make `compile_error!` message match upstream rustc r=jonas-schievink a=jonas-schievink
It only consists of the argument passed to it.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6712: Fix proc macro token mapping r=jonas-schievink a=jonas-schievink
Diagnostics inside proc macros are currently incorrectly placed at their original offset, but inside the containing file. This fixes that, by allowing the creation of `ExpansionInfo` from non-`macro_rules!` macro invocations.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6700: More macro diagnostics improvements r=jonas-schievink a=jonas-schievink
This threads macro expansion errors through `eager.rs` and the `AsMacroCall` trait, improving macro diagnostics emitted during body lowering.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6701: Don't prime caches when just opening a file r=jonas-schievink a=jonas-schievink
Fixes occasional "progress handler already registered" errors.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6698: Attach macro expansion errors to the right file r=jonas-schievink a=jonas-schievink
Previously it attached them to the result of the macro expansion (or, if no result was produced, to the file containing the invocation). Always use the file containing the invocation.
This doesn't seem to have any observable difference, but seems better in theory.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
6649: Accept more than just the standard rust literal suffixes in *Number::suffix r=matklad a=Veykril
I am not entirely sure whether to keep or remove the `SUFFIXES` but I figured we can always bring them back once they are needed.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>