about summary refs log tree commit diff
path: root/src/tools/rust-analyzer
AgeCommit message (Collapse)AuthorLines
2024-09-01Auto merge of #17967 - Veykril:mbe-tests, r=Veykrilbors-76/+288
internal: Lay basic ground work for standalone mbe tests Most of our mbe hir-def tests don't actually do anything name res relevant, we can (and should) move those down the stack into `mbe/hir-expand`.
2024-09-01internal: Lay basic ground work for standalone mbe testsLukas Wirth-52/+233
2024-09-01Auto merge of #17985 - riverbl:explicit-enum-discriminant, r=Veykrilbors-3/+258
Add explicit enum discriminant assist Add assist for adding explicit discriminants to all variants of an enum. Closes #17798.
2024-09-01minor: Reduce friction for updating minicoreLukas Wirth-27/+58
2024-09-01Auto merge of #17737 - hyf0:hyf_32089420384, r=Veykrilbors-21/+284
feat(ide-completion): extra sugar auto-completion `async fn ...` in `impl trait` for `async fn in trait` that's defined in desugar form Solves #17719. --- Preview <img width="670" alt="image" src="https://github.com/user-attachments/assets/64ccef84-4062-4702-8760-89220585f422"> <img width="540" alt="image" src="https://github.com/user-attachments/assets/d22637f9-d531-43b2-a9f1-cd40a002903a"> <img width="631" alt="image" src="https://github.com/user-attachments/assets/21cd2142-bb8e-4493-9ac7-e6a9e7076904">
2024-09-01Complete desugared and resugared async fn in trait implsLukas Wirth-87/+267
2024-09-01feat(ide-completion): extra sugar auto-completion `async fn ...` in `impl ↵Yunfei-1/+84
trait` for `async fn in trait` that's defined in desugar form
2024-09-01minor: Downgrade cyclic deps error to warningLukas Wirth-48/+8
2024-09-01Auto merge of #18015 - ChayimFriedman2:flip-comma-attribute, r=Veykrilbors-3/+61
Handle attributes correctly in "Flip comma" Attributes often contain path followed by a token tree (e.g. `align(2)`), and the previous code handled them as two separate items, which led to results such as `#[repr(alignC, (2))]`. An alternative is to just make the assist unavailable in attributes, like we do in macros. But contrary to macros, attributes often have a fixed form, so this seems useful. Fixes #18013.
2024-09-01Rollup merge of #129207 - GrigorenkoPV:elided-is-named, r=cjgillotMatthias Krüger-3/+3
Lint that warns when an elided lifetime ends up being a named lifetime As suggested in https://github.com/rust-lang/rust/issues/48686#issuecomment-1817334575 Fixes #48686
2024-09-01Handle attributes correctly in "Flip comma"Chayim Refael Friedman-3/+61
Attributes often contain path followed by a token tree (e.g. `align(2)`, and the previous code handled them as two separate items, which led to results such as `#[repr(alignC, (2))]`. An alternative is to just make the assist unavailable in attributes, like we do in macros. But contrary to macros, attributes often have a fixed form, so this seems useful.
2024-09-01Provide an option to hide deprecated items from completionChayim Refael Friedman-1/+26
2024-08-31Fix `elided_named_lifetimes` in codePavel Grigorenko-3/+3
2024-08-31Rename function and remove flag argumentriverbl-9/+21
Use less confusing name for function, duplicate logic rather than taking flag as argument.
2024-08-31Update generated doctestsriverbl-0/+27
Update generated doctests, change unit test to be different to doctest.
2024-08-31Add explicit enum discriminant assistriverbl-5/+221
Add assist for adding explicit discriminants to all variants of an enum.
2024-08-31Auto merge of #18012 - Veykril:inlay-hints-lt, r=Veykrilbors-57/+59
fix: Fix lifetime elision inlay hints breaking for ranged requests
2024-08-31fix: Fix lifetime elision inlay hints breaking for ranged requestsLukas Wirth-57/+59
2024-08-31Auto merge of #18011 - Wilfred:op_queue_doc_comments, r=Veykrilbors-0/+11
internal: Add doc comments to OpQueue I spent a while debugging some OpQueue behaviours and found the API slightly confusing, so I've added doc comments to clarify what each OpQueue method does.
2024-08-31Auto merge of #17945 - alibektas:ratoml_categorization, r=alibektasbors-644/+607
Recategorize config classes
2024-08-31Apply changes, fix path information in a comment in config.rsAli Bektas-19/+4
2024-08-30Auto merge of #18010 - Veykril:inlay-hints-lt, r=Veykrilbors-358/+597
feat: Support fn-ptr and fn-path types for lifetime elision hints All still syntax based unfortunately but that won't change for quite a while
2024-08-30Support fn-ptr and fn-path types for lifetime elision hintsLukas Wirth-358/+597
2024-08-30Auto merge of #18009 - Veykril:reformat-no-rustup, r=Veykrilbors-22/+26
fix: do not assume rustup is installed in xtask codegen take 2 7d9e4fcc07e5de94e37b73436147cdbbaa35dbdc broke this on rustup toolchains, the `cmd` command is trying to be too smart here
2024-08-30Allow xtask::reformat to work without rustupLukas Wirth-18/+26
2024-08-30Revert "fix: do not assume rustup is installed in xtask codegen"Lukas Wirth-19/+15
This reverts commit 7d9e4fcc07e5de94e37b73436147cdbbaa35dbdc.
2024-08-30Auto merge of #18008 - Veykril:inlay-hints-resolve, r=Veykrilbors-216/+282
internal: Improve inlay hint resolution reliability The payload now ships the range the inlay hint ought to be triggered for instead of trying to estimate it from its position which is somewhat brittle
2024-08-30Improve inlay hint resolution reliabilityLukas Wirth-216/+282
2024-08-30fix(ide-completion): fix handling of `for` in `impl T for A` in function bodyrami3l-5/+81
2024-08-30Auto merge of #18003 - ChayimFriedman2:addr_of-static-mut, r=Veykrilbors-7/+78
Do not report missing unsafe on `addr_of[_mut]!(EXTERN_OR_MUT_STATIC)` The compiler no longer does as well; see https://github.com/rust-lang/rust/pull/125834. Also require unsafe when accessing `extern` `static` (other than by `addr_of!()`). Fixes #17978.
2024-08-30Auto merge of #17999 - ShoyuVanilla:issue-17998, r=Veykrilbors-21/+45
fix: `std::error::Error` is object unsafe Fixes #17998 I tried to get generic predicates of assoc function itself, not inherited from the parent here; https://github.com/rust-lang/rust-analyzer/blob/0ae42bd42576566540a84c62e118aa823edcf2ec/crates/hir-ty/src/object_safety.rs#L420-L442 But this naive equality check approach doesn't work when the assoc function has one or more generic paramters like; ```rust trait Foo {} trait Bar: Foo { fn bar(&self); } ``` because the generic predicates of the parent, `Bar` is `[^1.0 implements Foo]` and the generic predicates of `fn bar` is `[^1.1 implements Foo]`, which are different. This PR implements a correct logic for filtering out parent generic predicates for this.
2024-08-29fix: consider indentation in the "Generate impl" and "Generate trait impl" ↵Ivar Scholten-13/+76
assists This makes the generated impl's indentation match the ADT it targets, improving formatting when using nested modules inside of the same file or when defining types inside of a function.
2024-08-29Do not report missing unsafe on `addr_of[_mut]!(EXTERN_OR_MUT_STATIC)`Chayim Refael Friedman-6/+51
The compiler no longer does as well; see https://github.com/rust-lang/rust/pull/125834.
2024-08-29Add diagnostic for accessing an `extern` staticChayim Refael Friedman-1/+27
2024-08-30fix: `std::error::Error` is object unsafeShoyu Vanilla-21/+45
2024-08-29Auto merge of #17814 - ShoyuVanilla:object-safety, r=Veykrilbors-66/+1194
feat: Implement object safety and its hovering hint Resolves #17779 - [x] Fill missing implementations - [x] Hover rendering - [x] Implement object safety's own test suite, like layout - [x] Add test cases (from rustc maybe) - [x] Clean up ugly codes - [x] Add doc string
2024-08-29feat: Implement object safetyShoyu Vanilla-66/+1194
2024-08-29Auto merge of #17975 - IvarWithoutBones:dont-assume-rustup, r=Veykrilbors-15/+19
fix: do not assume rustup is installed in xtask codegen When formatting generated code the xtask crate attempts to run `rustup run stable rustfmt`, which fails if `rustup` is not installed. This results in test failures when another source manages the compiler toolchain, for example when using Nix (or any other distro-specific packaging solution): * xtask::codegen::grammar::test * xtask::codegen::assists_doc_tests::test With this PR xtask will first attempt to run `rustup run stable rustfmt`, and if that fails just plain `rustfmt`. It still validates a stable version is being used. This allows `cargo test` to pass on systems that do not use `rustup`.
2024-08-29Auto merge of #17993 - ChayimFriedman2:convert-to-tuple-attrs, r=Veykrilbors-11/+49
Consider field attributes when converting from tuple to named struct and the opposite Fixes #17983. I tried to use the `SourceChangeBuilder::make_mut()` API, but it duplicated the attribute...
2024-08-29Auto merge of #17991 - ChayimFriedman2:extract-variable-ref, r=Veykrilbors-10/+140
fix: Don't add reference when it isn't needed for the "Extract variable" assist I.e. don't generate `let var_name = &foo()`. Because it always irritates me when I need to fix that. Anything that creates a new value don't need a reference. That excludes mostly field accesses and indexing. I had a thought that we can also not generate a reference for fields and indexing as long as the type is `Copy`, but sometimes people impl `Copy` even when they don't want to copy the values (e.g. a large type), so I didn't do that.
2024-08-29Auto merge of #17987 - ChayimFriedman2:column-macro, r=Veykrilbors-1/+33
fix: Fix name resolution of shadowed builtin macro Fixes #17969.
2024-08-29Auto merge of #17988 - darichey:fix-scip-def, r=Veykrilbors-1/+3
Fix incorrect symbol definitions in SCIP output The SCIP output incorrectly marks some symbols as definitions because it doesn't account for the file ID when comparing the token's range to its definition's range. This means that if a symbol is referenced in a file at the same position at which it is defined in another file, that reference will be marked as a definition. I was quite surprised by how common this is. For example, `PartialEq` is defined [here](https://github.com/rust-lang/rust/blob/1.80.1/library/core/src/cmp.rs#L273) and `uuid` references it [here](https://github.com/uuid-rs/uuid/blob/1.8.0/src/lib.rs#L329). And what do you know, they're both at offset 10083! In our large monorepo, this happens for basically every common stdlib type!
2024-08-29Auto merge of #17940 - ChayimFriedman2:closure-to-fn, r=Veykrilbors-13/+1511
feat: Create an assist to convert closure to freestanding fn The assist converts all captures to parameters. Closes #17920. This was more work than I though, since it has to handle a bunch of edge cases... Based on #17941. Needs to merge it first.
2024-08-29Merge from rust-lang/rustLaurențiu Nicola-2/+4
2024-08-29Preparing for merge from rust-lang/rustLaurențiu Nicola-1/+1
2024-08-29fix: Fix TokenStream::to_string implementation dropping quotation marksLukas Wirth-3/+8
2024-08-29fix: Fix proc-macro server crashing when parsing a non-lexable string into a ↵Lukas Wirth-3/+15
TokenStream
2024-08-29Auto merge of #17992 - Wilfred:newlines_in_logs, r=Veykrilbors-2/+2
internal: Avoid newlines in fetch errors Most logs lines don't have newlines, ensure fetch errors follow this pattern. This makes it easier to see which log line is associated with the error. Before: 2024-08-28T21:11:58.431856Z ERROR FetchWorkspaceError: rust-analyzer failed to discover workspace After: 2024-08-28T21:11:58.431856Z ERROR FetchWorkspaceError: rust-analyzer failed to discover workspace
2024-08-28Fix incorrect symbol definitions in SCIP outputDavid Richey-1/+3
2024-08-28internal: Add doc comments to OpQueueWilfred Hughes-0/+11