Commit graph

33149 commits

Author SHA1 Message Date
jnyfah
11717ca5d4 Missing errors 2025-01-10 14:22:00 +01:00
Lukas Wirth
bf669dab84 Re-implement rust string highlighting via tool attribute 2025-01-10 13:49:35 +01:00
Lukas Wirth
897f7e579e
Merge pull request #18904 from Veykril/push-yztnorquuyzw
Improve hover module path rendering
2025-01-10 11:53:38 +00:00
Lukas Wirth
67fd72d5ee
Merge pull request #18903 from Veykril/push-mqmworppxuyw
Implement implicit sized bound inlay hints
2025-01-10 11:53:18 +00:00
Lukas Wirth
d4fa92e80a Implement implicit sized bound inlay hints 2025-01-10 12:38:21 +01:00
Lukas Wirth
3bae1f0a1b Improve hover module path rendering 2025-01-10 12:36:55 +01:00
Lukas Wirth
1b52a6680f
Merge pull request #18900 from ChayimFriedman2/stupid-hang
fix: Do not compute `prettify_macro_expansion()` unless the "Inline macro" assist has actually been invoked
2025-01-10 11:02:54 +00:00
Lukas Wirth
6f04f373d7
Merge pull request #18902 from Veykril/push-znlsxykqrkoo
internal: Add Definition::Crate
2025-01-10 10:01:43 +00:00
Lukas Wirth
e6270bd378 internal: Add Definition::Crate
This is its own thing so it should be handled specifically where possible
2025-01-10 10:45:44 +01:00
bors
25eb5662cd Auto merge of #135273 - dianne:argument-patterns-are-not-boring, r=lqd
Remove special-casing for argument patterns in MIR typeck (attempt to fix perf regression of  #133858)

See [my comment](https://github.com/rust-lang/rust/pull/133858#issuecomment-2579029618) on #133858 for more information. This is just a guess as to what went wrong, and I haven't been able to get the profiler running locally, so I'll need a perf run to make sure this actually helps.

There's one test's stderr that suffers a bit, but this was just papering over the issue anyway. Making region errors point to the correct constraints in the presence of invariance/contravariance is a broader problem; the current way it's handled is mostly based on guesswork, luck, and hoping it works out. Properly handling that (somehow) would improve the test's stderr without the hack that this PR reverts.
2025-01-10 08:53:21 +00:00
Lukas Wirth
89b37675d7
Merge pull request #18901 from ChayimFriedman2/hir-reexport
minor: Remove two hir reexports
2025-01-10 06:57:18 +00:00
Lukas Wirth
d133136bc4
Merge pull request #18813 from Giga-Bowser/syntax-tree-view
feat: Add a new and improved syntax tree view
2025-01-10 06:56:34 +00:00
Lukas Wirth
b75a96915e
Merge pull request #18899 from ChayimFriedman2/issue-18898
fix: Fix another issue with fixup reversing
2025-01-10 06:55:45 +00:00
bors
41ca9b7b22 Auto merge of #135319 - matthiaskrgr:rollup-un5lol6, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #133088 (`-Zrandomize-layout` harder. `Foo<T> != Foo<U>`)
 - #134619 (Improve prose around `as_slice` example of IterMut)
 - #134855 (Add `default_field_values` entry to unstable book)
 - #134908 (Fix `ptr::from_ref` documentation example comment)
 - #135275 (Add Pin::as_deref_mut to 1.84 relnotes)
 - #135294 (Make `bare-fn-no-impl-fn-ptr-99875` test less dependent on path width)
 - #135304 (Add tests cases from review of #132289)
 - #135308 (Make sure to walk into nested const blocks in `RegionResolutionVisitor`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-10 06:05:05 +00:00
Matthias Krüger
ef67bf2e49
Rollup merge of #135308 - compiler-errors:scope-visit, r=oli-obk
Make sure to walk into nested const blocks in `RegionResolutionVisitor`

Fixes https://github.com/rust-lang/rust/issues/135306

I tried auditing the rest of the visitors that called `.visit_body`, and it seems like this is the only one that was missing it. I wonder if we should modify intravisit (specifcially, that `NestedBodyFilter` stuff) to make this less likely to happen, tho...

r? oli-obk
2025-01-10 06:28:42 +01:00
Matthias Krüger
484c3b4de8
Rollup merge of #135304 - steffahn:tests_from_132289, r=compiler-errors
Add tests cases from review of #132289

Adding my comments as test-cases as suggested by ``@jackh726`` in https://github.com/rust-lang/rust/pull/132289#issuecomment-2564602267
2025-01-10 06:28:41 +01:00
Matthias Krüger
2fb0a15b29
Rollup merge of #135294 - ChrisDenton:bare-fn-width, r=jieyouxu
Make `bare-fn-no-impl-fn-ptr-99875` test less dependent on path width

This sets diagnostic-width to some arbitrary number. Seems to work on my machine.
2025-01-10 06:28:41 +01:00
Matthias Krüger
b08e5e3e71
Rollup merge of #135275 - coolreader18:pin-as_deref_mut-relnotes, r=BoxyUwU
Add Pin::as_deref_mut to 1.84 relnotes

Resolves #131243 - I think this got missed in the relnotes sweep or something.

``@rustbot`` label relnotes
2025-01-10 06:28:40 +01:00
Matthias Krüger
70772b7543
Rollup merge of #134908 - madsmtm:ptr-from_ref-docs, r=ibraheemdev
Fix `ptr::from_ref` documentation example comment

The comment says that the expression involves no function call, but that was only true for the example above, the example here _does_ contain a function call.

``@rustbot`` label A-docs
2025-01-10 06:28:39 +01:00
Matthias Krüger
620adf2ee0
Rollup merge of #134855 - estebank:default-field-values-unstable-docs, r=jieyouxu
Add `default_field_values` entry to unstable book

Tracking issue: https://github.com/rust-lang/rust/issues/132162
RFC: https://github.com/rust-lang/rfcs/blob/master/text/3681-default-field-values.md
2025-01-10 06:28:39 +01:00
Matthias Krüger
71e4f060fc
Rollup merge of #134619 - hkBst:patch-7, r=jhpratt
Improve prose around `as_slice` example of IterMut

I've removed the cryptic message about not being able to call `&mut self` methods while retaining a shared borrow of the iterator, such as `as_slice` produces. This is just normal borrowing rules and does not seem especially relevant here. I can whip up a replacement if someone thinks it has value.
2025-01-10 06:28:38 +01:00
Matthias Krüger
42d386f559
Rollup merge of #133088 - the8472:randomize-me-harder, r=workingjubilee
`-Zrandomize-layout` harder. `Foo<T> != Foo<U>`

Tracking issue: #106764

Previously randomize-layout only used a deterministic shuffle based on the seed stored in an Adt's ReprOptions, meaning that `Foo<T>`  and `Foo<U>` were shuffled by the same seed. This change adds a similar seed to each calculated LayoutData so that a struct can be randomized both based on the layout of its fields and its per-type seed.
Primitives start with simple seed derived from some of their properties. Though some types can no longer be distinguished at that point, e.g. usize and u64 will still be treated the same.
2025-01-10 06:28:37 +01:00
The 8472
7b368b97ba also initialize Layout field in rust-analyzer 2025-01-10 02:22:57 +01:00
Chayim Refael Friedman
87f7a5849c Remove two hir reexports 2025-01-10 03:19:28 +02:00
Chayim Refael Friedman
52794d5194 Do not compute prettify_macro_expansion() unless the "Inline macro" assist has actually been invoked
And not just called to be listed.

This was a major performance hang when repeatedly switching back-and-forth between a large `include!`d file (but there are others)..
2025-01-10 00:56:00 +02:00
Giga Bowser
c0f22c7e9d Add an action to copy an element from the syntax tree view 2025-01-09 14:03:18 -06:00
Chayim Refael Friedman
bbcb71a403 Fix another issue with fixup reversing
We need to *remove* the whole subtree, but we don't advance `i` by this, because it hasn't gotten there yet (and never will).
2025-01-09 22:02:44 +02:00
Giga Bowser
cb5ce9eaa6 Remove the old syntax tree viewer 2025-01-09 13:20:06 -06:00
Giga Bowser
5ffe45d8cd Add a new and improved syntax tree viewer 2025-01-09 13:20:06 -06:00
duncan
04c06b4c5a Fix parsing cargo test json output by making stdout and optional field 2025-01-09 16:01:08 +00:00
Lukas Wirth
cc016df54b
Merge pull request #18889 from ChayimFriedman2/subtle-completion
fix: Fix actual token lookup in completion's `expand()`
2025-01-09 12:12:38 +00:00
Lukas Wirth
2e234e3d1b
Merge pull request #18880 from PrototypeNM1/extra-includes
Add config setting which allows adding additional include paths to the VFS.
2025-01-09 10:24:51 +00:00
Lukas Wirth
3fe50ef83c
Merge pull request #18861 from ChayimFriedman2/await-edition
fix: Make edition per-token, not per-file
2025-01-09 10:20:11 +00:00
Lukas Wirth
5c106b4efa
Merge pull request #18885 from qjerome/refactor-cargo-cfgs
refactor: struct holding cargo cfgs settings
2025-01-09 10:19:55 +00:00
Lukas Wirth
547d511ee1
Merge pull request #18890 from Veykril/push-nwnozlyppvzo
minor: Fixup macro error kinds
2025-01-09 08:54:05 +00:00
Lukas Wirth
646e96f68d minor: Fixup macro error kinds 2025-01-09 09:38:58 +01:00
Lukas Wirth
d3a49d3783
Merge pull request #18887 from vishruth-thimmaiah/refactor_completions_tests
refactor test helpers within ide-completions
2025-01-09 08:15:53 +00:00
Lukas Wirth
1e9c7dd7ee
Merge pull request #18524 from Giga-Bowser/migrate-wrap-unwrap-return
internal: Migrate `(un)wrap_return_type` assists to use `SyntaxEditor`
2025-01-09 07:05:48 +00:00
Chayim Refael Friedman
97afb7bfba Make edition per-token, not per-file
More correctly, *also* per-token. Because as it turns out, while the top-level edition affects parsing (I think), the per-token edition affects escaping of identifiers/keywords.
2025-01-09 05:43:08 +02:00
Chayim Refael Friedman
0c77bce011 Fix actual token lookup in completion's expand()
It should be left biased, not right biased, because when e.g. the use has typed `h` then requested completion, the `h` is what we want to find, not the next token (which might indeed be inside a macro call).

I'm not sure why I wrote `right_biased()` to begin with (I remember I had a reason and not just "both should work"), I might've copied the code in `expand_and_analyze()` (which is wrong, because there it lookups on the speculative file, where right biased will always find the correct token and left biased not).

This is still not perfect, because there might not be an identifier already typed then we might still end up in a macro call, but this is the best we can do.
2025-01-09 05:22:14 +02:00
Giga Bowser
c552f72f6a minor: Use placeholders in unwrap_return_type 2025-01-08 18:12:06 -06:00
Giga Bowser
a5a79f5957 internal: Migrate unwrap_return_type assist to use SyntaxEditor
Also changes `make::expr_empty_block()` to return `ast::BlockExpr` instead of `ast::Expr`
2025-01-08 18:12:06 -06:00
Giga Bowser
651b43e551 internal: Migrate wrap_return_type assist to use SyntaxEditor 2025-01-08 15:19:10 -06:00
Nicholas Rishel
1f9686993a Add config setting which allows adding additional include paths to the VFS. 2025-01-08 10:57:46 -08:00
Vishruth-Thimmaiah
b21a5f83d2
refactor test helpers within ide-completions 2025-01-08 23:51:18 +05:30
qjerome
cc7fb1945d
fix: requested changed 2025-01-08 14:47:46 +01:00
qjerome
e9a13ab6d7
fix: autogenerate files 2025-01-08 14:47:21 +01:00
bors
f22e634f53 Auto merge of #133858 - dianne:better-blame-constraints-for-static, r=lcnr
`best_blame_constraint`: Blame better constraints when the region graph has cycles from invariance or `'static`

This fixes #132749 by changing which constraint is blamed for region errors in several cases. `best_blame_constraint` had a heuristic that tried to pinpoint the constraint causing an error by filtering out any constraints where the outliving region is unified with the ultimate target region being outlived. However, it used the SCCs of the region graph to do this, which is unreliable; in particular, if the target region is `'static`, or if there are cycles from the presence of invariant types, it was skipping over the constraints it should be blaming. As is the case in that issue, this could lead to confusing diagnostics. The simplest fix seems to work decently, judging by test stderr: this makes `best_blame_constraint` no longer filter constraints by their outliving region's SCC.

There are admittedly some quirks in the test output. In many cases, subdiagnostics that depend on the particular constraint being blamed have either started or stopped being emitted. After starting at this for quite a while, I think anything too fickle about whether it outputs based on the particular constraint being blamed should instead be looking at the constraint path as a whole, similar to what's done for [the placeholder-from-predicate note](https://github.com/rust-lang/rust/compare/master...dianne:rust:better-blame-constraints-for-static#diff-3c0de6462469af483c9ecdf2c4b00cb26192218ef2d5c62a0fde75107a74caaeR506).

Very many tests involving invariant types gained a note pointing out the types' invariance, but in a few cases it was lost. A particularly illustrative example is [tests/ui/lifetimes/copy_modulo_regions.stderr](https://github.com/rust-lang/rust/compare/master...dianne:rust:better-blame-constraints-for-static?expand=1#diff-96e1f8b29789b3c4ce2f77a5e0fba248829b97ef9d1ce39e7d2b4aa57b2cf4f0); I'd argue the new constraint is a better one to blame, but it lacks the variance diagnostic information that's elsewhere in the constraint path. If desired, I can try making that note check the whole path rather than just the blamed constraint.

The subdiagnostic [`BorrowExplanation::add_object_lifetime_default_note`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_borrowck/diagnostics/explain_borrow/enum.BorrowExplanation.html#method.add_object_lifetime_default_note) depends on a `Cast` being blamed, so [a special case](364ca7f99c) was necessary to keep it from disappearing from tests specifically testing for it. However, see the FIXME comment in that commit; I think the special case should be removed once that subdiagnostic works properly, but it's nontrivial enough to warrant a separate PR. Incidentally, this removes the note from a test where it was being added erroneously: in [tests/ui/borrowck/two-phase-surprise-no-conflict.stderr](https://github.com/rust-lang/rust/compare/master...dianne:rust:better-blame-constraints-for-static?expand=1#diff-8cf085af8203677de6575a45458c9e6b03412a927df879412adec7e4f7ff5e14), the object lifetime is explicitly provided and it's not `'static`.
2025-01-08 12:37:54 +00:00
qjerome
1c5a125beb
refactor: struct holding cargo cfgs settings 2025-01-08 11:20:08 +01:00
Lukas Wirth
32b86a8378
Merge pull request #18884 from Veykril/push-xwqkorxozzkq
fix: Fix `env`/`option_env` macro check disregarding macro_rules definitions
2025-01-08 10:14:51 +00:00