Commit graph

152983 commits

Author SHA1 Message Date
bors
b85026b15b Auto merge of #18252 - ShoyuVanilla:issue-15799, r=Veykril
fix: Do not consider mutable usage of deref to `*mut T` as deref_mut

Fixes #15799

We are doing some heuristics for deciding whether the given deref is deref or deref_mut here;

5982d9c420/crates/hir-ty/src/infer/mutability.rs (L182-L200)

But this heuristic is erroneous if we are dereferencing to a mut ptr and normally those cases are filtered out here as builtin;

5982d9c420/crates/hir-ty/src/mir/lower/as_place.rs (L165-L177)

Howerver, this works not so well if the given dereferencing is double dereferencings like the case in the #15799.

```rust
struct WrapPtr(*mut u32);

impl core::ops::Deref for WrapPtr {
    type Target = *mut u32;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

fn main() {
    let mut x = 0u32;
    let wrap = WrapPtr(&mut x);
    unsafe {
        **wrap = 6;
    }
}
```

Here are two - outer and inner - dereferences here, and the outer dereference is marked as deref_mut because there is an assignment operation.
And this deref_mut marking is propagated into the inner dereferencing.
In the later MIR lowering, the outer dereference is filtered out as it's expr type is `*mut u32`, but the expr type in the inner dereference is an ADT, so this false-mutablility is not filtered out.

This PR cuts propagation of this false mutablilty chain if the expr type is mut ptr.
Since this happens before the resolve_all, it may have some limitations when the expr type is determined as mut ptr at the very end of inferencing, but I couldn't find simple fix for it 🤔
2024-10-14 12:07:31 +00:00
bors
a672968113 Auto merge of #18242 - Veykril:veykril/push-tnynzqsmtnqw, r=Veykril
internal: Don't resolve extern crates in import fix point resolution

The fix point loop won't progress them given the potential extern crate candidates are set up at build time.
2024-10-14 11:52:17 +00:00
bors
1ef2712751 Auto merge of #18229 - mrkajetanp:rustfmt-path, r=Veykril
fix: Join rustfmt overrideCommand with project root

When providing a custom rustfmt command, join it with the project root instead of the workspace root. This fixes rust-analyzer getting the wrong invocation path in projects containing subprojects.

This makes the behaviour consistent with how a custom path provided in rust-analyzer.procMacro.server behaves already.

Resolves issue #18222
2024-10-14 11:37:56 +00:00
bors
0b99f29198 Auto merge of #18217 - ChayimFriedman2:cast-unknown-ptr, r=Veykril
fix: Comment out cast checks for unknown ptr kind

Just like we don't check for types containing unknown.

Fixes #18214.

See also https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Another.20case.20of.20.2318064.3F.
2024-10-14 11:24:08 +00:00
bors
540891b934 Auto merge of #18152 - CryZe:highlight-async-block-exit-points, r=Veykril
feat: Highlight exit points of async blocks

Async blocks act similar to async functions in that the await keywords are related, but also act like functions where the exit points are related.

Fixes #18147
2024-10-14 11:09:33 +00:00
bors
e2c3ce52f2 Auto merge of #18226 - SabrinaJewson:fix-impl-use, r=Veykril
Correctly parse `use` in generic parameters

Fixes: #18225
2024-10-14 10:40:37 +00:00
bors
aacf840ea6 Auto merge of #18281 - darichey:async-subprocess, r=lnicola
Run subprocesses async in vscode extension

Extensions should not block the vscode extension host. Replace uses of `spawnSync` with `spawnAsync`, a convenience wrapper around `spawn`.

These `spawnSync`s are unlikely to cause a real issue in practice, because they spawn very short-lived processes, so we aren't blocking for very long. That said, blocking the extension host is poor practice, and if they _do_ block for too long for whatever reason, vscode becomes useless.
2024-10-12 07:45:15 +00:00
David Richey
0865296a27 Fix panic when json project has relative buildfile paths 2024-10-12 02:25:40 -05:00
David Richey
0460ff71b2 Run subprocesses async in vscode extension 2024-10-10 20:44:13 -05:00
bors
ee7c8b9a90 Auto merge of #18245 - boattime:master, r=davidbarsky
fix: include description in label details when detail field is marked for …

Fixes https://github.com/rust-lang/rust-analyzer/issues/18231.

When omitting the autocomplete detail field, the autocomplete label details can still be returned. Currently the label details are missing the description field if the detail field is included in resolveSupport since it is being overwritten as None and opted to be sent with `completionItem/resolve`.

Example completion capabilities.
```
completion = {
    completionItem = {
        commitCharactersSupport = true,
        deprecatedSupport = true,
        documentationFormat = { "markdown", "plaintext" },
        insertReplaceSupport = true,
        insertTextModeSupport = {
            valueSet = { 1, 2 }
        },
        labelDetailsSupport = true,
        preselectSupport = true,
        resolveSupport = {
            properties = { "documentation", "detail", "additionalTextEdits", "sortText", "filterText", "insertText", "textEdit", "insertTextFormat", "insertTextMode" }
        },
        snippetSupport = true,
        tagSupport = {
            valueSet = { 1 }
        }
}
```
2024-10-09 20:23:52 +00:00
bors
3e42fc5596 Auto merge of #18247 - jhgg:lsp/fix-something-to-resolve, r=Veykril
lsp: fix completion_item something_to_resolve not being a latch to true

while looking at #18245 i noticed that `something_to_resolve` could technically flap between true -> false if some subsequent fields that were requested to be resolved were empty.

this fixes that by using `|=` instead of `=` when assigning to `something_to_resolve` which will prevent it from going back to false once set.

although some cases it's simply assigning to `true` i opted to continue to use `|=` there for uniformity sake. but happy to change those back to `=`'s.

cc `@SomeoneToIgnore`
2024-10-09 15:35:33 +00:00
bors
bd1c7e99d6 Auto merge of #18246 - ChayimFriedman2:fix-18238, r=Veykril
fix: Fix `prettify_macro_expansion()` when the node isn't the whole file

Fixes #18238.
2024-10-09 15:20:47 +00:00
Christopher Serr
4b30d25d21 Only Highlight Exit Points on async Token
This ensures that when being on an `await` token, it still only
highlights the yield points and not the exit points.
2024-10-08 23:30:05 +02:00
Jake
35e268d406
include fn prefix for all callable defs 2024-10-08 11:37:08 -07:00
Jake
4c5b250419
hir-ty: change struct constructor formatting.
before, when formatting struct constructor for `struct S(usize, usize)` it would format as:

    extern "rust-call" S(usize, usize) -> S

but after this change, we'll format as:

    fn S(usize, usize) -> S
2024-10-08 11:05:03 -07:00
Laurențiu Nicola
4316afffd9 Merge from rust-lang/rust 2024-10-08 14:25:39 +03:00
Laurențiu Nicola
537fb8d1bb Preparing for merge from rust-lang/rust 2024-10-08 14:25:24 +03:00
Laurențiu Nicola
ac5361f95f Use macos-13 runners and bump MACOSX_DEPLOYMENT_TARGET 2024-10-08 13:00:58 +03:00
Stuart Cook
ad96cf3685
Rollup merge of #131370 - notriddle:notriddle/screaming-camel-case, r=GuillaumeGomez
rustdoc: improve `<wbr>`-insertion for SCREAMING_CAMEL_CASE
2024-10-08 13:19:45 +11:00
Stuart Cook
4efe50d0a3
Rollup merge of #131369 - rustbot:docs-update, r=ehuss
Update books

## rust-lang/book

8 commits in 99cf75a5414fa8adbe3974bd0836661ca901708f..f38ce8baef98cb20229e56f1be2d50e345f11792
2024-10-07 13:21:46 UTC to 2024-09-25 22:46:26 UTC

- Swap assert_eq! parameters (rust-lang/book#4058)
- Add a short discussion of assignment and ownership in ch. 04 (rust-lang/book#4049)
- Standardize on 'adapter', not 'adaptor' (rust-lang/book#4057)
- A bit more clarity about all the stack types in 3.2 (rust-lang/book#4055)
- Mention move of individual struct fields in struct update syntax (rust-lang/book#4046)
- Convert ch05 to `<Listing>` (rust-lang/book#4051)
- Convert ch04 to `<Listing>` (rust-lang/book#4043)
- Fixed Ukrainian translation link to community repo (rust-lang/book#4039)

## rust-embedded/book

1 commits in dbae36bf3f8410aa4313b3bad42e374735d48a9d..f40a8b420ec4b4505d9489965e261f1d5c28ba23
2024-09-30 19:16:36 UTC to 2024-09-30 19:16:36 UTC

- Update macOS installation instructions (rust-embedded/book#379)

## rust-lang/nomicon

1 commits in 14649f15d232d509478206ee9ed5105641aa60d0..456b904f791751892b01282fd2757904993c4c26
2024-10-05 17:29:16 UTC to 2024-10-05 17:29:16 UTC

- Improve/fix description of drops (rust-lang/nomicon#465)

## rust-lang/reference

7 commits in 24fb2687cdbc54fa18ae4acf5d879cfceca77b2c..c64e52a3d306eac0129f3ad6c6d8806ab99ae2e9
2024-10-05 00:33:03 UTC to 2024-09-24 22:04:59 UTC

- Fix inline-assembly documentation for LoongArch (rust-lang/reference#1644)
- Explain how to name rule identifiers (rust-lang/reference#1609)
- Add `expr_2021` macro fragment specifier (rust-lang/reference#1580)
- Add spec identifier syntax to macro subchapters (rust-lang/reference#1625)
- Authoring guide: clarify standard library linking (rust-lang/reference#1629)
- Add spec identifiers to comments.md (rust-lang/reference#1563)
- Add identifier syntax to visibility-and-privacy.md (rust-lang/reference#1627)

## rust-lang/rust-by-example

3 commits in c79ec345f08a1e94494cdc8c999709a90203fd88..8bede1b919a81ab7d0c961f6bbf68d3efa297bd2
2024-09-30 13:38:03 UTC to 2024-09-30 13:32:58 UTC

- Minor improvements (rust-lang/rust-by-example#1888)
- Clarify that the associated type is also required by the Iterator trait (rust-lang/rust-by-example#1887)
- Add Chinese(zh) translation (rust-lang/rust-by-example#1886)

## rust-lang/rustc-dev-guide

34 commits in 555f3de2fa0d61c4294b74d245f1cbad6fcbf589..07bc9ca9eb1cd6d9fbbf758c2753b748804a134f
2024-10-07 15:09:03 UTC to 2024-09-24 17:49:14 UTC

- rustdoc: docs for search deduplication (rust-lang/rustc-dev-guide#1850)
- Revise test naming advice to discourage using issue numbers alone (rust-lang/rustc-dev-guide#2090)
- Document `bootstrap` integration with `rustc-perf` (rust-lang/rustc-dev-guide#2005)
- building: Update instructions for ./x setup editor (rust-lang/rustc-dev-guide#2086)
- [Testing 2/2] Revise revisions docs (rust-lang/rustc-dev-guide#2089)
- [Testing 1/2] Revise testing chapters excluding the directives chapter (rust-lang/rustc-dev-guide#2088)
- Fixed links to rust-analyzer configs for Emacs and Helix (rust-lang/rustc-dev-guide#2087)
- update `x install` documentation (rust-lang/rustc-dev-guide#2084)
- Rename "object safe" to "dyn compatible" (rust-lang/rustc-dev-guide#2083)
- Small follow-up to my "internal `#[rustc_*]` TEST attributes" PR (rust-lang/rustc-dev-guide#2082)
- Add documentation for `{{rust-src-base}}` (rust-lang/rustc-dev-guide#2079)
- building/suggested: Add instructions for Emacs & Helix (rust-lang/rustc-dev-guide#2080)
- Fix file paths to section 35.1 & 35.2 example code  (rust-lang/rustc-dev-guide#2078)
- Clarify how to disable warnings in deps (rust-lang/rustc-dev-guide#2015)
- Update compiler-src.md (rust-lang/rustc-dev-guide#1899)
- Update rustdoc build instructions (rust-lang/rustc-dev-guide#1917)
- Update salsa.md (rust-lang/rustc-dev-guide#1906)
- Update memory.md (rust-lang/rustc-dev-guide#1907)
- Update serialization.md (rust-lang/rustc-dev-guide#1909)
- update rustc-driver.md (rust-lang/rustc-dev-guide#1929)
- Update syntax-intro.md (rust-lang/rustc-dev-guide#1932)
- Update the-parser.md (rust-lang/rustc-dev-guide#1933)
- Update macro-expansion.md (rust-lang/rustc-dev-guide#1934)
- Clarify a little bit in MIR chapter (rust-lang/rustc-dev-guide#1986)
- Update name-resolution.md (rust-lang/rustc-dev-guide#1935)
- feat: Add section about partial clones with `git clone --filter='blob:none'` (rust-lang/rustc-dev-guide#2035)
- Mention rustc's stable-item-through-unstable-path bug being fixed (rust-lang/rustc-dev-guide#2064)
- Fix `is_diagnostic_item()` example (rust-lang/rustc-dev-guide#2013)
- Revise lldb debuginfo note wording to not imply *only* Python 3.10 can be installed (rust-lang/rustc-dev-guide#2077)
- Document `crashes` test suite (rust-lang/rustc-dev-guide#2075)
- Fix getting diagnostics example (rust-lang/rustc-dev-guide#2067)
- Document `#[rustc_default_body_unstable]` (rust-lang/rustc-dev-guide#2065)
- Describe `.git-blame-ignore-rev` (rust-lang/rustc-dev-guide#2072)
- Note lldb debuginfo requires `python310.dll` to be present in `PATH` on Windows (rust-lang/rustc-dev-guide#2076)
2024-10-08 13:19:44 +11:00
Stuart Cook
cc5a24caf6
Rollup merge of #131355 - clubby789:old-tests, r=jieyouxu
Add tests for some old fixed issues

Closes #30867
Closes #30472
Closes #28994
Closes #26719 (and migrates the relevant test to the new run-make)
Closes #23600

cc `@jieyouxu` for the run-make-support changes

try-job: x86_64-msvc
2024-10-08 13:19:44 +11:00
Michael Howell
f7eced3a21 Add comment to describe camelcase line break 2024-10-07 13:27:50 -07:00
Jubilee
f88bfa34e1
Rollup merge of #131351 - jieyouxu:yeet-the-valgrind, r=Kobzol
Remove valgrind test suite and support from compiletest, bootstrap and opt-dist

The `run-pass-valgrind` test suite is not exercised in CI, and as far as I'm aware nobody runs it (asked in https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Are.20the.20valgrind.20tests.20even.20used.20by.20anyone.3F). What's remaining of valgrind support in compiletest isn't even properly hooked up with bootstrap.

The existing valgrind logic in compiletest is also straight up questionable, i.e.

1b3b8e7b02/src/tools/compiletest/src/runtest/valgrind.rs (L7-L12)

It just runs valgrind tests as `rpass` if no valgrind path is provided to compiletest from bootstrap -- but bootstrap doesn't even pass a valgrind path to compiletest in the first place, so this always ran as `rpass` tests. So what is this even testing?

So if it's not testing anything, let's delete it.

Closes #44816 by deleting the test suite :3

<img src="https://github.com/user-attachments/assets/99525bf7-e85b-40ba-9281-e4e1e275c4e8" width=300 />
2024-10-07 11:10:54 -07:00
Jubilee
31fbf67ce3
Rollup merge of #130899 - bjorn3:wasi_bootstrap_fixes, r=davidtwco
Couple of changes to make it easier to compile rustc for wasm

This is a subset of the patches I have on my rust fork to compile rustc for wasm32-wasip1.
2024-10-07 11:10:53 -07:00
Jubilee
8cd9d954c7
Rollup merge of #130479 - onur-ozkan:llvm-bitcode-linker-multiple-candidates, r=Kobzol
skip in-tree compiler build for llvm-bitcode-linker if ci-rustc is on

Similar to https://github.com/rust-lang/rust/issues/108767, resolves the `multiple candidates` problem for ci-rustc.

See https://github.com/rust-lang/rust/pull/122709#issuecomment-2355436227 for more context.

Blocker for #122709.
2024-10-07 11:10:52 -07:00
Michael Howell
e23419fc97 rustdoc: improve <wbr>-insertion for SCREAMING_CAMEL_CASE 2024-10-07 10:52:39 -07:00
rustbot
4d7c6ca1bb Update books 2024-10-07 13:01:01 -04:00
clubby789
3afb7d687c Migrate emit-to-stdout to new run-make
Co-authored-by: Oneirical <manchot@videotron.ca>
Co-authored-by: Chris Denton <chris@chrisdenton.dev>
2024-10-07 16:30:41 +00:00
clubby789
b577b26249 Add stdio configuring to run-make Rustc 2024-10-07 16:30:00 +00:00
clubby789
ad7d41ce90 Test for issue 23600 2024-10-07 16:29:52 +00:00
bors
7caad69253 Auto merge of #131354 - matthiaskrgr:rollup-hprnng2, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #131331 (Revert "warn_old_master_branch" check)
 - #131344 (Avoid `&Lrc<T>` in various places)
 - #131346 (Restrict `ignore-mode-*` directives)
 - #131353 (Add documentation for `runtest::check_rustdoc_test_option` method)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-07 11:30:33 +00:00
Matthias Krüger
fd2278d017
Rollup merge of #131353 - GuillaumeGomez:check_rustdoc_test_option, r=jieyouxu
Add documentation for `runtest::check_rustdoc_test_option` method

r? `@jieyouxu`
2024-10-07 12:23:56 +02:00
Matthias Krüger
7d7b43c39a
Rollup merge of #131346 - jieyouxu:prune-invalid-directives, r=Zalathar
Restrict `ignore-mode-*` directives

This is only used by coverage test suites where the same sources get run under different coverage modes. Restrict `ignore-mode-<coverage_mode>` to only coverage modes.
2024-10-07 12:23:55 +02:00
Matthias Krüger
df61a0b1b2
Rollup merge of #131344 - nnethercote:ref-Lrc, r=compiler-errors
Avoid `&Lrc<T>` in various places

Seeing `&Lrc<T>` is a bit suspicious, and `&T` or `Lrc<T>` is often better.

r? `@oli-obk`
2024-10-07 12:23:54 +02:00
Matthias Krüger
3a5a816190
Rollup merge of #131331 - onur-ozkan:131296, r=Kobzol
Revert "warn_old_master_branch" check

See https://github.com/rust-lang/rust/issues/131296#issuecomment-2395486918.

Reverts https://github.com/rust-lang/rust/pull/130121 and https://github.com/rust-lang/rust/pull/129584.

Fixes https://github.com/rust-lang/rust/issues/131296 and https://github.com/rust-lang/rust/issues/131324.
2024-10-07 12:23:54 +02:00
Guillaume Gomez
dde78bd946 Add documentation for runtest::check_rustdoc_test_option method 2024-10-07 12:09:28 +02:00
bors
0b16baa570 Auto merge of #131235 - codemountains:rename-nestedmetaitem-to-metaitemlnner, r=nnethercote
Rename `NestedMetaItem` to `MetaItemInner`

Fixes #131087

r? `@nnethercote`
2024-10-07 08:59:55 +00:00
许杰友 Jieyou Xu (Joe)
f1e408a8de Remove valgrind test suite from opt-dist 2024-10-07 07:54:57 +00:00
许杰友 Jieyou Xu (Joe)
de588a6e60 Remove valgrind test suite support from bootstrap 2024-10-07 07:53:48 +00:00
许杰友 Jieyou Xu (Joe)
a961be9f13 Remove valgrind test suite and support from compiletest 2024-10-07 07:53:42 +00:00
codemountains
fc64ff7ec2 Rename nested_meta to meta_item_inner 2024-10-07 15:22:03 +09:00
许杰友 Jieyou Xu (Joe)
64efbe2b53 Prune invalid ignore-mode-* directives
These are only valid for coverage test modes.
2024-10-07 05:42:43 +00:00
Nicholas Nethercote
4547c0a990 Avoid another &Lrc<..> in a return value. 2024-10-07 13:59:50 +11:00
Nicholas Nethercote
731469fee5 Convert Option<&Lrc<T>> return types to Option<&T>.
It's simpler and more concise.
2024-10-07 13:56:29 +11:00
bors
1b3b8e7b02 Auto merge of #128651 - folkertdev:naked-asm-macro-v2, r=Amanieu
add `naked_asm!` macro for use in `#[naked]` functions

tracking issue: https://github.com/rust-lang/rust/issues/90957

Adds the `core::arch::naked_asm` macro, to be used in `#[naked]` functions, but providing better error messages and a place to explain the restrictions on assembly in naked functions.

This PR does not yet require that the `naked_asm!` macro is used inside of `#[naked]` functions:

- the `asm!` macro can still be used in `#[naked]` functions currently, with the same restrictions and error messages as before.
- the `naked_asm!` macro can be used outside of `#[naked]` functions. It has not yet been decided whether that should be allowed long-term.

In this PR, the parsing code of `naked_asm!` now enforces the restrictions on assembly in naked functions, with the exception of checking that the `noreturn` option is specified. It also has not currently been decided if `noreturn` should be implicit or not.

This PR looks large because it touches a bunch of tests. The code changes are mostly straightforward I think: we now have 3 flavors of assembly macro, and that information must be propagated through the parsing code and error messages.

cc `@Lokathor`

r? `@Amanieu`
2024-10-06 21:51:18 +00:00
Chayim Refael Friedman
0e96fd02f0 Use external stack in borrowck DFS
Because damnit, it can crash r-a. Why do people make this stupid DFSes anyway (I get it, it's easier until it blows).
2024-10-06 23:48:16 +03:00
Folkert de Vries
5fc60d1e52 various fixes for naked_asm! implementation
- fix for divergence
- fix error message
- fix another cranelift test
- fix some cranelift things
- don't set the NORETURN option for naked asm
- fix use of naked_asm! in doc comment
- fix use of naked_asm! in run-make test
- use `span_bug` in unreachable branch
2024-10-06 19:00:09 +02:00
Shoyu Vanilla
3eea7afd98 fix: Do not consider mutable usage of deref to *mut T as deref_mut 2024-10-07 01:49:14 +09:00
Folkert de Vries
562ec5a6fb disallow asm! in #[naked] functions
also disallow the `noreturn` option, and infer `naked_asm!` as `!`
2024-10-06 18:12:25 +02:00
Folkert
aa5bbf05f4 implement naked_asm macro 2024-10-06 18:12:25 +02:00