Chayim Refael Friedman
0f1adf43df
An associated type is not a projection!
...
More correctly, a `TyKind::AssociatedType` is not the same as `TyKind::Projection`.
We used to map next-solver `TyKind::Alias` to Chalk's `TyKind::AssociatedType`. This is very incorrect, as `AssociatedType` is assumed to be fully normalized, and caused a lot of type mismatches.
Unfortunately fixing this causes a lot of stack overflows, because the next solver doesn't have something akin to `AssociatedType` so we normalize again and again. The reason is that is the lazy-normalization nature of the next solver, which means we need to stop normalizing everything. This will be fixed in the next commit.
2025-09-10 00:53:15 +03:00
Chayim Refael Friedman
d03fd874d0
Adopt even more custom types in the new solver
...
A lot of simplification and fun.
2025-09-10 00:48:33 +03:00
Chayim Refael Friedman
9621689e47
Upgrade rustc crates and handle changes to canonicalization
...
They have to do with diagnostics, we could probably not support them but we will also someday want good diagnostics.
The code is mostly copied from rustc.
2025-09-10 00:48:33 +03:00
David Barsky
07b68bd9c1
Merge pull request #20613 from A4-Tacks/diag-unresolved-field-fixes-ws
...
metrics / build_metrics (push) Waiting to run
metrics / generate_final_metrics (push) Blocked by required conditions
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
Fix indent for unresolved_field fixes
2025-09-09 18:49:52 +00:00
David Barsky
bc6e592fb4
Merge pull request #20639 from ChayimFriedman2/update-test-abs
...
fix: Resolve paths to snapshot test libraries absolutely
2025-09-09 17:16:50 +00:00
Shoyu Vanilla
4a8bc8db38
Fix failing tests and fill-in missing details
2025-09-10 01:43:22 +09:00
jackh726
d24e8c1d38
WIP switch inference table to next-solver
2025-09-09 22:45:14 +09:00
Chayim Refael Friedman
fcab4fbabb
Make #[target_feature] safe always on WASM
...
Even when the feature isn't enabled, as it's not UB to invoke an undefined feature in WASM (just a trap).
2025-09-09 13:49:11 +03:00
Chayim Refael Friedman
6315e315ad
Expand target info to include the architecture
...
And make it easier to expand it more in the future, if needed.
2025-09-09 13:47:26 +03:00
Chayim Refael Friedman
f91b99b471
Resolve paths to snapshot test libraries absolutely
...
That is, resolve them globally, not from the test's location.
This *should* result in more robust resolution; for example, previously the code failed to detect the presence of snapshot testing if the snapshot library was renamed in the dependency or was an indirect dependency.
2025-09-09 10:38:20 +03:00
Chayim Refael Friedman
6da1ce7869
Merge pull request #20624 from A4-Tacks/fix-syn-lifetime-bounds
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
Fix LifetimeParam::lifetime_bounds invalid implement
2025-09-09 07:35:19 +00:00
A4-Tacks
080f2b3f71
Fix LifetimeParam::lifetime_bounds invalid implement
...
Lifetime node example:
```
LIFETIME_PARAM@15..21
LIFETIME@15..17
LIFETIME_IDENT@15..17 "'a"
COLON@17..18 ":"
WHITESPACE@18..19 " "
TYPE_BOUND_LIST@19..21
TYPE_BOUND@19..21
LIFETIME@19..21
LIFETIME_IDENT@19..21 "'b"
```
2025-09-09 15:22:12 +08:00
Ifeanyi Orizu
b394f5d408
Skip flycheck for workspace if it is already being checked
2025-09-08 16:13:42 -05:00
Chayim Refael Friedman
9edc9cbe5d
Merge pull request #20632 from rmehri01/navigation-on-prims
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
feat: support navigation on primitives
2025-09-08 20:12:04 +00:00
Ryan Mehri
ab44e6d504
make TryToNav take Semantics instead of RootDatabase
2025-09-08 15:59:46 -04:00
Ryan Mehri
091cc8dc47
add test
2025-09-08 14:33:25 -04:00
Ryan Mehri
535147d57f
impl TryToNav for BuiltinType instead
2025-09-08 14:23:52 -04:00
Ryan Mehri
67a39886c3
feat: support navigation on primitives
2025-09-08 11:16:11 -04:00
Wilfred Hughes
bca5d59627
Remove support for register_attr
...
This was removed in rustc in 2022: https://github.com/rust-lang/rust/pull/101123
Closes #20525 .
2025-09-08 15:56:56 +01:00
Laurențiu Nicola
a91fb2b9a1
Merge pull request #20620 from A4-Tacks/let-else-completion
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
fix: add `else` keyword completion after `let` statements
2025-09-08 06:03:00 +00:00
Laurențiu Nicola
e0aa8d404b
Merge pull request #20626 from A4-Tacks/make-record-ws
...
Improve make::struct_ field_list whitespace
2025-09-08 05:52:57 +00:00
A4-Tacks
7e2dc40642
Improve make::struct_ field_list whitespace
...
Example
---
**Before this PR**:
```rust
struct Variant{
field: u32
}
```
**After this PR**:
```rust
struct Variant {
field: u32
}
```
2025-09-07 22:19:52 +08:00
A4-Tacks
56114fc302
Add allow else keyword completion in LetStmt
...
Example
---
```rust
fn foo() {
let _ = 2 el$0
}
```
->
```rust
fn foo() {
let _ = 2 else {
$0
};
}
```
2025-09-06 13:09:07 +08:00
A4-Tacks
db027e057d
Fix indent for unresolved_field fixes
...
Examples
---
```rust
mod indent {
struct Foo {}
fn foo() {
let foo = Foo{};
foo.bar$0;
}
}
```
**Before this PR**:
```rust
mod indent {
struct Foo { bar: ()
}
fn foo() {
let foo = Foo{};
foo.bar;
}
}
```
**After this PR**:
```rust
mod indent {
struct Foo {
bar: ()
}
fn foo() {
let foo = Foo{};
foo.bar;
}
}
```
---
New field list add newline
```rust
mod indent {
struct Foo;
fn foo() {
Foo.bar$0;
}
}
```
**Before this PR**:
```rust
mod indent {
struct Foo{ bar: () }
fn foo() {
Foo.bar;
}
}
```
**After this PR**:
```rust
mod indent {
struct Foo {
bar: (),
}
fn foo() {
Foo.bar;
}
}
```
2025-09-05 15:57:51 +08:00
Shoyu Vanilla (Flint)
a53b44412d
Merge pull request #20609 from ChayimFriedman2/update-rustc
...
metrics / build_metrics (push) Has been cancelled
rustdoc / rustdoc (push) Has been cancelled
metrics / other_metrics (diesel-1.4.8) (push) Has been cancelled
metrics / other_metrics (hyper-0.14.18) (push) Has been cancelled
metrics / other_metrics (ripgrep-13.0.0) (push) Has been cancelled
metrics / other_metrics (self) (push) Has been cancelled
metrics / other_metrics (webrender-2022) (push) Has been cancelled
metrics / generate_final_metrics (push) Has been cancelled
internal: Upgrade rustc crates
2025-09-05 03:18:14 +00:00
Chayim Refael Friedman
b78574cd62
Upgrade rustc crates
...
The main changes are (there are some other small changes):
- Using a specific type for trait IDs in the new solver, allowing us to simplify a lot of code.
- Add `BoundConst` similar to `BoundTy` and `BoundRegion` (previously consts used `BoundVar` directly), due to a new trait requirement.
2025-09-04 22:36:31 +03:00
Chayim Refael Friedman
fa19df2d0e
Merge pull request #20607 from ChayimFriedman2/ns-dyn-mismatch
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
internal: Add a regression test for a fixed new trait solver bug
2025-09-04 09:34:45 +00:00
Chayim Refael Friedman
aa2bb65417
Add a regression test for a fixed new trait solver bug
...
Not sure what exactly fixed it, but why not.
2025-09-04 12:18:22 +03:00
Chayim Refael Friedman
721dcdd327
Fix typo in config
...
To make it backwards-compatible.
2025-09-04 12:10:39 +03:00
Shoyu Vanilla (Flint)
a79e27b8d2
Merge pull request #20586 from ChayimFriedman2/placeholder-ns
...
rustdoc / rustdoc (push) Has been cancelled
metrics / build_metrics (push) Has been cancelled
metrics / other_metrics (webrender-2022) (push) Has been cancelled
metrics / generate_final_metrics (push) Has been cancelled
metrics / other_metrics (diesel-1.4.8) (push) Has been cancelled
metrics / other_metrics (hyper-0.14.18) (push) Has been cancelled
metrics / other_metrics (ripgrep-13.0.0) (push) Has been cancelled
metrics / other_metrics (self) (push) Has been cancelled
fix: Make sense of the mess that were (are) different kind of generics in the solver
2025-09-03 06:00:29 +00:00
Chayim Refael Friedman
8a2e845e58
Deduplicate methods in completion by function ID and not by name
...
Because duplicates can be found with traits. Worse, the inherent methods could be private, and we'll discover that only later. But even if they're not they're different methods, and its seems worthy to present them all to the user.
2025-09-02 08:16:36 +03:00
Chayim Refael Friedman
41611b19e5
Make sense of the mess that were (are) different kind of generics in the solver
...
To the extent possible.
Previously they were confused. Sometimes generic params were treated as `Param` and sometimes as `Placeholder`. A completely redundant (in the new solver) mapping of salsa::Id to ints to intern some info where we could just store it uninterned (not in Chalk though, for some weird reason).
Plus fix a cute bug in closure substitution that was caught by the assertions of Chalk but the next solver did not have such assertions. Do we need more assertions?
2025-09-02 06:39:32 +03:00
Elliot Roberts
32e2b60d86
Pass --target before -- for cargo rustc
2025-08-30 13:36:29 -07:00
Shoyu Vanilla (Flint)
a271dac578
Merge pull request #20563 from ChayimFriedman2/ns-projection-dyn-auto-trait
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
fix: When mapping next-solver's `dyn` type, add `Self` (aka. bound var ^1.0) to auto traits' substitutions
2025-08-30 13:39:33 +00:00
Lukas Wirth
dd7c7ae44c
Merge pull request #20560 from ChayimFriedman2/analysis-stats-improve
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
fix: Add progress bars to more places in analysis-stats
2025-08-29 07:30:59 +00:00
Chayim Refael Friedman
867af5fbb6
When mapping next-solver's dyn type, add Self (aka. bound var ^1.0) to auto traits' substitutions
...
Chalk represents dyn types as a list of predicate, the self type should be there. The next solver represents them quite differently. The `Self` was forgotten for the auto trait case.
2025-08-28 23:53:55 +03:00
Chayim Refael Friedman
ff06610625
Don't require a full InferenceTable for CastTy
...
A DB is enough.
2025-08-28 19:24:46 +03:00
Chayim Refael Friedman
7af77c5af1
Add progress bars to more places in analysis-stats
...
Namely, mir lowering, const eval and IDE things.
2025-08-28 18:54:46 +03:00
Chayim Refael Friedman
9f7dd01bef
Attach the db in one more place in highlighting
2025-08-28 01:25:09 +03:00
Laurențiu Nicola
968fc01fa6
Merge pull request #20547 from ChayimFriedman2/highlight-related-unsafe-scope
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
fix: In highlight_related, when on an unsafe block, don't highlight unsafe operations of other unsafe blocks
2025-08-27 19:09:21 +00:00
Shoyu Vanilla (Flint)
1d90205a98
Merge pull request #20527 from ChayimFriedman2/cache-next-solver
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
perf: Cache trait solving across queries in the same revision
2025-08-27 04:31:39 +00:00
Chayim Refael Friedman
1efff4677e
In highlight_related, when on an unsafe block, don't highlight unsafe operations of other unsafe blocks
2025-08-26 21:46:04 +03:00
Chayim Refael Friedman
6bcfbbe8f9
Remove SolverDefId::ForeignId
...
Replace it with normal `SolverDefId::TypeAliasId`.
The split caused a very funny bug where code was getting `TypeAliasId` where it expected `ForeignId`, because `TypeAliasId` had a `From` impl from `hir_def::TypeAliasId` and `ForeignId` had not, plus a careless `into()`.
I could've fixed this specific bug but opted to remove the split instead; currently, it just provides more room for bugs, as we don't have typed IDs for the solver anyway, and even when we'll have (hopefully), that doesn't seem like a very useful distinction, for example in hir-def foreign types are just `TypeAliasId` with some flags.
Constructing a test for this isn't trivial; the trivial test (creating a foreign type, even proving a trait bound for it) fails to fail before the change, probably because we don't use the new solver everywhere yet so we don't trigger this specific code path.
2025-08-26 19:33:46 +03:00
Shoyu Vanilla (Flint)
12604577dd
Merge pull request #20399 from rust-lang/veykril/push-klrwvmzokqwu
...
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
Enable warning logs by default
2025-08-26 05:56:22 +00:00
Shoyu Vanilla (Flint)
0358021a8f
Merge pull request #20534 from A4-Tacks/tog-macro-delim-semicolon
...
Fix ExprStmt delete semicolon for toggle_macro_delimiter
2025-08-26 05:55:08 +00:00
Shoyu Vanilla (Flint)
d86cf448c3
Merge pull request #20509 from A4-Tacks/fix-move-guard-to-arm-indent
...
Fix indent for move_guard_to_arm_body
2025-08-26 05:52:06 +00:00
Shoyu Vanilla (Flint)
25adf3464c
Merge pull request #20520 from ChayimFriedman2/reborrow
...
feat: Add an option to remove reborrows from adjustment inlay hints
2025-08-26 05:48:34 +00:00
Shoyu Vanilla (Flint)
51f7f7903d
Merge pull request #20537 from ChayimFriedman2/new-solver-normalize
...
fix: Normalize all types when finishing inference
2025-08-26 05:31:07 +00:00
Chayim Refael Friedman
870cb3329b
Merge pull request #20423 from ShoyuVanilla/import-2024
...
metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
metrics / build_metrics (push) Waiting to run
metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
metrics / other_metrics (self) (push) Blocked by required conditions
metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
metrics / generate_final_metrics (push) Blocked by required conditions
rustdoc / rustdoc (push) Waiting to run
Make import sorting order follow 2024 edition style
2025-08-25 19:19:31 +00:00
Chayim Refael Friedman
fd77af3a78
Don't map Chalk's Normalize to next solver's NormalizesTo
...
`NormalizesTo` is a private predicate that should not be used outside the solver. For normalization, rustc uses `AliasRelate`, so replace with that.
2025-08-25 20:56:45 +03:00