Rollup of 7 pull requests#152035
Conversation
Fix not applicable in statement when exist else block
Example
---
```rust
fn main() {
some_statements();
if$0 let Ok(x) = Err(92) {
foo(x);
} else {
return;
}
some_statements();
}
```
**Before this PR**
Assist not applicable
**After this PR**
```rust
fn main() {
some_statements();
let Ok(x) = Err(92) else {
return;
};
foo(x);
some_statements();
}
```
Add proper line/column resolution for proc-macro spans via a callback mechanism. Previously these methods returned hardcoded 1 values. The implementation adds: - SubRequest::LineColumn and SubResponse::LineColumnResult to the bidirectional protocol - ProcMacroClientInterface::line_column() method - Callback handling in load-cargo using LineIndex - Server implementation in RaSpanServer that uses the callback - a test for Span::line() and Span::column() in proc-macro server Add fn_like_span_line_column test proc-macro that exercises the new line/column API, and a corresponding test with a mock callback.
Implement Span::line() and Span::column() for proc-macro server
perf: Re-use scratch allocations for `try_evaluate_obligations`
Example
---
```rust
fn main() {
let cond = true;
match 92 {
3 => true,
x if cond => if x $0> 10 {
false
} else if x > 5 {
true
} else if x > 4 || x < -2 {
false
} else {
true
},
}
}
```
**Before this PR**
```rust
fn main() {
let cond = true;
match 92 {
3 => true,
x if x > 10 => false,
x if x > 5 => true,
x if x > 4 || x < -2 => false,
x => true,
}
}
```
**After this PR**
```rust
fn main() {
let cond = true;
match 92 {
3 => true,
x if cond && x > 10 => false,
x if cond && x > 5 => true,
x if cond && (x > 4 || x < -2) => false,
x if cond => true,
}
}
```
fix: Suggest traits other than ones in the environment crate
Needed to support flychecking in a later diff
Needed for all_workspace_dependencies_for_package implementation.
This exited the whole loop instead of having continue semantics and continuing to find workspaces. So wrap in find_map.
You should be able to flycheck a ProjectJson crate based on its build label. This paves the way for that. Context: I don't think this has been working for some time. It used to be that we would use cargo to build ProjectJson crates. Support for ProjectJson seems to have been somewhat steamrolled in PR 18845 (e4bf6e1bc36e4cbc8a36d7911788176eb9fac76e).
We need to distinguish from RunnableKind::Check, which is human-readable.
This adds a substitution helper to get the right behaviour re {label} and $saved_file.
… rust-project.json
This requires us to add $saved_file / {saved_file} interpolation back to restart_for_package.
Otherwise we break existing users of $saved_file. No grand reason why we can't delete saved_file
later, although I would just leave it because sometimes a build system might really know better
which target(s) to build, including multiple targets.
…run in a notification
…roject.json runnable For JSON / override users, pretty-print the custom flycheck command with fewer quote characters Better debug logging in flycheck
Because (1) it is what we use when there is no relevant config
(2) we automatically use either rust-project.json's flycheck, or cargo
This also puts check_command config into CargoOptions. It's a cargo option, after all.
It was pretty useless without this.
Previously:
Parsing target pattern `{label}`
Caused by:
Invalid target name `{label}`. (...)
Build ID: 6dab5942-d81c-4430-83b0-5ba523999050
Network: Up: 0B Down: 0B
Command: run.
Time elapsed: 0.3s
BUILD FAILED
* The terminal process "buck2 'run', '{label}'" terminated with exit code: 3.
rust-project requires {arg} these days. No good giving people bad information
even if it's not crucial to documenting this.
I am not familiar with this code at allso just doing what I can to unblock.
…mic-v2, r=jdonszelmann
compiletest: Don't assume `aux-crate` becomes a `*.so` with `no-prefer-dynamic`
Since it does not make sense to do so. If someone prefers no dynamic stuff, the last thing they want to look for is an .so file. Also add a regression test. Without the fix, the test fails with:
error: test compilation failed although it shouldn't!
--- stderr -------------------------------
error: extern location for no_prefer_dynamic_lib does not exist: .../auxiliary/libno_prefer_dynamic_lib.so
--> .../no-prefer-dynamic-means-no-so.rs:9:5
|
LL | no_prefer_dynamic_lib::return_42();
| ^^^^^^^^^^^^^^^^^^^^^
### Needed by:
- rust-lang#150591 because of rust-lang#151271. But IMHO this PR makes sense on its own.
### Must wait for:
- [x] rust-lang#151695
…hercote fix: Make `--color always` always print color with `--explain` Fixes rust-lang#151643. This changes the behaviour of `handle_explain` in `rustc_driver_impl` to always output color when the `--color always` flag is set. r? @tgross35
…hs, r=lqd Remove `with_no_trimmed_paths` use in query macro We already use `with_no_trimmed_paths!` when calling query descriptors so the extra call generated by the macro is not needed.
…r=jdonszelmann Convert to inline diagnostics in `rustc_driver_impl` Converts a crate for rust-lang#151366 This PR is almost completely autogenerated by a hacky script I have locally :)
|
Rollup of everything. @bors r+ rollup=never p=5 |
This comment has been minimized.
This comment has been minimized.
|
📌 Perf builds for each rolled up PR:
previous master: 46c86aef65 In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 46c86ae (parent) -> 79a1e77 (this PR) Test differencesShow 888 test diffsStage 0
Stage 1
Stage 2
(and 62 additional test diffs) Additionally, 726 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 79a1e77fe34b70de8b9b9e7c44ff251003b70aaf --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (79a1e77): comparison URL. Overall result: ✅ improvements - no action needed@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 1.9%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeResults (secondary 0.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 474.728s -> 473.794s (-0.20%) |
Successful merges:
rust-analyzersubtree update #152008 (rust-analyzersubtree update)collect_active_jobsto several distinct names #151976 (Renamecollect_active_jobsto several distinct names)aux-cratebecomes a*.sowithno-prefer-dynamic#151691 (compiletest: Don't assumeaux-cratebecomes a*.sowithno-prefer-dynamic)--color alwaysalways print color with--explain#151919 (fix: Make--color alwaysalways print color with--explain)with_no_trimmed_pathsuse in query macro #152017 (Removewith_no_trimmed_pathsuse in query macro)rustc_driver_impl#152028 (Convert to inline diagnostics inrustc_driver_impl)r? @ghost
Create a similar rollup