about summary refs log tree commit diff
path: root/tests
AgeCommit message (Collapse)AuthorLines
2025-05-27Rollup merge of #141552 - jieyouxu:cfg-version-tests, r=est31Michael Goulet-243/+350
Pull out dedicated `cfg_version` syntax test from feature gate test Tracking issue: rust-lang/rust#64796. Closes rust-lang/rust#141452, as a follow-up to https://github.com/rust-lang/rust/pull/141413#discussion_r2104490809 (point 3 of that is probably too pedantic). The feature gate test was dual-purposing causing feature gate errors to distract from syntax exercises. ``@rustbot`` label +F-cfg_version r? ``@est31``
2025-05-27Rollup merge of #141536 - Urgau:ambi_wide_ptr-cmp-diag, r=fee1-deadMichael Goulet-25/+125
Improve `ambiguous_wide_pointer_comparisons` lint compare diagnostics This PR improves the `ambiguous_wide_pointer_comparisons` lint compare diagnostics: `cmp`/`partial_cmp`, but also the operators `<`/`>`/`>=`/`<=`, by: 1. removing the reference to `std::ptr::addr_eq` which only works for equality 2. and adding an `#[expect]` suggestion for keeping the current behavior Fixes rust-lang/rust#141510
2025-05-27Rollup merge of #140591 - Kivooeo:new-fix-five, r=davidtwcoMichael Goulet-39/+113
Fix malformed suggestion for E0061 when method is a macro token in macro context fixes #140512 before ```rust 3 - <Self>::$method(8) 3 + <Self>::<Self>::$method(8, /* u8 */) ``` now ```rust 3 | <Self>::$method(8, /* u8 */) | ++++++++++ ```
2025-05-26Auto merge of #140790 - quininer:mac-xray, r=wesleywiser,jieyouxubors-10/+77
Enable xray support for Mac https://github.com/rust-lang/rust/issues/102921 Upstream has supported Mac for a while, let's enable it. I've tested it on M4 and it generates nop sled correctly. * https://maskray.me/blog/2023-06-18-port-llvm-xray-to-apple-systems * https://github.com/llvm/llvm-project/blob/llvmorg-20.1.4/clang/lib/Driver/XRayArgs.cpp#L31 try-job: x86_64-apple-1 try-job: aarch64-apple
2025-05-27Rollup merge of #141550 - Urgau:unused_braces-attrs, r=chenyukang许杰友 Jieyou Xu (Joe)-0/+49
Fix `unused_braces` lint suggestion when encountering attributes This PR fixes the `unused_braces` lint suggestion when encountering attributes by not removing them in the suggestion. Fixes rust-lang/rust#141549
2025-05-27Rollup merge of #141439 - compiler-errors:dyn-compatible-coerce, r=oli-obk许杰友 Jieyou Xu (Joe)-765/+57
Deduplicate dyn compatibility violations due to coercion Don't unnecessarily emit dyn compatibility violations due to coercion to a non-dyn-compatible target type. For us to even have that target type, we would have had to write `dyn Trait` somewhere in source, and that would have led to us *already* emitting a dyn compatibility violation when checking that user written type is WF. r? oli-obk
2025-05-27Rollup merge of #141433 - compiler-errors:unsafe-binder-captures, r=oli-obk许杰友 Jieyou Xu (Joe)-0/+21
Properly analyze captures from unsafe binders We need to represent the unsafe binder unwrap as an adjustment in HIR. Pretty straightforward b/c we already represent it as a projection elem in MIR. Fixes #141418 Fixes #141417 r? oli-obk
2025-05-27Rollup merge of #141431 - compiler-errors:open-drop, r=oli-obk许杰友 Jieyou Xu (Joe)-0/+29
Emit dummy open drop for unsafe binder Fixes rust-lang/rust#141394 We can't taint the body in wfcheck when we have a `T: Copy` bound failure, so we end up binding MIR here. Emit a dummy open drop so that drop elaboration doesn't fail. r? oli-obk
2025-05-26cfg_version: pull out dedicated syntax test from feature gate testJieyou Xu-243/+350
The feature gate test was dual-purposing causing feature gate errors to distract from syntax exercises.
2025-05-26Deduplicate dyn compatibility violations due to coercionMichael Goulet-765/+57
2025-05-26Auto merge of #141567 - jhpratt:rollup-uuhcmci, r=jhprattbors-241/+83
Rollup of 8 pull requests Successful merges: - rust-lang/rust#134696 (Implement `normalize_lexically`) - rust-lang/rust#140539 (Simplify `attribute_groups`) - rust-lang/rust#140863 ([rustdoc] Unify type aliases rendering with other ADT) - rust-lang/rust#140936 (Clarify WTF-8 safety docs) - rust-lang/rust#140952 (Specify that split_ascii_whitespace uses the same definition as is_ascii_whitespace) - rust-lang/rust#141472 (Attempt to improve the `std::fs::create_dir_all` docs related to atomicity) - rust-lang/rust#141502 (ci: move PR job x86_64-gnu-tools to codebuild) - rust-lang/rust#141559 (const-check: stop recommending the use of rustc_allow_const_fn_unstable) r? `@ghost` `@rustbot` modify labels: rollup
2025-05-26Rollup merge of #141559 - RalfJung:less-rustc_allow_const_fn_unstable, ↵Jacob Pratt-240/+40
r=compiler-errors const-check: stop recommending the use of rustc_allow_const_fn_unstable I have seen way too many people see the compiler suggest this attribute and then just apply it without a second thought. This is bad. So let's just stop recommending it; for the rare case where someone needs it, they'll eventually ask us and that way we can be sure that it is truly needed. The dev-guide still also explains `rustc_allow_const_fn_unstable`. Cc ``@rust-lang/wg-const-eval``
2025-05-26Rollup merge of #140863 - GuillaumeGomez:cleanup-tyalias-render, r=lolbinarycatJacob Pratt-1/+43
[rustdoc] Unify type aliases rendering with other ADT Fixes #140739. Better reviewed one commit at a time. Just one thing I'm wondering: should we also render non-`repr` attributes? If so, I wonder if we shouldn't simply change `clean::TypeAlias` to contain the other ADT directly (`Struct`, `Enum` and `Union`) and remove the `TypeAlias::generics` field. Can be done in a follow-up too. cc ``@camelid`` r? ``@notriddle``
2025-05-26Auto merge of #138489 - tmiasko:call-tmps-lifetime, r=workingjubileebors-29/+73
Describe lifetime of call argument temporaries passed indirectly Fixes #132014.
2025-05-25const-check: stop recommending the use of rustc_allow_const_fn_unstableRalf Jung-240/+40
2025-05-26Add compiler tests for xrayquininer-10/+77
2025-05-25Fix `unused_braces` lint suggestion when encountering attributesUrgau-0/+49
2025-05-25Improve `ambiguous_wide_pointer_comparisons` lint compare diagnosticsUrgau-25/+125
2025-05-25Rollup merge of #141512 - Noratrieb:stop-trimming-this-much, r=compiler-errorsGuillaume Gomez-42/+62
Avoid extra path trimming in method not found error Method errors have an extra check that force trim paths whenever the normal string is longer than 10 characters, which can be quite unhelpful when multiple items have the same name (for example an `Error`). A user reported this force trimming as being quite unhelpful when they had a method error where the precise path of the `Error` mattered. The code uses `tcx.short_string` already to get the normal path, which tries to be clever around trimming paths if necessary, so there is no reason for this extra force trimming.
2025-05-25Rollup merge of #141413 - est31:cfg_version_env_var, r=jieyouxuGuillaume Gomez-0/+47
Make #[cfg(version)] respect RUSTC_OVERRIDE_VERSION_STRING The `#[cfg(version(...))]` feature is currently under-tested. Part of it is the difficulty that it is hard to write a test that never changes, while the version of the Rust compiler indeed *does* change. PR #81468 added the first and so far only test of `#[cfg(version(...))]`'s functionality (there is one other test for the *syntax*, that also acts as feature gate). But that test uses a proc macro that parses the version: the text of the test doesn't contain the actual `#[cfg(version(...))]`. This PR makes `#[cfg(version(...))]` respect `RUSTC_OVERRIDE_VERSION_STRING`, added by PR #124339, allowing us to virtually pin the rustc version and write tests from all directions against some specific version. The PR also adds a functional test of `#[cfg(version(...))]` that leverages `RUSTC_OVERRIDE_VERSION_STRING`. Pulled out of #141137. Tracking issue: #64796
2025-05-25Add regression test for #140739Guillaume Gomez-0/+42
2025-05-25Tweak attribute rendering depending on wether or not it is a type aliasGuillaume Gomez-1/+1
2025-05-25Rollup merge of #140950 - clubby789:nonzero-ord-test, r=Mark-SimulacrumJacob Pratt-10/+52
More option optimization tests I noticed that although adding a manual implementation for PartialOrd on Option in #122024, I didn't add a test so that we can easily check if this behavior has improved. This also adds a couple of `should-fail` tests - this will allow us to remove these hacky implementations if upstream LLVM improves.
2025-05-25Rollup merge of #139831 - lolbinarycat:rustdoc-mobile-sidebar, r=GuillaumeGomezJacob Pratt-19/+8
rustdoc: on mobile, make the sidebar full width and linewrap this is because the mobile sidebar cannot be resized, unlike on desktop.
2025-05-24Make #[cfg(version)] respect RUSTC_OVERRIDE_VERSION_STRINGest31-0/+47
2025-05-24Avoid extra path trimming in method not found errorNoratrieb-42/+62
Method errors have an extra check that force trim paths whenever the normal string is longer than 10 characters, which can be quite unhelpful when multiple items have the same name (for example an `Error`). A user reported this force trimming as being quite unhelpful when they had a method error where the precise path of the `Error` mattered. The code uses `tcx.short_string` already to get the normal path, which tries to be clever around trimming paths if necessary, so there is no reason for this extra force trimming.
2025-05-24Auto merge of #141372 - khuey:ir_call_dbg_loc, r=jieyouxubors-0/+47
Use the fn_span when emitting function calls for better debug info. This especially improves the developer experience for long chains of function calls that span multiple lines, which is common with builder patterns, chains of iterator/future combinators, etc. try-job: armhf-gnu try-job: test-various try-job: x86_64-msvc-1 try-job: arm-android r? `@jieyouxu`
2025-05-24Rollup merge of #141432 - lcnr:canonicalize-regions, r=compiler-errorsMatthias Krüger-29/+25
refactor `CanonicalVarKind` it's unnecessary. I don't believe we'll ever need to store additional info shared by all `CanonicalVarKind`s. r? `@compiler-errors`
2025-05-24Disable test on android because it doesn't have backtraces.Kyle Huey-1/+2
2025-05-24Rollup merge of #141456 - Urgau:check-cfg-version-pred, r=jieyouxuMatthias Krüger-0/+45
Suggest correct `version("..")` predicate syntax in check-cfg This PR specialize the `unexpected_cfgs` lint diagnostic to suggest correct `version("..")` predicate syntax when providing the key-value one, eg. `version = "1.27"`. Fixes https://github.com/rust-lang/rust/issues/141440 r? ``@jieyouxu``
2025-05-24Rollup merge of #141438 - compiler-errors:dyn-compatible-call, r=lcnrMatthias Krüger-304/+83
Do not try to confirm non-dyn compatible method See the comment I left in `compiler/rustc_hir_typeck/src/method/confirm.rs`. If we have a receiver that does not deref to the `dyn Trait` we're assembling the method from, then we used to ICE, but that's something that is possible to encounter with arbitrary self types. r? oli-obk Fixes https://github.com/rust-lang/rust/issues/141419
2025-05-24Rollup merge of #141429 - ↵Matthias Krüger-0/+30
compiler-errors:unsafe-binder-non-structural-match, r=spastorino Dont walk into unsafe binders when emiting error for non-structural type match Fixes #141422. The other two binder-having types are also special cased here, unsurprisingly. r? oli-obk
2025-05-24Enable xray support for Macquininer-1/+1
* https://maskray.me/blog/2023-06-18-port-llvm-xray-to-apple-systems * https://github.com/llvm/llvm-project/blob/llvmorg-20.1.4/clang/lib/Driver/XRayArgs.cpp#L31
2025-05-23rustdoc-gui test: apply suggestions from code reviewbinarycat-1/+4
2025-05-23Rollup merge of #140832 - ↵Matthias Krüger-5/+6
workingjubilee:aarch64-linux-should-use-frame-pointers, r=compiler-errors aarch64-linux: Default to FramePointer::NonLeaf For aarch64-apple and aarch64-windows, platform docs state that code must use frame pointers correctly. This is because the AAPCS64 mandates that a platform specify its frame pointer conformance requirements: - Apple: https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms#Respect-the-purpose-of-specific-CPU-registers - Windows: https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#integer-registers - AAPCS64: https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer Unwinding code either requires unwind tables or frame pointers, and on aarch64 the expectation is that one can use frame pointers for this. Most Linux targets represent a motley variety of possible distributions, so it is unclear who to defer to on conformance, other than perhaps Arm. In the absence of a specific edict for a given aarch64-linux target, Rust will assume aarch64-linux targets also use non-leaf frame pointers. This reflects what compilers like clang do.
2025-05-23Suggest correct `version("..")` predicate syntax in check-cfgUrgau-0/+45
2025-05-23Do not try to confirm non-dyn compatible methodMichael Goulet-304/+83
2025-05-23yeet `CanonicalVarInfo`lcnr-29/+25
2025-05-23Rollup merge of #141126 - fmease:rev-rjson-priv-repr, r=aDotInTheVoidMatthias Krüger-37/+4
rustdoc JSON: Don't apply `#[repr]` privacy heuristics Split out from #116882. Context: https://github.com/rust-lang/rust/pull/116882#issuecomment-2888349161. Partially reverts #138018. cc `@obi1kenobi` r? aDotInTheVoid or rustdoc
2025-05-23Rollup merge of #140967 - ↵Matthias Krüger-0/+40
azhogin:azhogin/async-drop-poll-shim-for-error-dropee-fix, r=oli-obk Async drop poll shim for error dropee generates noop body Fixes https://github.com/rust-lang/rust/issues/140930. When dropee type for async drop poll shim is `ty::Error(_)`, the generated poll function will be noop body. To avoid ICE in `elaborate_drop`.
2025-05-23Rollup merge of #136400 - lolbinarycat:rustdoc-link-lint-135851, ↵Matthias Krüger-33/+99
r=GuillaumeGomez Improve handling of rustdoc lints when used with raw doc fragments. 1. `rustdoc::bare_urls` no longer outputs incoherent suggestions if `source_span_for_markdown_range` returns None, instead outputting no suggestion 2. `source_span_for_markdown_range` has one more heuristic, so it will return `None` less often. 3. add ui test to make sure we don't emit nonsense suggestions. fixes https://github.com/rust-lang/rust/issues/135851
2025-05-23Emit dummy open drop for unsafe binderMichael Goulet-0/+29
2025-05-23Properly analyze captures from unsafe bindersMichael Goulet-0/+21
2025-05-23Dont walk into unsafe binders when emiting error for non-structural type matchMichael Goulet-0/+30
2025-05-23Auto merge of #140553 - BoxyUwU:defer_type_system_ctfe, r=compiler-errorsbors-92/+377
Defer evaluating type system constants when they use infers or params Split out of #137972, the parts necessary for associated const equality and min generic const args to make progress and have correct semantics around when CTFE is invoked. According to a [previous perf run](https://perf.rust-lang.org/compare.html?start=93257e2d20809d82d1bc0fcc1942480d1a66d7cd&end=01b4cbf0f47c3f782330db88fa5ba199bba1f8a2&stat=instructions:u) of adding the new `const_arg_kind` query we should expect minor regressions here. I think this is acceptable as we should be able to remove this query relatively soon once mgca is more complete as we'll then be able to implement GCE in terms of mgca and rip out `GCEConst` at which point it's trivial to determine what kind of anon const we're dealing with (either it has generics and is a repeat expr hack, or it doesnt and is a normal anon const). This should only affect unstable code as we handle repeat exprs specially and those are the only kinds of type system consts that are allowed to make use of generic parameters. Fixes #133066 Fixes #133199 Fixes #136894 Fixes #137813 r? compiler-errors
2025-05-23Auto merge of #135160 - RalfJung:aarch64-softfloat-not-neon, r=Noratriebbors-0/+45
aarch64-softfloat: forbid enabling the neon target feature This fixes https://github.com/rust-lang/rust/issues/134375 in a rather crude way, by making [the example](https://godbolt.org/z/r56xWo8nT) not build any more on aarch64-unknown-none-softfloat. That is a breaking change since the "neon" aarch64 target feature is stable, but this is justified as a soundness fix. Note that it's not "neon" which is problematic but "fp-armv8"; however, the two are tied together by rustc. `-Ctarget-feature=+neon` still works, it just causes a warning (but one that we do hope to make a hard error eventually). Only `#[target_feature="neon"]` becomes a hard error with this PR. More work on the LLVM side will be needed before we can let people use neon without impacting the ABI of float values (and, in particular, the ABI used by automatically inserted calls to libm functions, e.g. for int-to-float casts, which rustc has no control over). Nominating for `@rust-lang/lang` since it is a breaking change. As-is this PR doesn't have a warning cycle; the hope is that the aarch64-unknown-none-softfloat target is sufficiently niche that there's no huge fallout and we can easily revert if it causes trouble. A warning cycle could be added but would need some dedicated rather hacky check in the target_feature attribute handling logic. try-job: dist-various-1
2025-05-22rustdoc: rip out all the gui tests for <100% width mobile sidebarbinarycat-19/+5
stuff like "clicking the settings menu closes the mobile sidebar" is now impossible for users to observe, since the mobile sidebar will always cover the settings menu due to being full-width, which is good because that behavior is also now impossible for our testing framework to observe.
2025-05-22Use the fn_span when emitting function calls for better debug info.Kyle Huey-0/+46
This especially improves the developer experience for long chains of function calls that span multiple lines, which is common with builder patterns, chains of iterator/future combinators, etc.
2025-05-22Auto merge of #141396 - matthiaskrgr:rollup-feg050g, r=matthiaskrgrbors-202/+807
Rollup of 7 pull requests Successful merges: - #135562 (Add ignore value suggestion in closure body) - #139635 (Finalize repeat expr inference behaviour with inferred repeat counts) - #139668 (Handle regions equivalent to 'static in non_local_bounds) - #140218 (HIR ty lowering: Clean up & refactor the lowering of type-relative paths) - #140435 (use uX::from instead of _ as uX in non - const contexts) - #141130 (rustc_on_unimplemented cleanups) - #141286 (Querify `coroutine_hidden_types`) Failed merges: - #140247 (Don't build `ParamEnv` and do trait solving in `ItemCtxt`s when lowering IATs) r? `@ghost` `@rustbot` modify labels: rollup
2025-05-23Async drop poll shim for error dropee generates noop body (fixes #140930)Andrew Zhogin-0/+40