Rollup of 35 pull requests#158342
Conversation
This is a follow-up to rust-lang#155431
Implement a rust-analyzer VS Code command for creating new Cargo projects from the editor. Add command registration, UI entry points, configuration for post-create behavior, focused validation, and tests for the command flow. AI tools were used to research comparable editor behaviors and help refine the implementation plan; the resulting changes were reviewed before submission.
When an index expression with an ambiguous type (e.g. `arr[idx.into()]`) appears inside a cast or binary operation, the type inference error was incorrectly attributed to the outer expression instead of the `.into()` call. Resolve the index sub-expression type first so the error points at the actual ambiguous site.
Point the new project failure flow at the extension logs and make the log-opening command available when the language server is not running. Also add tests for the env-aware cargo path resolution path introduced for project creation.
Run the VS Code formatter to fix the remaining Prettier issue in the launch config test before updating rust-lang/rust-analyzer#22103. AI-assisted: OpenAI Codex was used to identify and apply this change.
Handle Windows executable suffixes when the VS Code extension probes for cargo through PATH or CARGO_HOME, and preserve case-insensitive environment variable lookup for supplied env objects so copied Windows `Path` entries still resolve cargo. Normalize and document the Windows CARGO_HOME test comparison as well, because VS Code path resolution can lowercase the drive letter in `fsPath` without changing which executable was found. This keeps the extension-side lookup aligned with the Rust-side toolchain helper behavior and avoids breaking create-project on common Windows setups. AI-assisted: OpenAI Codex was used to identify and apply this change.
fix: rename schema subItems with sub_items
…as_adt_def Make assist `inline_type_alias` work on ADT definitions
Example
---
```json
{
"rust-analyzer.completion.autoimport.exclude": [
{"path": "xxx_crate::Foo", "type": "variants"},
]
}
```
```rust
enum Foo {
Variant1,
Variant2,
}
fn main() {
V$0
}
```
**Before this PR**
```
ev TupleV(…) TupleV(u32)
ev Variant1 (use Foo::Variant1) Variant1
ev Variant2 (use Foo::Variant2) Variant2
bt u32 u32
```
**After this PR**
```
ev TupleV(…) TupleV(u32)
bt u32 u32
```
feat: support flyimport exclude variants
Example
---
```rust
macro_rules! m { ($i:expr) => { $i } }
fn f() {
let xyz = 0;
m!(xyz$0);
}
```
**Before this PR**
Assist not applicable
**After this PR**
```rust
macro_rules! m { ($i:expr) => { $i } }
fn f() {
m!(0);
}
```
Example
---
```rust
macro_rules! i { ($($t:tt)*) => { $($t)* } }
fn f() {
i!(let xyz = 0;);
_ = xyz$0;
_ = xyz;
}
```
**Before this PR**
```
request handler panicked: can't resolve SyntaxNodePtr { kind: LET_STMT, range: 0..9 } with SOURCE_FILE@0..108
```
**After this PR**
```rust
macro_rules! i { ($($t:tt)*) => { $($t)* } }
fn f() {
i!(let xyz = 0;);
_ = 0;
_ = xyz;
}
```
This command as removed in 797185e.
…lysis-bench-removed Remove docs about removed `analysis-bench` command
internal: git ignore .vim/coc-settings.json
In c0f428d55b425c8ba18039a3687cdcdc47e111d1 this code was adjusted to handle a change in `load_workspace`. The change assumed that the `ra-rustc-test` folder existed in the `std::env::temp_dir`, but this assumption is not always correct.
This updates the rust-version file to 485ec3f.
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: rust-lang/rust@485ec3f Filtered ref: rust-lang/rust-analyzer@1541b9b Upstream diff: rust-lang/rust@029c9e1...485ec3f This merge was created using https://github.com/rust-lang/josh-sync.
…ate-dir-for-cargo-xtask-metrics-rustc_tests Create directory for `cargo xtask metrics rustc_tests`
Rustc pull update
…ypqwmmp Fix destructuring assignments not introducing moves
The region-constraint machinery for `-Zassumptions-on-binders` is region-outlives-only. A non-lifetime binder (`for<T>`) introduces a placeholder type in the binder's universe `u`. The rewrite that pulls constraints out of `u` only folds regions (`PlaceholderReplacer` just implements `fold_region`), so an alias-outlives constraint such as `<!T as Trait>::Assoc: 'r` reaches `pull_region_outlives_constraints_out_of_universe` still in `u` and trips `assert!(max_universe < u)`. Report ambiguity for those constraints instead of asserting, matching the existing `None => Ambiguity` bail-outs in this module. The goal then surfaces as an ordinary ambiguity error rather than an ICE.
|
Finished benchmarking commit (73100ee): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Our benchmarks found a performance regression caused by this PR. Next Steps:
@rustbot label: +perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 2.9%, secondary -2.8%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (secondary 0.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 503.101s -> 505.309s (0.44%) |
|
Started 10 perf runs |
|
Improvements fully explained by #157271 (comment) |
View all comments
Successful merges:
rust-analyzersubtree update #158315 (rust-analyzersubtree update)stdarchtest crates fromrust-src#158336 (Stop excludingstdarchtest crates fromrust-src)proc_macrothings #157271 (simplify someproc_macrothings)extern "tail"#157983 (Lift the same-signature restriction forextern "tail")ShimKindenum #158105 (Extract all instance shim variants into newShimKindenum)resolve_ident_in_module_non_globs_unadjusted#158207 (Resolver: local/external split ofresolve_ident_in_module_non_globs_unadjusted)-Zassumptions-on-binders#157807 (don't ice on non-lifetime binders under-Zassumptions-on-binders)tests/ui/issues[8/N] #157939 (Reorganizetests/ui/issues[8/N])char::is_private_useandchar::is_assignedunstably public #157946 (Makechar::is_private_useandchar::is_assignedunstably public)tests/ui/issues[9/N] #158003 (Reorganizetests/ui/issues[9/N])tests/ui/issues[10/N] #158060 (Reorganizetests/ui/issues[10/N])cfg_selectinstd::os#158252 (Usecfg_selectinstd::os)tests/ui/issues[13/N] #158272 (Reorganizetests/ui/issues[13/N])rustc-literal-escaperversion to0.0.8#158309 (Updaterustc-literal-escaperversion to0.0.8)io::ErrorKind::TooManyOpenFiles#158326 (Addio::ErrorKind::TooManyOpenFiles)r? @ghost
Create a similar rollup