about summary refs log tree commit diff
path: root/tests
AgeCommit message (Collapse)AuthorLines
2023-03-29Rollup merge of #109683 - compiler-errors:self-ty-overflow, r=lcnrDylan DPC-0/+52
Check for overflow in `assemble_candidates_after_normalizing_self_ty` Prevents a stack overflow (:warning: :exclamation:) in the new solver when we have param-env candidates that look like: `T: Trait<Assoc = <T as Trait>::Assoc>` The current error message looks bad, but that's because we don't distinguish overflow and other ambiguity errors. I'll break that out into a separate PR since the fix may be controversial. r? `@lcnr`
2023-03-29Rollup merge of #109664 - m-ou-se:format-args-placeholder-span, r=oli-obkDylan DPC-37/+110
Use span of placeholders in format_args!() expansion. `format_args!("{}", x)` expands to something that contains `Argument::new_display(&x)`. That entire expression was generated with the span of `x`. After this PR, `&x` uses the span of `x`, but the `new_display` call uses the span of the `{}` placeholder within the format string. If an implicitly captured argument was used like in `format_args!("{x}")`, both use the span of the `{x}` placeholder. This fixes https://github.com/rust-lang/rust/issues/109576, and also allows for more improvements to similar diagnostics in the future, since the usage of `x` can now be traced to the exact `{}` placeholder that required it to be `Display` (or `Debug` etc.)
2023-03-29Rollup merge of #109534 - petrochenkov:noprimuse, r=GuillaumeGomezDylan DPC-1/+1
rustdoc: Unsupport importing `doc(primitive)` and `doc(keyword)` modules These are internal features used for a specific purpose, and modules without imports are enough for that purpose.
2023-03-29Rollup merge of #108335 - compiler-errors:non_lifetime_binders-rustdoc, ↵Dylan DPC-0/+33
r=GuillaumeGomez rustdoc + rustdoc-json support for `feature(non_lifetime_binders)` Makes `for<T> T: Trait` and `for<const N: usize> ..` in where clause operate correctly. Fixes #108158
2023-03-29Auto merge of #109714 - matthiaskrgr:rollup-wipns5h, r=matthiaskrgrbors-5/+165
Rollup of 6 pull requests Successful merges: - #109149 (Improve error message when writer is forgotten in write and writeln macro) - #109367 (Streamline fast rejection) - #109548 (AnnotationColumn struct to fix hard tab column numbers in errors) - #109694 (do not panic on failure to acquire jobserver token) - #109705 (new solver: check for intercrate mode when accessing the cache) - #109708 (Specialization involving RPITITs is broken so ignore the diagnostic differences) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-29Rollup merge of #109708 - spastorino:new-rpitit-20, r=compiler-errorsMatthias Krüger-2/+38
Specialization involving RPITITs is broken so ignore the diagnostic differences Just bless the corresponding test for `-Zlower-impl-trait-in-trait-to-assoc-ty` r? `@compiler-errors`
2023-03-29Rollup merge of #109694 - BelovDV:fix-panic-jobserver-token, r=bjorn3Matthias Krüger-0/+12
do not panic on failure to acquire jobserver token Purpose: remove `panic`. Rust fails to acquire token if an error in build system occurs - environment variable contains incorrect `jobserver-auth`. It isn't ice so compiler shouldn't panic on such error. Related issue: #46981
2023-03-29Rollup merge of #109548 - pommicket:better-column-numbers-with-hard-tabs, ↵Matthias Krüger-0/+32
r=petrochenkov AnnotationColumn struct to fix hard tab column numbers in errors Fixes #109537 i don't know if this is the best way of fixing this but it works
2023-03-29Rollup merge of #109149 - mj10021:issue-108713-fix, ↵Matthias Krüger-3/+83
r=compiler-errors,WaffleLapkin Improve error message when writer is forgotten in write and writeln macro Modified write! macro error message when writer is forgotten as in issue #108713 Fixes #108713 r? ``@WaffleLapkin``
2023-03-28Simplify transmutes in MIR InstCombineScott McMurray-0/+290
Thanks to the combination of #108246 and #108442 it could already remove identity transmutes. With this PR, it can also simplify them to `IntToInt` casts, `Discriminant` reads, or `Field` projections.
2023-03-28Specialization involving RPITITs is broken so ignore the diagnostic ↵Santiago Pastorino-2/+38
differences for them
2023-03-28Check for overflow in assemble_candidates_after_normalizing_self_tyMichael Goulet-0/+52
2023-03-28rustdoc + rustdoc-json support for non_lifetime_bindersMichael Goulet-0/+33
2023-03-28Auto merge of #109692 - Nilstrieb:rollup-hq65rps, r=Nilstriebbors-4/+179
Rollup of 8 pull requests Successful merges: - #91793 (socket ancillary data implementation for FreeBSD (from 13 and above).) - #92284 (Change advance(_back)_by to return the remainder instead of the number of processed elements) - #102472 (stop special-casing `'static` in evaluation) - #108480 (Use Rayon's TLV directly) - #109321 (Erase impl regions when checking for impossible to eagerly monomorphize items) - #109470 (Correctly substitute GAT's type used in `normalize_param_env` in `check_type_bounds`) - #109562 (Update ar_archive_writer to 0.1.3) - #109629 (remove obsolete `givens` from regionck) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-28[fix] don't panic on failure to acquire jobserver tokenDaniil Belov-0/+12
2023-03-28rustdoc: Unsupport importing `doc(primitive)` and `doc(keyword)` modulesVadim Petrochenkov-1/+1
These are internal features used for a specific purpose, and modules without imports are enough for that purpose.
2023-03-28Create AnnotationColumn struct to fix hard tab column numbers in errorspommicket-0/+32
2023-03-28Auto merge of #108080 - oli-obk:FnPtr-trait, r=lcnrbors-20/+9
Add a builtin `FnPtr` trait that is implemented for all function pointers r? `@ghost` Rebased version of https://github.com/rust-lang/rust/pull/99531 (plus adjustments mentioned in the PR). If perf is happy with this version, I would like to land it, even if the diagnostics fix in 9df8e1befb5031a5bf9d8dfe25170620642d3c59 only works for `FnPtr` specifically, and does not generally improve blanket impls.
2023-03-28Rollup merge of #109629 - aliemjay:remove-givens, r=lcnrnils-0/+82
remove obsolete `givens` from regionck Revives #107376. The only change is the last commit (https://github.com/rust-lang/rust/pull/109629/commits/2a3177a8bcc4c5a5285dc2908a0f1ce98e9a6377) which should fix the regression. Fixes https://github.com/rust-lang/rust/issues/106567 r? `@lcnr`
2023-03-28Rollup merge of #109470 - compiler-errors:gat-normalize-bound, r=jackh726nils-0/+17
Correctly substitute GAT's type used in `normalize_param_env` in `check_type_bounds` Given: ```rust trait Foo { type Assoc<T>: PartialEq<Self::Assoc<i32>>; } impl Foo for () { type Assoc<T> = Wrapper<T>; } struct Wrapper<T>(T); impl<T> PartialEq<Wrapper<i32>> for Wrapper<T> { } ``` We add an additional predicate in the `normalize_param_env` in `check_type_bounds` that is used to normalize the GAT's bounds to check them in the impl. Problematically, though, that predicate is constructed to be `for<^0> <() as Foo>::Assoc<^0> => Wrapper<T>`, instead of `for<^0> <() as Foo>::Assoc<^0> => Wrapper<^0>`. That means `Self::Assoc<i32>` in the bounds that we're checking normalizes to `Wrapper<T>`, instead of `Wrapper<i32>`, and so the bound `Self::Assoc<T>: PartialEq<Self::Assoc<i32>>` normalizes to `Wrapper<T>: PartialEq<Wrapper<T>>`, which does not hold. Fixes this by properly substituting the RHS of that normalizes predicate that we add to the `normalize_param_env`. That means the bound is properly normalized to `Wrapper<T>: PartialEq<Wrapper<i32>>`, which *does* hold. --- The second commit in this PR just cleans up some substs stuff and some naming. r? `@jackh726` cc #87900
2023-03-28Rollup merge of #109321 - compiler-errors:illegal-mono-w-regions, r=cjgillotnils-0/+19
Erase impl regions when checking for impossible to eagerly monomorphize items We were inserting `ReErased` for method substs, but not for impl substs, leading to the call for `subst_and_check_impossible_predicates` being a bit weaker than it should be (since it ignores predicates that need substitution -- incl early-bound regions). Fixes #109297
2023-03-28Rollup merge of #102472 - lcnr:static-in-eval, r=jackh726nils-4/+61
stop special-casing `'static` in evaluation fixes #102360 I have no idea whether this actually removed all places where `'static` matters. Without canonicalization it's very easy to accidentally rely on `'static` again. Blocked on changing the `order_dependent_trait_objects` future-compat lint to a hard error r? `@nikomatsakis`
2023-03-28Auto merge of #109557 - fee1-dead-contrib:mv-const-traits, r=oli-obkbors-259/+397
Move const trait bounds checks to MIR constck Fixes #109543. When checking paths in HIR typeck, we don't want to check for const predicates since all we want might just be a function pointer. Therefore we move this to MIR constck and check that bounds are met during MIR constck. r? `@oli-obk`
2023-03-28fix long lineDeadbeef-23/+25
2023-03-28Move const trait bounds checks to MIR constckDeadbeef-259/+395
Fixes #109543. When checking paths in HIR typeck, we don't want to check for const predicates since all we want might just be a function pointer. Therefore we move this to MIR constck and check that bounds are met during MIR constck.
2023-03-28Rollup merge of #109661 - ↵Matthias Krüger-7/+7
fortanix:raoul/EDP-107-fix_lvi_mitigation_tests_llvm_16, r=cuviper Fix LVI test post LLVM 16 update #109474 updated LLVM to 16. This causes the LVI mitigation tests for the `x86_64-fortanix-unknown-sgx` platform to fail. This PR fixes those tests again. cc: `@jethrogb`
2023-03-28Rollup merge of #108548 - jamen:master, r=compiler-errorsMatthias Krüger-10/+156
Clarify the 'use a constant in a pattern' error message ```rs use std::borrow::Cow; const ERROR_CODE: Cow<'_, str> = Cow::Borrowed("23505"); fn main() { let x = Cow::from("23505"); match x { ERROR_CODE => {} } } ``` ``` error: to use a constant of type `Cow` in a pattern, `Cow` must be annotated with `#[derive(PartialEq, Eq)]` --> src/main.rs:9:9 | 9 | ERROR_CODE => {} | ^^^^^^^^^^ error: could not compile `playground` due to previous error ``` It seems helpful to link to StructuralEq in this message. I was a little confused, because `Cow<'_, str>` implements PartialEq and Eq, but they're not derived, which I learned is necessary for structural equality and using constants in patterns (thanks to the Rust community Discord server) For tests, should I update every occurrence of this message? I see tests where this is still a warning and I'm not sure if I should update those.
2023-03-28Erase impl regions when checking for impossible to eagerly monomorphize itemsMichael Goulet-0/+19
2023-03-27check for write macro and write_fmt with err msgJames Dietz-3/+83
added ui test blessed stderrs fixed typo reblessed
2023-03-27Auto merge of #109440 - WaffleLapkin:make_tidy_slower, r=jyn514bors-2/+1
Don't skip all directories when tidy-checking This fixes a regression from https://github.com/rust-lang/rust/pull/108772 which basically made it that tidy style checks only `README.md` and `COMPILER_TESTS.md`.
2023-03-27Bless tidyMaybe Waffle-2/+1
2023-03-27Rollup merge of #109637 - bjorn3:add_test_annotation, r=tmiaskoGuillaume Gomez-0/+1
Add missing needs-asm-support annotation to ui/simple_global_asm.rs
2023-03-27Rollup merge of #109330 - ↵Guillaume Gomez-0/+14
GuillaumeGomez:intermediate-reexport-intra-doc-ice, r=petrochenkov rustdoc: Fix ICE for intra-doc link on intermediate re-export Fixes https://github.com/rust-lang/rust/issues/109282. This PR is based on #109266 as it includes its commit to make this work. `@petrochenkov:` It was exactly as you predicted, adding the `DefId` to the attributes fixed the error for intermediate re-exports as well. Thanks a lot! r? `@petrochenkov`
2023-03-27Add notes to non-structural const in pattern error messageJamen Marz-10/+156
2023-03-27Add test for span of implicit format args captures.Mara Bos-0/+73
2023-03-27Bless mir-opt tests.Mara Bos-22/+22
(Only the lifetime spans changed.)
2023-03-27Bless UI tests.Mara Bos-15/+15
2023-03-27Use the FnPtr trait to avoid implementing common traits via macrosOli Scherer-20/+0
2023-03-27Add a builtin `FnPtr` traitlcnr-0/+9
2023-03-27Fix LVI test post LLVM 16 updateRaoul Strackx-7/+7
2023-03-27Rollup merge of #109633 - GuillaumeGomez:fix-go-to-only-setting, r=notriddleMatthias Krüger-0/+63
Fix "Directly go to item in search if there is only one result" setting Part of #66181. The setting was actually broken, so I fixed it when I added the GUI test. r? `@notriddle`
2023-03-27Rollup merge of #109613 - lukas-code:match-str-to-char-suggestion, ↵Matthias Krüger-1/+32
r=compiler-errors fix type suggestions in match arms fix https://github.com/rust-lang/rust/issues/109586
2023-03-26Add missing needs-asm-support annotation to ui/simple_global_asm.rsbjorn3-0/+1
2023-03-26Add GUI test for "Directly go to item in search if there is only one result" ↵Guillaume Gomez-0/+63
setting
2023-03-26Auto merge of #109626 - matthiaskrgr:rollup-k0y7bdd, r=matthiaskrgrbors-13/+166
Rollup of 6 pull requests Successful merges: - #109007 (rustdoc: skip `// some variants omitted` if enum is `#[non_exhaustive]`) - #109593 (Rustdoc Book refer to rustdoc::missing_doc_code_examples. Fixes #109592.) - #109595 (Improve "Auto-hide trait implementation documentation" GUI test) - #109619 (Still-further-specializable projections are ambiguous in new solver) - #109620 (Correct typo (`back_box` -> `black_box`)) - #109621 (Refactor: `VariantIdx::from_u32(0)` -> `FIRST_VARIANT`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-26tolerate region vars in implied boundsAli MJ Al-Nasrawy-0/+24
See https://github.com/rust-lang/rust/issues/109628.
2023-03-26add testAli MJ Al-Nasrawy-0/+58
2023-03-26Rollup merge of #109619 - ↵Matthias Krüger-0/+108
compiler-errors:new-solver-still-further-specializable, r=BoxyUwU Still-further-specializable projections are ambiguous in new solver Fixes https://github.com/rust-lang/rust/pull/108896/files#r1148450781 r? ``@BoxyUwU`` (though feel free to re-roll) --- This can be used to create an unsound transmute function with the new solver: ```rust #![feature(specialization)] trait Default { type Id; fn intu(&self) -> &Self::Id; } impl<T> Default for T { default type Id = T; fn intu(&self) -> &Self::Id { self } } fn transmute<T: Default<Id = U>, U: Copy>(t: T) -> U { *t.intu() } use std::num::NonZeroU8; fn main() { let s = transmute::<u8, Option<NonZeroU8>>(0); assert_eq!(s, None); } ```
2023-03-26Rollup merge of #109595 - GuillaumeGomez:improve-gui-test-auto-hide-trait, ↵Matthias Krüger-13/+47
r=notriddle Improve "Auto-hide trait implementation documentation" GUI test Part of #66181. I'll start working on the `include` command for `browser-ui-test` so we can greatly reduce the duplicated code between setting tests. r? ``@notriddle``
2023-03-26Auto merge of #106428 - saethlin:inline-diverging-functions, r=cjgillotbors-74/+711
Permit the MIR inliner to inline diverging functions This heuristic prevents inlining of `hint::unreachable_unchecked`, which in turn makes `Option/Result::unwrap_unchecked` a bad inlining candidate. I looked through the changes to `core`, `alloc`, `std`, and `hashbrown` by hand and they all seem reasonable. Let's see how this looks in perf... --- Based on rustc-perf it looks like this regresses ctfe-stress, and the cachegrind diff indicates that this regression is in `InterpCx::statement`. I don't know how to do any deeper analysis because that function is _enormous_ in the try toolchain, which has no debuginfo in it. And a local build produces significantly different codegen for that function, even with LTO.