Commit graph

149311 commits

Author SHA1 Message Date
DropDemBits
4f67f71db5
internal: Expose snippet capability to diagnostic quickfixes 2024-06-07 21:29:48 -04:00
tiif
a269cf5657 Add eventfd shim 2024-06-08 08:58:47 +08:00
bors
8fb1930c20 Auto merge of #126114 - ferrocene:pa-branch-1.81.0, r=pietroalbini
Set version number to 1.81.0

r? `@ghost`
2024-06-08 00:21:23 +00:00
bors
804421dff5 Auto merge of #126134 - matthiaskrgr:rollup-vzlegsc, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - #124012 (Stabilize `binary_heap_as_slice`)
 - #124214 (Parse unsafe attributes)
 - #125572 (Detect pub structs never constructed and unused associated constants)
 - #125781 (prefer `compile::stream_cargo` for building tools)
 - #126030 (Update `./x fmt` command in library/std/src/sys/pal/windows/c/README.md)
 - #126047 (Simplify the rayon calls in the installer)
 - #126052 (More `rustc_parse` cleanups)
 - #126077 (Revert "Use the HIR instead of mir_keys for determining whether something will have a MIR body.")
 - #126089 (Stabilize Option::take_if)
 - #126112 (Clean up source root in run-make tests)
 - #126119 (Improve docs for using custom paths with `--emit`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-06-07 20:12:49 +00:00
Nilstrieb
dce1bbf319
Remove --stage entirely from contributing 2024-06-07 21:50:59 +02:00
Tyler Mandry
63ba3f3aaf Add debugging utils and comments to Fuchsia scripts
This should help when debugging a failure in the Fuchsia build in CI.
2024-06-07 12:47:49 -07:00
Nilstrieb
27d9a46221
Fix stage in contributing 2024-06-07 21:31:13 +02:00
Matthias Krüger
df35d7a117
Rollup merge of #126119 - Zalathar:emit-filename, r=ehuss
Improve docs for using custom paths with `--emit`

Recently I found myself concluding that this feature didn't exist (https://github.com/rust-lang/rust/pull/126111#discussion_r1630707215), despite having read the documentation, because it was hidden away in the middle of a paragraph full of other information.

Giving this documentation more space of its own should make it easier to find.
2024-06-07 20:14:32 +02:00
Matthias Krüger
b8e28d1426
Rollup merge of #126112 - Kobzol:runmake-source-root, r=jieyouxu
Clean up source root in run-make tests

The name `S` isn't exactly the most descriptive, and we also shouldn't need to pass it when building (actually I think that most of the env. vars that we pass to `cargo` here are probably not really needed).

Related issue: https://github.com/rust-lang/rust/issues/126071

r? ```@jieyouxu```
2024-06-07 20:14:32 +02:00
Matthias Krüger
bc793291b5
Rollup merge of #126047 - cuviper:installer-try_for_each, r=albertlarsan68
Simplify the rayon calls in the installer

Rayon's `try_for_each` makes the `CombinedEncoder` a lot simpler.
2024-06-07 20:14:30 +02:00
Matthias Krüger
65fcba61e4
Rollup merge of #125781 - onur-ozkan:improve-tool-builder, r=albertlarsan68
prefer `compile::stream_cargo` for building tools

Previously, we were running bare commands for `ToolBuild` step and were unable to utilize some of the flags which  are already handled by `compile::stream_cargo`.

This change makes `ToolBuild` to use `compile::stream_cargo`, allowing us to benefit from the flags supported by the bootstrap cargo.

Resolves #125666
2024-06-07 20:14:29 +02:00
Matthias Krüger
6e534c73c3
Rollup merge of #124214 - carbotaniuman:parse_unsafe_attrs, r=michaelwoerister
Parse unsafe attributes

Initial parse implementation for #123757

This is the initial work to parse unsafe attributes, which is represented as an extra `unsafety` field in `MetaItem` and `AttrItem`. There's two areas in the code where it appears that parsing is done manually and not using the parser stuff, and I'm not sure how I'm supposed to thread the change there.
2024-06-07 20:14:28 +02:00
Guillaume Gomez
6aab04e9b7 run fmt 2024-06-07 18:10:31 +02:00
Noah Lev
3670ad59ad Fix broken rustdoc unit tests 2024-06-07 17:53:45 +02:00
Noah Lev
815c447680 Parse full doctest source; extract helper for parsing code
It doesn't really make sense to skip part of the source when we're
parsing it, so parse the whole doctest. This simplifies things too.
2024-06-07 17:53:44 +02:00
Noah Lev
d06a05e262 Move logic for "making" doctests to submodule
This code turns the raw code given by the user into something actually
runnable, e.g. by adding a `main` function if it doesn't already exist.

I also made a couple other items private that didn't need to be
crate-public.
2024-06-07 17:51:48 +02:00
Noah Lev
0dc72d9551 Make doctests before running them; reintroduce RunnableDoctest 2024-06-07 17:48:48 +02:00
Noah Lev
366000dc07 Move some arguments to fields and reorganize fields
I moved some local arguments and options to either the local options
struct or, if it made sense, the global options struct.
2024-06-07 17:48:48 +02:00
Noah Lev
a429afacbc Remove RunnableDoctest
It should instead be the actual input to the running logic. Currently
it's not actually quite runnable since it's still missing some
information.
2024-06-07 17:48:48 +02:00
Noah Lev
e9e2634547 Make two fields computed on-demand 2024-06-07 17:48:48 +02:00
Noah Lev
790b7e9cbf rustdoc: Remove DoctestVisitor::get_line
This was used to get the line number of the first line from the current
docstring, which was then used together with an offset within the
docstring. It's simpler to just pass the offset to the visitor and have
it do the math because it's clearer and this calculation only needs to
be done in one place (the Rust doctest visitor).
2024-06-07 17:48:47 +02:00
Noah Lev
46d2aa5a8f Remove global options from IndividualTestOptions 2024-06-07 17:48:47 +02:00
Noah Lev
279b4d22f7 Merge RustDoctest and MdDoctest into one type 2024-06-07 17:48:47 +02:00
Noah Lev
b7dd401a78 rustdoc: Extract actual doctest running logic into function 2024-06-07 17:48:47 +02:00
Noah Lev
85499ebf13 Separate doctest collection from running 2024-06-07 17:48:47 +02:00
Noah Lev
16db1a1bd0 Move Markdown-specific doctest code into submodule 2024-06-07 17:48:47 +02:00
Noah Lev
516010bd0f Start moving format-specific code into doctest submodule 2024-06-07 17:48:45 +02:00
Noah Lev
f9e12ef946 rustdoc: Use write_all to ensure all content is written 2024-06-07 17:41:04 +02:00
Noah Lev
3ee4629446 rustdoc: Rename Tester to DoctestVisitor
The new name more accurately captures what it is.
2024-06-07 17:41:03 +02:00
Zalathar
3eb5341c3d Improve docs for using custom paths with --emit 2024-06-07 23:05:15 +10:00
bors
c501753236 Auto merge of #17359 - Veykril:status-bar, r=Veykril
Add version info to status bar item
2024-06-07 12:51:28 +00:00
Lukas Wirth
fc92e5c87a Add version info to status bar item 2024-06-07 14:39:50 +02:00
Lukas Wirth
ab0917ed58 fix: Fix renaming imports of foreign items touching foreign sources 2024-06-07 14:36:37 +02:00
Zalathar
7c9b469895 Port tests/run-make-fulldeps/hotplug_codegen_backend to ui-fulldeps 2024-06-07 22:28:00 +10:00
Jakub Beránek
c9cb3280f3
Address review comments 2024-06-07 14:07:02 +02:00
bors
a9f0e206d9 Auto merge of #17058 - alibektas:13529/ratoml, r=Veykril
feat: TOML based config for rust-analyzer

> Important
>
> We don't promise _**any**_ stability with this feature yet, any configs exposed may be removed again, the grouping may change etc.

# TOML Based Config for RA

This PR ( addresses #13529 and this is a follow-up PR on #16639 ) makes rust-analyzer configurable by configuration files called `rust-analyzer.toml`. Files **must** be named `rust-analyzer.toml`. There is not a strict rule regarding where the files should be placed, but it is recommended to put them near a file that triggers server to start (i.e., `Cargo.{toml,lock}`, `rust-project.json`).

## Configuration Types

Previous configuration keys are now split into three different classes.

1. Client keys: These keys only make sense when set by the client (e.g., by setting them in `settings.json` in VSCode). They are but a small portion of this list. One such example is `rust_analyzer.files_watcher`, based on which either the client or the server will be responsible for watching for changes made to project files.
2. Global keys: These keys apply to the entire workspace and can only be set on the very top layers of the hierarchy. The next section gives instructions on which layers these are.
3. Local keys: Keys that can be changed for each crate if desired.

### How Am I Supposed To Know If A Config Is Gl/Loc/Cl ?

#17101

## Configuration Hierarchy

There are 5 levels in the configuration hierarchy. When a key is searched for, it is searched in a bottom-up depth-first fashion.

### Default Configuration

**Scope**: Global, Local, and Client

This is a hard-coded set of configurations. When a configuration key could not be found, then its default value applies.

### User configuration

**Scope**: Global, Local

If you want your configurations to apply to **every** project you have, you can do so by setting them in your `$CONFIG_DIR/rust-analyzer/rust-analyzer.toml` file, where `$CONFIG_DIR` is :

| Platform | Value                                 | Example                                  |
| ------- | ------------------------------------- | ---------------------------------------- |
| Linux   | `$XDG_CONFIG_HOME` or `$HOME`/.config | /home/alice/.config                      |
| macOS   | `$HOME`/Library/Application Support   | /Users/Alice/Library/Application Support |
| Windows | `{FOLDERID_RoamingAppData}`           | C:\Users\Alice\AppData\Roaming           |

### Client configuration

**Scope**: Global, Local, and Client

Previously, the only way to configure rust-analyzer was to configure it from the settings of the Client you are using. This level corresponds to that.

> With this PR, you don't need to port anything to benefit from new features. You can continue to use your old settings as they are.

### Workspace Root Configuration

**Scope**: Global, Local

Rust-analyzer already used the path of the workspace you opened in your Client. We used this information to create a configuration file that won't affect your other projects and define global level configurations at the same time.

### Local Configuration

**Scope**: Local

You can also configure rust-analyzer on a crate level. Although it is not an error to define global ( or client ) level keys in such files, they won't be taken into consideration by the server. Defined local keys will affect the crate in which they are defined and crate's descendants. Internally, a Rust project is split into what we call `SourceRoot`s. This, although with exceptions, is equal to splitting a project into crates.

> You may choose to have more than one `rust-analyzer.toml` files within a `SourceRoot`, but among them, the one closer to the project root will be
2024-06-07 10:49:02 +00:00
bors
1eda1ae586 Auto merge of #17308 - mathew-horner:prefer-workspace, r=Veykril
Add preference modifier for workspace-local crates when using auto import.

`@joshka` pointed out some odd behavior of auto import ordering. It doesn't seem that the current heuristics were applying any sort of precedence to imports from the workspace. I've went ahead and added that.

I hope to get some feedback on the modifier numbers here. I just went with something that felt like it balanced giving more power to workspace crates without completely ignoring relative path distance.

closes https://github.com/rust-lang/rust-analyzer/issues/17303
2024-06-07 10:35:49 +00:00
Lukas Wirth
59002b3828 Fix processing of ratoml files 2024-06-07 12:31:50 +02:00
Jakub Beránek
4b0842f3ce
Small refactoring 2024-06-07 12:20:47 +02:00
Jakub Beránek
d86c981908
Remove all usages of tmp_dir from tests 2024-06-07 11:12:24 +02:00
Jakub Beránek
94ccb9b34d
Remove dependence on tmp_dir
And also remove some environment variables passed to compilation of `rmake.rs`.
2024-06-07 11:12:04 +02:00
Jakub Beránek
3f20c721ce
Fix mixing-formats run-make test 2024-06-07 11:12:04 +02:00
Jakub Beránek
585c898495
Do not run run-make tests in the test source directory 2024-06-07 11:12:04 +02:00
bors
1be24d70ce Auto merge of #125918 - oli-obk:const_block_ice, r=compiler-errors
Revert: create const block bodies in typeck via query feeding

as per the discussion in https://github.com/rust-lang/rust/pull/125806#discussion_r1622563948

It was a mistake to try to shoehorn const blocks and some specific anon consts into the same box and feed them during typeck. It turned out not simplifying anything (my hope was that we could feed `type_of` to start avoiding the huge HIR matcher, but that didn't work out), but instead making a few things more fragile.

reverts the const-block-specific parts of https://github.com/rust-lang/rust/pull/124650

`@bors` rollup=never had a small perf impact previously

fixes https://github.com/rust-lang/rust/issues/125846

r? `@compiler-errors`
2024-06-07 09:08:59 +00:00
Pietro Albini
6110a51898
set version number to 1.81.0 2024-06-07 10:37:34 +02:00
Oli Scherer
cbee17d502 Revert "Create const block DefIds in typeck instead of ast lowering"
This reverts commit ddc5f9b6c1.
2024-06-07 08:33:58 +00:00
Jakub Beránek
eac63b7725
Rename S environment variable to SOURCE_ROOT in run-make tests 2024-06-07 09:20:58 +02:00
Jakub Beránek
7eff2d9b22
Do not pass source root when building run-make tests 2024-06-07 09:20:25 +02:00
Zalathar
58ba77f4aa compiletest: Don't pass --out-dir if the compile flags include -o 2024-06-07 15:55:36 +10:00
The Miri Cronjob Bot
f0ea91c60f Merge from rustc 2024-06-07 05:03:53 +00:00