about summary refs log tree commit diff
path: root/compiler
AgeCommit message (Collapse)AuthorLines
2025-04-26session: Cleanup `CanonicalizedPath::new`Vadim Petrochenkov-9/+8
It wants an owned path, so pass an owned path
2025-04-26Rollup merge of #140320 - lcnr:wf-use-term, r=compiler-errorsMatthias Krüger-174/+189
replace `GenericArg` with `Term` where applicable r? types
2025-04-26Rollup merge of #140318 - compiler-errors:specialized-async-fn-kind-err, ↵Matthias Krüger-31/+10
r=fee1-dead Simply try to unpeel AsyncFnKindHelper goal in `emit_specialized_closure_kind_error` Tweak the handling of `AsyncFnKindHelper` goals in `emit_specialized_closure_kind_error` to not be so special-casey, and just try to unpeel one or two layers of obligation causes to get to their underlying `AsyncFn*` goal. Fixes https://github.com/rust-lang/rust/issues/140292
2025-04-26Rollup merge of #140317 - mejrs:check_on_uni, r=compiler-errorsMatthias Krüger-1/+0
Remove redundant check We still check for `rustc_on_unimplemented` on implementations, but this functionality was removed in https://github.com/rust-lang/rust/pull/139091, since then it always returns `Ok` when called with a non-trait defid. https://github.com/rust-lang/rust/blob/b4c8b0c3f0533bb342a4873ff59bdad3883ab8e3/compiler/rustc_trait_selection/src/error_reporting/traits/on_unimplemented.rs#L557-L564
2025-04-26Rollup merge of #140215 - joshlf:transmutability-char-nonzero, r=jswrennMatthias Krüger-46/+213
transmutability: Support char, NonZeroXxx Note that `NonZero` support is not wired up, as the author encountered bugs while attempting this. A future commit will wire up `NonZero` support. r? ````@jswrenn````
2025-04-26Add the `avx10.1` and `avx10.2` target featuressayantn-0/+26
2025-04-26Fix error message for static references or mutable referencesyuk1ty-2/+2
2025-04-26Auto merge of #140324 - matthiaskrgr:rollup-jlzvdre, r=matthiaskrgrbors-36/+201
Rollup of 8 pull requests Successful merges: - #139865 (Stabilize proc_macro::Span::{start,end,line,column}.) - #140086 (If creating a temporary directory fails with permission denied then retry with backoff) - #140216 (Document that "extern blocks must be unsafe" in Rust 2024) - #140253 (Add XtensaAsmPrinter) - #140272 (Improve error message for `||` (or) in let chains) - #140305 (Track per-obligation recursion depth only if there is inference in the new solver) - #140306 (handle specialization in the new trait solver) - #140308 (stall generator witness obligations: add regression test) r? `@ghost` `@rustbot` modify labels: rollup
2025-04-26Rollup merge of #140306 - lcnr:specialization-new, r=compiler-errorsMatthias Krüger-14/+117
handle specialization in the new trait solver fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/187 also fixes the regression in `plonky2_field` from https://github.com/rust-lang/trait-system-refactor-initiative/issues/188 cc https://github.com/rust-lang/rust/pull/111994 r? ```@compiler-errors```
2025-04-26Rollup merge of #140305 - compiler-errors:coerce-loop, r=lcnrMatthias Krüger-8/+15
Track per-obligation recursion depth only if there is inference in the new solver Track how many times an obligation has been processed in the fulfillment context by reusing its recursion depth, and only overflow if a singular (root) goal hits the limit. This also fixes a (probably theoretical at this point) problem where we don't detect pseudo-hangs across `select_where_possible` calls. fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/186 r? lcnr
2025-04-26Rollup merge of #140272 - Kivooeo:new-fix-four, r=est31Matthias Krüger-4/+17
Improve error message for `||` (or) in let chains **Description** This PR improves the error message when using `||` in an if let chain expression, addressing #140263. **Changes** 1. Creates a dedicated error message specifically for `||` usage in let chains 2. Points the primary span directly at the `||` operator 3. Removes confusing secondary notes about "let statements" and unsupported contexts 5. Adds UI tests verifying the new error message and valid cases **Before** ```rust error: expected expression, found let statement --> src/main.rs:2:8 | 2 | if let true = true || false {} | ^^^^^^^^^^^^^^^ | = note: only supported directly in conditions of if and while expressions note: || operators are not supported in let chain expressions --> src/main.rs:2:24 | 2 | if let true = true || false {} | ``` **After** ```rust error: `||` operators are not supported in let chain conditions --> src/main.rs:2:24 | 2 | if let true = true || false {} | ^^ ``` **Implementation details** 1. Added new `OrInLetChain` diagnostic in errors.rs 2. Modified `CondChecker` in expr.rs to prioritize the `||` error 3. Updated fluent message definitions to use clearer wording **Related issue** Fixes #140263 cc ```@ehuss``` (issue author)
2025-04-26Rollup merge of #140253 - SergioGasquez:feat/xtensa-asm-printer, r=cuviperMatthias Krüger-0/+1
Add XtensaAsmPrinter See https://github.com/rust-lang/rust/pull/133601. The PR was closed because it required LLVM 19 in CI added with (https://github.com/rust-lang/rust/commit/12167d7064597993355e41d3a8c20654bccaf0be)
2025-04-26Rollup merge of #140086 - ChrisDenton:backoff, r=petrochenkovMatthias Krüger-10/+51
If creating a temporary directory fails with permission denied then retry with backoff On Windows, if creating a temporary directory fails with permission denied then use a retry/backoff loop. This hopefully fixes a recuring error in our CI. cc ```@jieyouxu,``` https://github.com/rust-lang/rust/issues/133959
2025-04-26remove unnecessary matchlcnr-20/+9
2025-04-26convert some `GenericArg` to `Term`lcnr-154/+180
2025-04-26Auto merge of #140177 - tmandry:compiletest-par, r=jieyouxubors-2/+1
[compiletest] Parallelize test discovery Certain filesystems are slow to service individual read requests, but can service many in parallel. This change brings down the time to run a single cached test on one of those filesystems from 40s to about 8s.
2025-04-26Simply try to unpeel AsyncFnKindHelper goal in ↵Michael Goulet-31/+10
emit_specialized_closure_kind_error
2025-04-26Remove redundant checkmejrs-1/+0
2025-04-25Auto merge of #140295 - antoyo:subtree-update_cg_gcc_2025-04-25, ↵bors-39/+46
r=GuillaumeGomez Subtree update cg_gcc 2025/04/25 r? GuillaumeGomez
2025-04-26Improve HIR pretty-printing of if/else some more.Nicholas Nethercote-6/+11
In the AST the "then" block is represented as a `Block`. In HIR the "then" block is represented as an `Expr` that happens to always be. `ExprKind::Block`. By deconstructing the `ExprKind::Block` to extract the block within, things print properly. For `issue-82392.rs`, note that we no longer print a type after the "then" block. This is good, it now matches how we don't print a type for the "else" block. (Well, we do print a type after the "else" block, but it's for the whole if/else.) Also tighten up some of the pattern matching -- these block expressions within if/else will never have labels.
2025-04-25transmutability: Support char, NonZeroXxxJoshua Liebow-Feeser-46/+213
Note that `NonZero` support is not wired up, as the author encountered bugs while attempting this. A future commit will wire up `NonZero` support.
2025-04-25Auto merge of #140298 - matthiaskrgr:rollup-5tc1gvb, r=matthiaskrgrbors-44/+52
Rollup of 8 pull requests Successful merges: - #137683 (Add a tidy check for GCC submodule version) - #138968 (Update the index of Result to make the summary more comprehensive) - #139572 (docs(std): mention const blocks in const keyword doc page) - #140152 (Unify the format of rustc cli flags) - #140193 (fix ICE in `#[naked]` attribute validation) - #140205 (Tidying up UI tests [2/N]) - #140284 (remove expect() in `unnecessary_transmutes`) - #140290 (rustdoc: fix typo change from equivelent to equivalent) r? `@ghost` `@rustbot` modify labels: rollup
2025-04-25Track per-obligation recursion depth only if there is inferenceMichael Goulet-8/+15
2025-04-25handle specialization in the new trait solverlcnr-14/+117
uwu :3
2025-04-25Auto merge of #139756 - Zoxc:out-of-order-dep-graph, r=oli-obkbors-43/+215
Allow out of order dep graph node encoding This allows out of order dep graph node encoding by also encoding the index instead of using the file node order as the index. `MemEncoder` is also brought back to life and used for encoding. Both of these are done to enable thread-local encoding of dep graph nodes. This is based on https://github.com/rust-lang/rust/pull/139636.
2025-04-25Rollup merge of #140284 - bend-n:fix-expectation-unmet, r=jieyouxuMatthias Krüger-5/+2
remove expect() in `unnecessary_transmutes` removes expect() from #136083 and fixes #140277 includes regression test r? lcnr
2025-04-25Rollup merge of #140193 - folkertdev:fix-issue-140082, r=jdonszelmannMatthias Krüger-2/+6
fix ICE in `#[naked]` attribute validation fixes https://github.com/rust-lang/rust/issues/140082 The comment here https://github.com/rust-lang/rust/pull/139615/files#r2040684192 is relevant, a better way to print the full path would be nice. If there's an issue I should `FIXME` this with let me know. r? `@jdonszelmann` cc `@nnethercote` https://github.com/rust-lang/rust/pull/139615
2025-04-25Rollup merge of #140152 - xizheyin:issue-140102, r=jieyouxuMatthias Krüger-37/+44
Unify the format of rustc cli flags As mentioned in #140102, I unified the format of rustc CLI flags. I use the following rules: 1. `<param>`: Indicates a required parameter 2. `[param]`: Indicates an optional parameter 3. `|`: Indicates a mutually exclusive option 4. `*`: a list element with description Current output: ```bash Usage: rustc [OPTIONS] INPUT Options: -h, --help Display this message --cfg <SPEC> Configure the compilation environment. SPEC supports the syntax `<NAME>[="<VALUE>"]`. --check-cfg <SPEC> Provide list of expected cfgs for checking -L [<KIND>=]<PATH> Add a directory to the library search path. The optional KIND can be one of <dependency|crate|native|framework|all> (default: all). -l [<KIND>[:<MODIFIERS>]=]<NAME>[:<RENAME>] Link the generated crate(s) to the specified native library NAME. The optional KIND can be one of <static|framework|dylib> (default: dylib). Optional comma separated MODIFIERS <bundle|verbatim|whole-archive|as-needed> may be specified each with a prefix of either '+' to enable or '-' to disable. --crate-type <bin|lib|rlib|dylib|cdylib|staticlib|proc-macro> Comma separated list of types of crates for the compiler to emit --crate-name <NAME> Specify the name of the crate being built --edition <2015|2018|2021|2024|future> Specify which edition of the compiler to use when compiling code. The default is 2015 and the latest stable edition is 2024. --emit <TYPE>[=<FILE>] Comma separated list of types of output for the compiler to emit. Each TYPE has the default FILE name: * asm - CRATE_NAME.s * llvm-bc - CRATE_NAME.bc * dep-info - CRATE_NAME.d * link - (platform and crate-type dependent) * llvm-ir - CRATE_NAME.ll * metadata - libCRATE_NAME.rmeta * mir - CRATE_NAME.mir * obj - CRATE_NAME.o * thin-link-bitcode - CRATE_NAME.indexing.o --print <INFO>[=<FILE>] Compiler information to print on stdout (or to a file) INFO may be one of <all-target-specs-json|calling-conventions|cfg|check-cfg|code-models|crate-name|crate-root-lint-levels|deployment-target|file-names|host-tuple|link-args|native-static-libs|relocation-models|split-debuginfo|stack-protector-strategies|supported-crate-types|sysroot|target-cpus|target-features|target-libdir|target-list|target-spec-json|tls-models>. -g Equivalent to -C debuginfo=2 -O Equivalent to -C opt-level=3 -o <FILENAME> Write output to FILENAME --out-dir <DIR> Write output to compiler-chosen filename in DIR --explain <OPT> Provide a detailed explanation of an error message --test Build a test harness --target <TARGET> Target triple for which the code is compiled -A, --allow <LINT> Set lint allowed -W, --warn <LINT> Set lint warnings --force-warn <LINT> Set lint force-warn -D, --deny <LINT> Set lint denied -F, --forbid <LINT> Set lint forbidden --cap-lints <LEVEL> Set the most restrictive lint level. More restrictive lints are capped at this level -C, --codegen <OPT>[=<VALUE>] Set a codegen option -V, --version Print version info and exit -v, --verbose Use verbose output Additional help: -C help Print codegen options -W help Print 'lint' options and default settings -Z help Print unstable compiler options --help -v Print the full set of options rustc accepts ```
2025-04-25Merge commit '4f83a4258deb99f3288a7122c0d5a78200931c61' into ↵Antoni Boucher-39/+46
subtree-update_cg_gcc_2025-04-25
2025-04-25Auto merge of #140282 - matthiaskrgr:rollup-g6ze4jj, r=matthiaskrgrbors-241/+203
Rollup of 8 pull requests Successful merges: - #137653 (Deprecate the unstable `concat_idents!`) - #138957 (Update the index of Option to make the summary more comprehensive) - #140006 (ensure compiler existance of tools on the dist step) - #140143 (Move `sys::pal::os::Env` into `sys::env`) - #140202 (Make #![feature(let_chains)] bootstrap conditional in compiler/) - #140236 (norm nested aliases before evaluating the parent goal) - #140257 (Some drive-by housecleaning in `rustc_borrowck`) - #140278 (Don't use item name to look up associated item from trait item) r? `@ghost` `@rustbot` modify labels: rollup
2025-04-25Extend the alignment check to borrowsBastian Kersting-28/+49
The current alignment check does not include checks for creating misaligned references from raw pointers, which is now added in this patch. When inserting the check we need to be careful with references to field projections (e.g. `&(*ptr).a`), in which case the resulting reference must be aligned according to the field type and not the type of the pointer.
2025-04-25remove expect() in unnecessary_transmutesbendn-5/+2
2025-04-25resolved conflictKivooeo-4/+17
2025-04-25Add option style comment for `rustc_optgroups`xizheyin-0/+7
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-04-25Retry if creating temp fails with access deniedChris Denton-10/+51
On Windows, if creating a temporary directory fails with permission denied then use a retry/backoff loop. This hopefully fixes a recuring error in our CI.
2025-04-25Check if format argument is identifier to avoid error err-emitxizheyin-45/+90
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-04-25Trivial compiler change to inhibit download-rustc in CIZalathar-1/+1
2025-04-25Auto merge of #140273 - matthiaskrgr:rollup-rxmuvkg, r=matthiaskrgrbors-26/+23
Rollup of 8 pull requests Successful merges: - #137096 (Stabilize flags for doctest cross compilation) - #140148 (CI: use aws codebuild for job dist-arm-linux) - #140187 ([AIX] Handle AIX dynamic library extensions within c-link-to-rust-dylib run-make test) - #140196 (Improved diagnostics for non-primitive cast on non-primitive types (`Arc`, `Option`)) - #140210 (Work around cygwin issue on condvar timeout) - #140213 (mention about `x.py setup` in `INSTALL.md`) - #140229 (`DelimArgs` tweaks) - #140248 (Fix impl block items indent) r? `@ghost` `@rustbot` modify labels: rollup
2025-04-25Rollup merge of #140278 - compiler-errors:name-based-comparison, r=nnethercoteMatthias Krüger-7/+5
Don't use item name to look up associated item from trait item This fix should be self-justifying b/c the fact that we were using identifiers here was kinda sus anyways, esp b/c we have a failproof way of doing the comparison :) I'll leave some info about why this repro needs a macro. Fixes https://github.com/rust-lang/rust/issues/140259 r? `@nnethercote`
2025-04-25Rollup merge of #140257 - amandasystems:housecleaning, r=wesleywiserMatthias Krüger-45/+39
Some drive-by housecleaning in `rustc_borrowck` This commit picks up a few odd ends discovered during the work on #130227. It adds some documentation and renames a few methods with too generic names to describe what they actually do. It also adds some debug output that was helpful during bug hunting and generally cleans up a few things (for my values of "clean"). r? lcnr
2025-04-25Rollup merge of #140236 - lcnr:normalizes-to-goals, r=compiler-errorsMatthias Krüger-145/+101
norm nested aliases before evaluating the parent goal see the explanation of the underlying issue in tests/ui/traits/next-solver/normalize/eager-norm-pre-normalizes-to.rs. This is also the cause of https://github.com/rust-lang/trait-system-refactor-initiative/issues/184, fixing the overflow errors with the new solver. I did not add any tests based on it directly as relying on that behavior to cause recursion limit shenanigans feels fragile. Thanks `@Nadrieril` for minimizing the issue [on zulip](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/typenum.20.602.20.2F.201.60.20overflow.20error/with/513993621). r? `@compiler-errors`
2025-04-25Rollup merge of #140202 - est31:let_chains_feature_compiler, r=lcnrMatthias Krüger-40/+40
Make #![feature(let_chains)] bootstrap conditional in compiler/ Let chains have been stabilized recently in #132833, so we can remove the gating from our uses in the compiler (as the compiler uses edition 2024).
2025-04-25Rollup merge of #140143 - thaliaarchi:move-env-pal, r=joboetMatthias Krüger-4/+18
Move `sys::pal::os::Env` into `sys::env` Although `Env` (as `Vars`), `Args`, path functions, and OS constants are publicly exposed via `std::env`, their implementations are each self-contained. Keep them separate in `std::sys` and make a new module, `sys::env`, for `Env`. Also fix `unsafe_op_in_unsafe_fn` for Unix and update the `!DynSend` and `!DynSync` impls which had grown out of sync with the platforms (see #48005 for discussion on that). r? joboet Tracked in #117276.
2025-04-25add custom enzyme markers to target methodsbit-aloo-0/+5
2025-04-25add llvm wrappers and corresponding methods in attributebit-aloo-0/+44
2025-04-25Zero the buffer passed from `write_with`John Kåre Alsaker-2/+9
2025-04-25Improve pretty printing of if/else.Nicholas Nethercote-6/+10
By removing some of the over-indenting. AST pretty printing now looks correct. HIR pretty printing is better, but still over-indents some.
2025-04-25Fix some pretty printing indents.Nicholas Nethercote-4/+4
Indents for `cbox` and `ibox` are 0 or `INDENT_UNIT` (4) except for a couple of places which are `INDENT_UNIT - 1` for no clear reason. This commit changes the three space indents to four spaces.
2025-04-25Don't use item name to look up associated item from trait itemMichael Goulet-7/+5
2025-04-24strip underlying xcoff objectHenry Jiang-2/+2