about summary refs log tree commit diff
path: root/src/test
AgeCommit message (Collapse)AuthorLines
2022-12-05Auto merge of #104920 - compiler-errors:avoid-infcx-build, r=jackh726bors-4/+34
Avoid some `InferCtxt::build` calls Either because we're inside of an `InferCtxt` already, or because we're not in a place where we'd ever see inference vars. r? types
2022-12-04Auto merge of #105094 - Swatinem:generator-not-future, r=compiler-errorsbors-0/+126
Make sure async constructs do not `impl Generator` Async lowering turns async functions and blocks into generators internally. Though these special kinds of generators should not `impl Generator` themselves. The other way around, normal generators should not `impl Future`. This was discovered in https://github.com/rust-lang/rust/pull/105082#issuecomment-1332210907 and is a regression from https://github.com/rust-lang/rust/pull/104321. r? `@compiler-errors`
2022-12-04Auto merge of #104535 - mikebenfield:discr-fix, r=pnkfelixbors-5/+38
rustc_codegen_ssa: Fix for codegen_get_discr When doing the optimized implementation of getting the discriminant, the arithmetic needs to be done in the tag type so wrapping behavior works correctly. Fixes #104519
2022-12-04Auto merge of #105261 - matthiaskrgr:rollup-9ghhc9c, r=matthiaskrgrbors-109/+270
Rollup of 6 pull requests Successful merges: - #101975 (Suggest to use . instead of :: when accessing a method of an object) - #105141 (Fix ICE on invalid variable declarations in macro calls) - #105224 (Properly substitute inherent associated types.) - #105236 (Add regression test for #47814) - #105247 (Use parent function WfCheckingContext to check RPITIT.) - #105253 (Update a couple of rustbuild deps) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-12-04Rollup merge of #105247 - cjgillot:issue-102682, r=compiler-errorsMatthias Krüger-58/+47
Use parent function WfCheckingContext to check RPITIT. WF-check for RPITIT was done in the opaque type's param-env, so it could not benefit from assumed wf types from the function's parameters. cc `@compiler-errors` since you chose that param-env in fd2766e7fde4 Fixes https://github.com/rust-lang/rust/issues/102682 Fixes https://github.com/rust-lang/rust/issues/104908 Fixes https://github.com/rust-lang/rust/issues/102552 Fixes https://github.com/rust-lang/rust/issues/104529
2022-12-04Rollup merge of #105236 - JohnTitor:issue-47814, r=compiler-errorsMatthias Krüger-0/+28
Add regression test for #47814 Closes #47814 r? `@compiler-errors` Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-12-04Rollup merge of #105224 - cjgillot:issue-104240, r=compiler-errorsMatthias Krüger-0/+15
Properly substitute inherent associated types. Fixes https://github.com/rust-lang/rust/issues/104240
2022-12-04Rollup merge of #105141 - ohno418:fix-ice-on-invalid-var-decl-in-macro-call, ↵Matthias Krüger-0/+52
r=compiler-errors Fix ICE on invalid variable declarations in macro calls This fixes ICE that happens with invalid variable declarations in macro calls like: ```rust macro_rules! m { ($s:stmt) => {} } m! { var x } m! { auto x } m! { mut x } ``` Found this is because of not collecting tokens on recovery, so I changed to force collect them. Fixes https://github.com/rust-lang/rust/issues/103529.
2022-12-04Rollup merge of #101975 - chenyukang:fix-101749, r=compiler-errorsMatthias Krüger-51/+128
Suggest to use . instead of :: when accessing a method of an object Fixes #101749 Fixes #101542
2022-12-04Auto merge of #103293 - est31:untwist_and_drop_order, r=nagisabors-7/+127
Remove drop order twist of && and || and make them associative Previously a short circuiting binop chain (chain of && or ||s) would drop the temporaries created by the first element after all the other elements, and otherwise follow evaluation order. So `f(1).g() && f(2).g() && f(3).g() && f(4).g()` would drop the temporaries in the order `2,3,4,1`. This made `&&` and `||` non-associative regarding drop order. In other words, adding ()'s to the expression would change drop order: `f(1).g() && (f(2).g() && f(3).g()) && f(4).g()` for example would drop in the order `3,2,4,1`. As, except for the bool result, there is no data returned by the sub-expressions of the short circuiting binops, we can safely discard of any temporaries created by the sub-expr. Previously, code was already putting the rhs's into terminating scopes, but missed it for the lhs's. This commit addresses this "twist". We now also put the lhs into a terminating scope. The drop order of the above expressions becomes `1,2,3,4`. There might be code relying on the current order, and therefore I'd recommend doing a crater run to gauge the impact. I'd argue that such code is already quite wonky as it is one `foo() &&` addition away from breaking. ~~For the impact, I don't expect any *build* failures, as the compiler gets strictly more tolerant: shortening the lifetime of temporaries only expands the list of programs the compiler accepts as valid. There might be *runtime* failures caused by this change however.~~ Edit: both build and runtime failures are possible, e.g. see the example provided by dtolnay [below](https://github.com/rust-lang/rust/pull/103293#issuecomment-1285341113). Edit2: the crater run has finished and [results](https://github.com/rust-lang/rust/pull/103293#issuecomment-1292275203) are that there is only one build failure which is easy to fix with a +/- 1 line diff. I've included a testcase that now compiles thanks to this patch. The breakage is also limited to drop order relative to conditionals in the && chain: that is, in code like this: ```Rust let hello = foo().hi() && bar().world(); println!("hi"); ``` we already drop the temporaries of `foo().hi()` before we reach "hi". I'd ideally have this PR merged before let chains are stabilized. If this PR is taking too long, I'd love to have a more restricted version of this change limited to `&&`'s in let chains: the `&&`'s of such chains are quite special anyways as they accept `let` bindings, in there the `&&` is therefore more a part of the "if let chain" construct than a construct of its own. Fixes #103107 Status: waiting on [this accepted FCP](https://github.com/rust-lang/rust/pull/103293#issuecomment-1293411354) finishing.
2022-12-04Rollup merge of #105237 - JohnTitor:issue-79450, r=oli-obkMatthias Krüger-0/+32
Add regression test for #79450 Closes #79450 r? `@oli-obk` Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-12-04Rollup merge of #105142 - nbdd0121:inline_const, r=petrochenkovMatthias Krüger-0/+25
Make inline const block `ExprWithBlock` Fix https://github.com/rust-lang/rust/pull/104087#issuecomment-1324190817 `@rustbot` label: +T-lang +F-inline_const
2022-12-04Rollup merge of #105123 - BlackHoleFox:fixing-the-macos-deployment, r=oli-obkMatthias Krüger-0/+25
Fix passing MACOSX_DEPLOYMENT_TARGET to the linker I messed up in https://github.com/rust-lang/rust/pull/103929 when merging the two base files together and as a result, started ignoring `MACOSX_DEPLOYMENT_TARGET` at the linker level. This ended up being the cause of nighty builds not running on older macOS versions. My original hope with the previous PR was that CI would have caught something like that but there were only tests checking the compiler target definitions in codegen tests. Because of how badly this sucks to break, I put together a new test via `run-make` that actually confirms the deployment target set makes it to the linker instead of just LLVM. Closes https://github.com/rust-lang/rust/issues/104570 (for real this time)
2022-12-04Rollup merge of #104856 - luqmana:associated-const-bad-suggestion, ↵Matthias Krüger-7/+1
r=compiler-errors Don't suggest associated function call for associated const. Fixes #104801. r? `@compiler-errors`
2022-12-04Use parent function WfCheckingContext to check RPITIT.Camille GILLOT-58/+47
2022-12-04Also avoid creating a terminating scope in mixed chainsest31-0/+19
This avoids creation of a terminating scope in chains that contain both && and ||, because also there we know that a terminating scope is not neccessary: all the chain members are already in such terminating scopes. Also add a mixed && / || test.
2022-12-04Auto merge of #104757 - camelid:consolidate-lints, ↵bors-6/+2
r=GuillaumeGomez,jyn514,Manishearth Consolidate rustdoc's lint passes into a single pass This should improve performance and simplify the code. r? `@GuillaumeGomez`
2022-12-04Add regression test for #79450Yuki Okushi-0/+32
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-12-04Add regression test for #47814Yuki Okushi-0/+28
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-12-03Remove drop order twist of && and || and make them associativeest31-7/+108
Previously a short circuiting && chain would drop the first element after all the other elements, and otherwise follow evaluation order, so code like: f(1).g() && f(2).g() && f(3).g() && f(4).g() would drop the temporaries in the order 2,3,4,1. This made && and || non-associative regarding drop order, so adding ()'s to the expression would change drop order: f(1).g() && (f(2).g() && f(3).g()) && f(4).g() for example would drop in the order 3,2,4,1. As, except for the bool result, there is no data returned by the sub-expressions of the short circuiting binops, we can safely discard of any temporaries created by the sub-expr. Previously, code was already putting the rhs's into terminating scopes, but missed it for the lhs's. This commit addresses this "twist". In the expression, we now also put the lhs into a terminating scope. The drop order for the above expressions is 1,2,3,4 now.
2022-12-03Properly substitute inherent associated types.Camille GILLOT-0/+15
2022-12-03Rollup merge of #105208 - chenyukang:yukang/fix-105069, r=cjgillotMatthias Krüger-0/+32
Add AmbiguityError for inconsistent resolution for an import Fixes #105069 Fixes #83950
2022-12-03Rollup merge of #105201 - cjgillot:issue-105040, r=compiler-errorsMatthias Krüger-0/+32
Do not call fn_sig on non-functions. Fixes https://github.com/rust-lang/rust/issues/105040 Fixes https://github.com/rust-lang/rust/issues/89271
2022-12-03Rollup merge of #105200 - cjgillot:issue-104562, r=compiler-errorsMatthias Krüger-0/+22
Remove useless filter in unused extern crate check. Fixes https://github.com/rust-lang/rust/issues/104562
2022-12-03Rollup merge of #105193 - tmiasko:naked-nocoverage, r=wesleywiserMatthias Krüger-0/+19
Disable coverage instrumentation for naked functions Fixes #105170.
2022-12-03Rollup merge of #105164 - compiler-errors:revert-import-filter, r=estebankMatthias Krüger-6/+15
Restore `use` suggestion for `dyn` method call requiring `Sized` Add the suggestion back that I accidentally removed in 88f2140d8736329610a4c0bd8000e164c9170537 because I didn't understand that suggestion was actually useful... Fixes #105159
2022-12-03Rollup merge of #104199 - SarthakSingh31:issue-97417-1, r=cjgillotMatthias Krüger-0/+1
Keep track of the start of the argument block of a closure This removes a call to `tcx.sess.source_map()` from [compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs](https://github.com/rust-lang/rust/compare/master...SarthakSingh31:issue-97417-1?expand=1#diff-8406bbc0d0b43d84c91b1933305df896ecdba0d1f9269e6744f13d87a2ab268a) as required by #97417. VsCode automatically applied `rustfmt` to the files I edited under `src/tools`. I can undo that if its a problem. r? `@cjgillot`
2022-12-03fix #101749, use . instead of :: when accessing a method of an objectyukang-51/+128
2022-12-03fix #105069, Add AmbiguityError for inconsistent resolution for an importyukang-0/+32
2022-12-03parser: fix ICE with invalid variable declaration in macro callYutaro Ohno-0/+52
Fix ICE on parsing an invalid variable declaration as a statement like: ``` macro_rules! m { ($s:stmt) => {} } m! { var x } ```
2022-12-03Auto merge of #105183 - GuillaumeGomez:merge-and-dedup-predicates, r=notriddlebors-6/+26
Merge generics and where predicates and prevent duplicates in where predicates Part of #104886 (I didn't include bounds from parent trait yet as I think the PR is already big enough). Also we'll need to run a perf check. cc `@fmease` since you worked a bit on this. r? `@notriddle`
2022-12-03Do not call fn_sig on non-functions.Camille GILLOT-0/+32
2022-12-03Remove useless filter in unused extern crate check.Camille GILLOT-0/+22
2022-12-03Rollup merge of #105188 - compiler-errors:verbose-ty-err, r=TaKO8KiYuki Okushi-0/+34
Don't elide type information when printing E0308 with `-Zverbose` When we pass `-Zverbose`, we kinda expect for all `_` to be replaced with more descriptive information, for example -- ``` = note: expected fn pointer `fn(_, u32)` found fn item `fn(_, i32) {foo}` ``` Where `_` is the "identical" part of the fn signatures, now gets rendered as: ``` = note: expected fn pointer `fn(i32, u32)` found fn item `fn(i32, i32) {foo}` ```
2022-12-03Rollup merge of #105182 - aDotInTheVoid:rdj-no-foreign-traits, ↵Yuki Okushi-9/+35
r=Enselic,GuillaumeGomez Rustdoc-Json: Don't inline foreign traits It wasn't done correctly, and [we want to move towards only having local items in the index, and making foreign items easier to resolved](https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/Rustdoc.20JSON.3A.20Include.20All.20Foreign.20Items.3F) Fixes #105025. This means #105015 is included to test this Fixes #105022 r? `@GuillaumeGomez`
2022-12-03Rollup merge of #105181 - bhbs:skip-note, r=estebankYuki Okushi-0/+44
Don't add a note for implementing a trait if its inner type is erroneous Fix #105138
2022-12-02Fix passing MACOSX_DEPLOYMENT_TARGET to the linkerBlackHoleFox-0/+25
2022-12-03Don't add a note for implementing a trait if its inner type is erroneousbhbs-0/+44
2022-12-03Disable coverage instrumentation for naked functionsTomasz Miąsko-0/+19
2022-12-02Don't elide information when printing E0308 with ZverboseMichael Goulet-0/+34
2022-12-02Rollup merge of #105163 - compiler-errors:afit-lt-arity, r=jackh726Matthias Krüger-0/+41
Check lifetime param count in `collect_trait_impl_trait_tys` We checked the type and const generics count, but not the lifetimes, which were handled in a different function. Fixes #105154
2022-12-02Rollup merge of #105162 - compiler-errors:fn-sig-arity, r=cjgillotMatthias Krüger-0/+17
Properly synthesize `FnSig` value during cycle Get the arity correct when creating a `FnSig` type during `tcx.fn_sig` cycle recovery Fixes #105152
2022-12-02Rollup merge of #105033 - durin42:llvm-16-dont-tail-call-me-bro, r=tmandryMatthias Krüger-0/+5
sparc-struct-abi: work around new tail-call optimization Upstream LLVM change https://reviews.llvm.org/D138741 introduced some new tail-call smarts for SPARC which broke some of the checks in this test. Rather than adjust the test expectations, we add an extra no-args function that can get tail-called or not without hurting the needs of the test. r? ``@nikic``
2022-12-02Rollup merge of #105026 - oToToT:aarch64-v8a, r=davidtwcoMatthias Krüger-0/+37
v8a as default aarch64 target After https://github.com/llvm/llvm-project/commit/8689f5e landed, LLVM takes the intersection of v8a and v8r as default. This commit brings back v8a support by explicitly specifying v8a in the feature list. This should solve #97724. p.s. a bit more context can also be found in https://github.com/llvm/llvm-project/issues/57904#issuecomment-1329555590.
2022-12-02Update existing rustdoc testsGuillaume Gomez-6/+6
2022-12-02Add rustdoc test for bounds de-duplication and mergeGuillaume Gomez-0/+20
2022-12-02Add test for #105022Nixon Enraght-Moony-0/+12
2022-12-02Add test for #105025Nixon Enraght-Moony-0/+21
2022-12-02Rustdoc-Json: Don't include foreign traitsNixon Enraght-Moony-9/+2
2022-12-02Auto merge of #104863 - nnethercote:reduce-lint-macros, r=cjgillotbors-200/+94
Reduce macro usage for lints r? `@cjgillot`