Commit graph

12987 commits

Author SHA1 Message Date
bors
e60ebb2f2c Auto merge of #128490 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer`

r? `@ghost`
2024-08-01 13:13:38 +00:00
Ralf Jung
70805f9a6b when josh-proxy screws up the roundtrip, say what the involved commits are 2024-08-01 12:28:02 +02:00
bors
70591dc15d Auto merge of #127060 - Oneirical:testificate, r=jieyouxu
Migrate `symbol-visibility` `run-make` test to rmake

Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).

Pretty scary!

- The expected number of symbols on each check has been changed slightly to reflect the differences between `llvm_readobj` and `nm`, as I think the former will print hidden symbols once and visible symbols twice, while the latter will only print visible symbols.
- The original test ran the same exact checks on `cdylib` twice, for seemingly no reason. I have removed it.
- This may be possible to optimize some more? `llvm_readobj` could get called only once for each library type, and the regex could avoid being created repeatedly. I am not sure if these kinds of considerations are important for a `run-make` test.

Demands a Windows try-job.

try-job: x86_64-mingw
2024-08-01 05:42:09 +00:00
Wilfred Hughes
1df27d84a1 docs: Fix JSON example for rust-analyzer.workspace.discoverConfig
The user does not specify `{arg}` in their JSON, and be pedantic about
commas in JSON sample.
2024-07-31 16:10:42 -07:00
Shoyu Vanilla
086065e56b Prevent redundant obigation push for assignee exprs 2024-08-01 02:51:33 +09:00
Shoyu Vanilla
8b14b743f9 fix: Apply IndexMut obligations for non-assigning mutable index usages, too 2024-08-01 02:20:52 +09:00
Oneirical
ea04b0afbf use llvm-nm in symbol-visibility rmake test 2024-07-31 10:39:16 -04:00
bors
bba84aa836 Auto merge of #17750 - davidbarsky:david/remove-abspath-requirement-in-linked-projects, r=Veykril
fix: remove AbsPath requirement from linkedProjects

Should (fingers crossed!) fix https://github.com/rust-lang/rust-analyzer/issues/17664. I opened the `rustc` workspace with the [suggested configuration](e552c168c7/src/etc/rust_analyzer_settings.json) and I was able to successfully open some rustc crates (`rustc_incremental`) and have IDE functionality.

`@Veykril:` can you try these changes and let me know if it fixed rustc?
2024-07-31 14:31:16 +00:00
David Barsky
e8a90513de fix: remove AbsPath requirement from linkedProjects 2024-07-31 10:07:48 -04:00
Matthias Krüger
579eb684b9
Rollup merge of #126454 - cuviper:deterministic-bump, r=Kobzol
bump-stage0: use IndexMap for determinism

When it used `HashMap`, `bump-stage0` would change `src/stage0` every
time it ran, whereas `IndexMap` will keep insertion order -- matching
the manifest file.

I included an actual bump here mainly to reset the order, but that did
update to a new rustfmt nightly too.
2024-07-31 15:36:29 +02:00
bors
e552c168c7 Auto merge of #128420 - weihanglo:update-cargo, r=weihanglo
Update cargo

5 commits in b5d44db1daf0469b227a6211b987162a39a54730..257b72b8adfb1f2aa9916cefca67285c21666276
2024-07-26 21:27:12 +0000 to 2024-07-30 15:08:27 +0000
- chore: Update toml (rust-lang/cargo#14324)
- dont call wrap in a no-op source_id::with* (rust-lang/cargo#14318)
- Partial revert of 3085b548ecbd7d29d40c6180609ea3c224bad857 (rust-lang/cargo#14319)
- chore(deps): update msrv (rust-lang/cargo#14303)
- Fix warnings building tests on Windows (rust-lang/cargo#14315)

r? ghost
2024-07-31 10:14:22 +00:00
Shoyu Vanilla
1b058b796d
Add a test case 2024-07-31 10:47:13 +09:00
Weihang Lo
d629d5f7b8
Update cargo 2024-07-30 21:26:49 -04:00
bors
83dcdb3a5d Auto merge of #128075 - Oneirical:try-your-damnetest, r=jieyouxu
Migrate `rlib-format-packed-bundled-libs-2`, `native-link-modifier-whole-archive` and `no-builtins-attribute` `run-make` tests to rmake

Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).

Please try:

try-job: x86_64-msvc
try-job: test-various
try-job: armhf-gnu
try-job: aarch64-apple
try-job: x86_64-gnu-llvm-18
2024-07-31 00:36:46 +00:00
Josh Stone
3659d9d2e4 bump-stage0: use IndexMap for determinism
When it used `HashMap`, `bump-stage0` would change `src/stage0` every
time it ran, whereas `IndexMap` will keep insertion order -- matching
the manifest file.
2024-07-30 15:13:58 -07:00
Matthias Krüger
42a0cc8e71
Rollup merge of #128398 - awilfox:awilfox/fix-tidy-quote, r=jieyouxu
tidy: Fix quote in error message

I noticed that the backticks around the error code wasn't done properly in this string when I was building Rust 1.80.0 and found it is still this way in nightly.  Example:

```
warning: Error code `E0595` needs to have at least one UI test in the `tests/error-codes/` directory`!
warning: Error code E0602`` has a UI test file, but doesn't contain its own error code!
warning: Error code `E0619` needs to have at least one UI test in the `tests/error-codes/` directory`!
```

This commit fixes it to match the other warning strings.
2024-07-30 22:51:40 +02:00
Matthias Krüger
49327a04a2
Rollup merge of #128382 - RalfJung:cargo-miri-assert, r=oli-obk
cargo-miri: better error when we seem to run inside bootstrap but something is wrong

Cc https://github.com/rust-lang/miri/issues/3775
2024-07-30 22:51:40 +02:00
Matthias Krüger
6f0b237c72
Rollup merge of #128376 - compiler-errors:finish-ur-vegetables, r=jieyouxu
Mark `Parser::eat`/`check` methods as `#[must_use]`

These methods return a `bool`, but we probably should either use these values or explicitly throw them away (e.g. when we just want to unconditionally eat a token if it exists).

I changed a few places from `eat` to `expect`, but otherwise I tried to leave a comment explaining why the `eat` was okay.

This also adds a test for the `pattern_type!` macro, which used to silently accept a missing `is` token.
2024-07-30 22:51:38 +02:00
bors
f8060d282d Auto merge of #128083 - Mark-Simulacrum:bump-bootstrap, r=albertlarsan68
Bump bootstrap compiler to new beta

https://forge.rust-lang.org/release/process.html#master-bootstrap-update-t-2-day-tuesday
2024-07-30 17:49:08 +00:00
Shoyu Vanilla
a2555b976a fix: Errors on method call inferences with elided lifetimes 2024-07-31 02:36:44 +09:00
Oneirical
dcaa17a661 invalid stdout_utf8 handling in run_make_support 2024-07-30 13:07:54 -04:00
Oneirical
689bb118ce rewrite symbol-visibility to rmake 2024-07-30 13:07:54 -04:00
bors
006c8df322 Auto merge of #124339 - oli-obk:supports_feature, r=wesleywiser
allow overwriting the output of `rustc --version`

Our wonderful bisection folk [have to work around](https://github.com/rust-lang/rust/issues/123276#issuecomment-2075001510) crates that do incomplete nightly/feature detection, as otherwise the bisection just points to where the feature detection breaks, and not to the actual breakage they are looking for.

This is also annoying behaviour to nightly users who did not opt-in to those nightly features. Most nightly users want to be in control of the nightly breakage they get, by

* choosing when to update rustc
* choosing when to update dependencies
* choosing which nightly features they are willing to take the breakage for

The reason this breakage occurs is that the build script of some crates run `rustc --version`, and if the version looks like nightly or dev, it will enable nightly features. These nightly features may break in random ways whenever we change something in nightly, so every release of such a crate will only work with a small range of nightly releases. This causes bisection to fail whenever it tries an unsupported nightly, even though that crate is not related to the bisection at all, but is just an unrelated dependency.

This PR (and the policy I want to establish with this FCP) is only for situations like the `version_check`'s `supports_feature` function. It is explicitly not for `autocfg` or similar feature-detection-by-building-rust-code, irrespective of my opinions on it and the similarity of nightly breakage that can occur with such schemes. These cause much less breakage, but should the breakage become an issue, they should get covered by this policy, too.

This PR allows changing the version and release strings reported by `rustc --version` via the `RUSTC_OVERRIDE_VERSION_STRING` env var. The bisection issue is then fixed by https://github.com/rust-lang/cargo-bisect-rustc/pull/335.

I mainly want to establish a compiler team policy:

> We do not consider feature detection on nightly (on stable via compiler version numbering is fine) a valid use case that we need to support, and if it causes problems, we are at liberty to do what we deem best - either actively working to prevent it or to actively ignore it. We may try to work with responsive and cooperative authors, but are not obligated to.

Should they subvert the workarounds that nightly users or cargo-bisect-rustc can use, we should be able to land rustc PRs that target the specific crates that cause issues for us and outright replace their build script's logic to disable nightly detection.

I am not including links to crates, PRs or issues here, as I don't actually care about the specific use cases and don't want to make it trivial to go there and leave comments. This discussion is going to be interesting enough on its own, without branching out.
2024-07-30 15:25:31 +00:00
Mark Rousskov
abb1ebaae1 Revert "opt-dist: dont overrwite config.toml when verifying"
This reverts commit c81a40bbc0.
2024-07-30 11:03:03 -04:00
A. Wilcox
b1b48dc584
tidy: Fix quote in error message 2024-07-30 09:35:12 -05:00
Michael Goulet
4776ac0f88 Suppress must_use on eat calls in rustfmt 2024-07-30 10:10:36 -04:00
Oli Scherer
cbab16feaf Test RUSTC_OVERRIDE_VERSION_STRING 2024-07-30 14:08:02 +00:00
bors
51a0dd2677 Auto merge of #17744 - alibektas:debug_env_not_set, r=Veykril
minor: Set tracing level to debug when `cargo config get env` fails

fixes #17739
2024-07-30 11:02:21 +00:00
Ali Bektas
2169fc7f0f Set tracing level to debug when cargo config get env fails 2024-07-30 12:57:21 +02:00
Ralf Jung
cc7e7bc096 cargo-miri: better error when we seem to run inside bootstrap but something is wrong 2024-07-30 12:13:04 +02:00
bors
33fdfb4673 Auto merge of #17735 - alibektas:ratoml_workspaces, r=Veykril
feat: Introduce workspace `rust-analyzer.toml`s

In order to globally configure a project it was, prior to this PR, possible to have a `ratoml` at the root path of a project. This is not the case anymore. Instead we now let ratoml files that are placed at the root of any workspace have a new scope called `workspace`. Although there is not a difference between a `workspace` scope and and a `global` scope, future PRs will change that.
2024-07-30 06:49:14 +00:00
bors
cd266e0433 Auto merge of #17742 - Veykril:wrong-retries, r=Veykril
fix: Fix incorrect retrying of inlay hint requests
2024-07-30 06:35:28 +00:00
Lukas Wirth
13c095aaf1 fix: Fix incorrect retrying of inlay hint requests 2024-07-30 08:23:17 +02:00
bors
5fa145eab9 Auto merge of #17741 - Veykril:include-raw, r=Veykril
fix: Fix builtin includes rejecting raw string literals

Fixes https://github.com/rust-lang/rust-analyzer/issues/17701
2024-07-30 06:21:07 +00:00
Lukas Wirth
90e1a58cc6 fix: Fix builtin includes rejecting raw string literals 2024-07-30 08:19:32 +02:00
Matthias Krüger
9aedec9313
Rollup merge of #126247 - notriddle:notriddle/word-wrap-item-table, r=GuillaumeGomez
rustdoc: word wrap CamelCase in the item list table and sidebar

This is an alternative to https://github.com/rust-lang/rust/pull/126209. That is, it fixes the issue that affects the very long type names in https://docs.rs/async-stripe/0.31.0/stripe/index.html#structs.

This is, necessarily, a pile of nasty heuristics. We need to balance a few issues:

- Sometimes, there's no real word break. For example, `BTreeMap` should be `BTree<wbr>Map`, not `B<wbr>Tree<wbr>Map`.

- Sometimes, there's a legit word break, but the name is tiny and the HTML overhead isn't worth it. For example, if we're typesetting `TyCtx`, writing `Ty<wbr>Ctx` would have an HTML overhead of 50%. Line breaking inside it makes no sense.

# Screenshots

| Before | After |
| ------ | ----- |
| ![image](https://github.com/rust-lang/rust/assets/1593513/d51201fd-46c0-4f48-aee6-a477eadba288) | ![image](https://github.com/rust-lang/rust/assets/1593513/d8e77582-adcf-4966-bbfd-19dfdad7336a)
2024-07-29 21:26:11 +02:00
Michael Howell
583bf1e5bf Fix tidy call in runtest with custom HTML element 2024-07-29 08:46:01 -07:00
Ali Bektas
dc471c16b2 Remove clippy errors 2024-07-29 17:00:31 +02:00
Oneirical
23cccb3fc6 rewrite raw-dylib-stdcall-ordinal to rmake 2024-07-29 10:58:28 -04:00
Oneirical
9ffe161ce8 rewrite raw-dylib-link-ordinal to rmake 2024-07-29 10:58:28 -04:00
Oneirical
8c09a7f11e rewrite raw-dylib-import-name-type to rmake 2024-07-29 10:58:28 -04:00
Oneirical
0c8f194737 rewrite share-generics-dylib to rmake 2024-07-29 10:58:27 -04:00
bors
722f79d374 Auto merge of #17707 - Veykril:proc-macro-err-cleanup, r=Veykril
feat: Use spans for builtin and declarative macro expansion errors

This should generally improve some error reporting for macro expansion errors. Especially for `compile_error!` within proc-macros
2024-07-29 14:07:33 +00:00
Lukas Wirth
5ac8b79ca8 Add missing doc string 2024-07-29 16:05:21 +02:00
Lukas Wirth
a895797455 Fix error spans for include! and compile_error! 2024-07-29 15:57:01 +02:00
bors
51130d8222 Auto merge of #17736 - hyf0:hyf_09234908234, r=Veykril
feat(ide-completion): explictly show `async` keyword on `impl trait` methods

OLD:

<img width="676" alt="image" src="https://github.com/user-attachments/assets/f6fa626f-6b6d-4c22-af27-b0755e7a6bf8">

Now:

<img width="684" alt="image" src="https://github.com/user-attachments/assets/efbaac0e-c805-4dd2-859d-3e44b2886dbb">

---

This is an preparation for https://github.com/rust-lang/rust-analyzer/issues/17719.

```rust
use std::future::Future;

trait DesugaredAsyncTrait {
    fn foo(&self) -> impl Future<Output = usize> + Send;
    fn bar(&self) -> impl Future<Output = usize> + Send;
}

struct Foo;

impl DesugaredAsyncTrait for Foo {
    fn foo(&self) -> impl Future<Output = usize> + Send {
        async { 1 }
    }

    //
    async fn bar(&self) -> usize {
        1
    }
}

fn main() {
    let fut = Foo.bar();
    fn _assert_send<T: Send>(_: T) {}
    _assert_send(fut);
}
```

If we don't distinguish `async` or not. It would be confusing to generate sugared version `async fn foo ....` and original form `fn foo`  for `async fn in trait` that is defined in desugar form.
2024-07-29 12:55:53 +00:00
Lukas Wirth
79defab2b1 Make basic use of spans for macro expansion errors 2024-07-29 14:52:40 +02:00
Yunfei
825034566a Add test in ide-completion/src/tests/item_list.rs 2024-07-29 20:40:51 +08:00
Yunfei
dc548f0168 Revert "Fix error message"
This reverts commit 752c49b679afcec7edf5d26d52bf3d164ee7349f.
2024-07-29 20:36:03 +08:00
bors
ca16c0633d Auto merge of #17715 - Throne3d:fix/glob-may-override-vis-2, r=Veykril
fix: let glob imports override other globs' visibility

Follow up to #14930

Fixes #11858
Fixes #14902
Fixes #17704

I haven't reworked the code here at all - I don't feel confident in the codebase to do so - just rebased it onto the current main branch and fixed conflicts.

I'm not _entirely_ sure I understand the structure of the `check` function in `crates/hir-def/src/nameres` tests. I think the change to the test expectation from #14930 is correct, marking the `crate::reexport::inner` imports with `i`, and I understand it to mean there's a specific token in the import that we can match it to (in this case, `Trait`, `function` and `makro` of `pub use crate::defs::{Trait, function, makro};` respectively), but I had some trouble understanding the meaning of the different parts of `PerNs` to be sure.
Does this make sense?

I tested building and using RA locally with `cargo xtask install` and after this change the documentation for `arrow_array::ArrowPrimitiveType` seems to be picked up correctly!
2024-07-29 12:06:31 +00:00