37483 Commits

Author SHA1 Message Date
Lukas Wirth
9d58a93602
Merge pull request #20439 from A4-Tacks/t-macro-bracket-doc
Add guess braces doc `T![]` for `T_`
2025-12-22
2025-12-21 14:19:06 +00:00
Lukas Wirth
14cc41f2ba
Merge pull request #20438 from A4-Tacks/fix-guess-renamed-macro-braces
Fix guess renamed macro braces
2025-12-21 14:18:55 +00:00
Lukas Wirth
47037adcac
Merge pull request #20577 from A4-Tacks/nested-if-indent
Fix indent for merge_nested_if
2025-12-21 14:03:50 +00:00
Lukas Wirth
ee9783825a
Merge pull request #20576 from A4-Tacks/nested-if-let
Fix nested if-let for merge_nested_if
2025-12-21 14:03:26 +00:00
Lukas Wirth
09a64600fb
Merge pull request #20472 from BenjaminBrienen/remove-style-point
Remove conflicting advice
2025-12-21 14:02:48 +00:00
Lukas Wirth
5b9198d11f
Merge pull request #20597 from A4-Tacks/conv-to-guarded-ret-doc
Add LetStmt doc for convert_to_guarded_return
2025-12-21 14:02:06 +00:00
Lukas Wirth
3aecf081f6
Merge pull request #20996 from A4-Tacks/explicit-dot-call-deref
Add ide-assist: add_explicit_method_call_deref
2025-12-21 13:50:43 +00:00
Lukas Wirth
10418b49d0
Merge pull request #21316 from Veykril/push-rsxnznymvluw
Call out feature freeze on IDE assists
2025-12-21 13:28:45 +00:00
Lukas Wirth
1a420f5153 Call out feature freeze on IDE assists 2025-12-21 14:11:48 +01:00
Lukas Wirth
82d4f8bacd
Merge pull request #21304 from asukaminato0721/19168
internal: Improve recursive mbe parsing behavior
2025-12-21 12:39:05 +00:00
Lukas Wirth
7fdd04bdb3
Merge pull request #21314 from Veykril/push-kywtpqlnwztr
Add 'Use of AI tools' section to CONTRIBUTING.md
2025-12-21 12:35:00 +00:00
Lukas Wirth
80e10c0ea0 Add 'Use of AI tools' section to CONTRIBUTING.md 2025-12-21 13:26:07 +01:00
Chayim Refael Friedman
ccb2ffe653
Merge pull request #21311 from A4-Tacks/serde-derive-feature
internal: Fix hir-ty implicit serde derive feature
2025-12-21 07:42:18 +00:00
A4-Tacks
5abec3c2ce
internal: Fix hir-ty implicit serde derive feature
bad commit: 0dd3fe029a532c6c5fa3b0bdd7c4eb57843bb156
cwd: crates/hir-ty
cmd: cargo check
output: error: cannot find derive macro `Serialize` in this scope
2025-12-21 15:30:47 +08:00
Chayim Refael Friedman
8f28e82a4f
Merge pull request #21212 from A4-Tacks/comp-try-let-default-varname
Add default varname for TryEnum postfix completion
2025-12-21 06:13:23 +00:00
A4-Tacks
847317ccba
Add default varname for TryEnum postfix completion
Example
---
```rust
fn main() {
    let bar = Some(true);
    bar.i$0
}
```

**Before this PR**

```rust
fn main() {
    let bar = Some(true);
    if let Some($1) = bar {
        $0
    }
}
```

**After this PR**

```rust
fn main() {
    let bar = Some(true);
    if let Some(${1:bar}) = bar {
        $0
    }
}
```
2025-12-21 13:55:21 +08:00
Chayim Refael Friedman
961fd33e8e
Merge pull request #21310 from ChayimFriedman2/remove-attach-db
minor: Remove some redundant `attach_db()`s
2025-12-21 05:53:58 +00:00
Chayim Refael Friedman
b5fbcc6917
Merge pull request #21166 from A4-Tacks/fly-closure-this-param
Support undotted-self for `this` param closure
2025-12-21 05:37:24 +00:00
Chayim Refael Friedman
65c14db957 Remove some redundant attach_db()s 2025-12-21 07:10:19 +02:00
Chayim Refael Friedman
cbc18ae50c
Merge pull request #21289 from A4-Tacks/add-ref-matched-type
Complete reference `&T` -> `&&T`
2025-12-21 05:08:04 +00:00
Chayim Refael Friedman
3d25bbf964
Merge pull request #21291 from A4-Tacks/expected-nested-match-arm-expr-ty
Fix match arm nested body invalid expected type
2025-12-21 05:04:56 +00:00
A4-Tacks
f8f69b2a61
Complete reference &T -> &&T
Example
---
```rust
struct S;
fn foo(s: &&S) {}
fn main() {
    let mut ssss = &S;
    foo($0);
}
```

**Before this PR**

```rust
st S S []
lc ssss &S [local]
st S S []
fn foo(…) fn(&&S) []
fn main() fn() []
```

**After this PR**

```rust
st S S []
lc ssss &S [local]
lc &ssss [type+local]
st S S []
fn foo(…) fn(&&S) []
fn main() fn() []
```
2025-12-21 12:58:12 +08:00
A4-Tacks
f0055f6557
Add parent_match method to node_ext 2025-12-21 12:54:47 +08:00
Chayim Refael Friedman
e47b23dafe
Merge pull request #21293 from A4-Tacks/move-guard-no-apply-non-naked
Fix applicable on non naked if for move_guard assist
2025-12-21 04:38:36 +00:00
Chayim Refael Friedman
4849b44922
Merge pull request #21309 from jackh726/failed_obligations
Add an lsp extension to get failed obligations for a given function
2025-12-21 01:34:53 +00:00
jackh726
f870ae8dc0 Review comments - some cleanups to get_failed_obligations, including returning a list 2025-12-21 01:05:36 +00:00
jackh726
0dd3fe029a Add lsp extension to get failed trait obligations for a given function 2025-12-20 22:43:58 +00:00
Chayim Refael Friedman
765b7bdb43
Merge pull request #21307 from ChayimFriedman2/more-perf-work
perf: More perf improvements, made possible after non-Salsa interneds
2025-12-20 18:04:57 +00:00
Chayim Refael Friedman
3ab0420c52 Replace some new() with new_from_args()
It's faster, when you already have a `GenericArgs`.
2025-12-20 19:21:57 +02:00
Chayim Refael Friedman
f91e54f7e5 Convert some <InternedSlice>::new_from_iter() to new_from_slice()
It's faster, when you have a slice available.
2025-12-20 19:08:26 +02:00
Chayim Refael Friedman
096ebb0759 Pre-intern some common types
This is possible now that they are no longer interned with Salsa.
2025-12-20 19:08:26 +02:00
Chayim Refael Friedman
d2a029ae05 Use slices for Interner::FnInputTys and Interner::GenericArgsSlice, not Tys and GenericArgs respectively
This allows us to avoid interning them.
2025-12-20 19:08:26 +02:00
Chayim Refael Friedman
fa4ea90fb2
Merge pull request #21295 from ChayimFriedman2/non-salsa-interneds-v3
perf: Non-Salsa-interned solver types - with GC for them
2025-12-20 15:56:46 +00:00
Asuka Minato
a769fbdb87 fix
test case
2025-12-20 05:09:06 +09:00
Chayim Refael Friedman
5e2dfbbd02 Add extensive docs for the unsafe operations 2025-12-18 17:30:20 +02:00
Chayim Refael Friedman
36c9f6224c GC support for solver types
A GC is triggered every X revisions, and is synchronous, unfortunately.
2025-12-18 10:12:03 +02:00
Chayim Refael Friedman
776c818882 Lay the basics for non-Copy solver types with GC
That means stop using Salsa for interning solver types.
2025-12-18 10:12:03 +02:00
Chayim Refael Friedman
ea1d2998f2
Merge pull request #21282 from J3m3/crate-attrs
feat: introduce `crate_attrs` field in `rust-project.json`
2025-12-18 01:38:37 +00:00
Jesung Yang
7f6858fd09 feat: introduce crate_attrs field in rust-project.json
Since the commit 50384460c68f
("Rewrite method resolution to follow rustc more closely"), the method
resolution logic has changed: rust-analyzer only looks up inherent
methods for primitive types in sysroot crates.

Unfortunately, this change broke at least one project that relies on
`rust-project.json`: Rust-for-Linux. Its auto-generated
`rust-project.json` directly embeds `core`, `alloc`, and `std` in the
`crates` list without defining `sysroot_src`. Consequently,
rust-analyzer fails to identify them as sysroot crates, breaking IDE
support for primitive methods (e.g., `0_i32.rotate_left(0)`).

However, specifying `sysroot_src` creates a new issue: it implicitly
adds `std` as a dependency to all kernel module crates, which are
actually compiled with `-Zcrate-attr=no_std`. Since rust-analyzer cannot
see compiler flags passed outside of the project definition, we need a
method to explicitly specify `#![no_std]` or, more generally,
crate-level attributes through the project configuration.

To resolve this, extend the `rust-project.json` format with a new
`crate_attrs` field. This allows users to specify crate-level attributes
such as `#![no_std]` directly into the configuration, enabling
rust-analyzer to respect them when analyzing crates.

References:
- The original Zulip discussion:
  https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer/topic/Primitive.20type.20inherent.20method.20lookup.20fails/with/562983853
2025-12-18 01:27:43 +00:00
Chayim Refael Friedman
efdb3de4f2
Merge pull request #21298 from J3m3/item-tree-pretty
feat: pretty print attributes up to `cfg(false)`
2025-12-18 00:54:43 +00:00
Jesung Yang
dd33c82f6b feat: pretty print attributes up to cfg(false)
Extend ItemTree pretty-printing to include attributes even when a cfg
expression evaluates to false, emitting explicit `cfg(cfg_expr)` marker
after the attributes.

This improves testability of ItemTree attribute handling by exposing
more information in pretty-printed output.
2025-12-18 00:16:34 +00:00
Chayim Refael Friedman
02f53e88cf
Merge pull request #21294 from ChayimFriedman2/lang-items-redundant
minor: Remove redundant things from the lang items macro
2025-12-17 11:28:18 +00:00
Chayim Refael Friedman
edd49164aa Remove redundant things from the lang items macro 2025-12-17 13:18:10 +02:00
Chayim Refael Friedman
34fd9f65a3
Merge pull request #21283 from ChayimFriedman2/upgrade-salsa
internal: Upgrade Salsa
2025-12-17 11:09:07 +00:00
Shoyu Vanilla (Flint)
e500b2e86e
Merge pull request #21285 from ChayimFriedman2/remove-rust-outdated-ungram
minor: Remove Rust ungram file from the Ungrammar repo
2025-12-17 11:00:37 +00:00
Chayim Refael Friedman
4e54d37ba3 Upgrade Salsa
The new version gives an additional `salsa::Id` to cycle handlers, and renames `non_update_return_type` to `non_update_types`.
2025-12-17 12:59:30 +02:00
A4-Tacks
390d14bdc8
Fix applicable on non naked if for move_guard assist
Example
---
```rust
fn main() {
    match 92 {
        _ => {
            let cond = true;
            $0if cond {
                foo()
            }
        },
        _ => true
    }
}
```

**Before this PR**

```rust
fn main() {
    match 92 {
        _ if cond => foo(),
        _ => true
    }
}
```

**After this PR**

Assist not applicable
2025-12-17 17:53:52 +08:00
A4-Tacks
e1747f9ddf
Fix match arm nested body invalid expected type
Example
---
```rust
struct Foo;
enum E { X }
fn foo() -> Foo {
    match E::X { Foo::X => { $0 } }
}
```

**Before this PR**

```text
ty: E, name: ?
```

**After this PR**

```text
ty: Foo, name: ?
```
2025-12-17 17:35:33 +08:00
Chayim Refael Friedman
32d50921d6 Remove Rust ungram file from the Ungrammar repo
It can be confused with the real Rust ungram, now that they're in the same repo.
2025-12-16 21:59:12 +02:00
Lukas Wirth
2a402415ec
Merge pull request #21284 from ChayimFriedman2/upgrade-rustc
internal: Upgrade rustc crates
2025-12-16 15:37:11 +00:00