about summary refs log tree commit diff
path: root/src/test
AgeCommit message (Collapse)AuthorLines
2022-05-21Auto merge of #96515 - lcnr:user-types-in-pat, r=nikomatsakisbors-84/+239
correctly deal with user type ascriptions in pat supersedes #93856 `thir::PatKind::AscribeUserType` previously resulted in `CanonicalUserTypeAnnotations` where the inferred type already had a subtyping relation according to `variance` to the `user_ty`. The bug can pretty much be summarized as follows: - during mir building - `user_ty -> inferred_ty`: considers variance - `StatementKind::AscribeUserType`: `inferred_ty` is the type of the place, so no variance needed - during mir borrowck - `user_ty -> inferred_ty`: does not consider variance - `StatementKind::AscribeUserType`: applies variance This mostly worked fine. The lifetimes in `inferred_ty` were only bound by its relation to `user_ty` and to the `place` of `StatementKind::AscribeUserType`, so it doesn't matter where exactly the subtyping happens. It does however matter when having higher ranked subtying. At this point the place where the subtyping happens is forced, causing this mismatch between building and borrowck to result in unintended errors. cc #96514 which is pretty much the same issue r? `@nikomatsakis`
2022-05-21update nll testslcnr-0/+47
2022-05-21Rollup merge of #97237 - oberien:patch-1, r=Dylan-DPCGuillaume Gomez-1/+27
Add some more weird-exprs Continuing from https://github.com/rust-lang/rust/pull/86713 (which stalled due to a thinking emoji), I'd like to "improve" the `weird-exprs.rs`-file (as I can't reopen that PR).
2022-05-21Auto merge of #97239 - jhpratt:remove-crate-vis, r=joshtriplettbors-342/+108
Remove `crate` visibility modifier FCP to remove this syntax is just about complete in #53120. Once it completes, this should be merged ASAP to avoid merge conflicts. The first two commits remove usage of the feature in this repository, while the last removes the feature itself.
2022-05-21update mir dumpslcnr-38/+38
2022-05-21update mir user type printing and apparently fix an ICElcnr-46/+8
2022-05-21correctly deal with user type ascriptions in patlcnr-0/+146
2022-05-21Remove `crate` visibility modifier in libs, testsJacob Pratt-342/+108
2022-05-21Auto merge of #96923 - eholk:fix-fake-read, r=nikomatsakisbors-0/+41
Drop Tracking: Implement `fake_read` callback This PR updates drop tracking's use of `ExprUseVisitor` so that we treat `fake_read` events as borrows. Without doing this, we were not handling match expressions correctly, which showed up as a breakage in the `addassign-yield.rs` test. We did not previously notice this because we still had rather large temporary scopes that we held borrows for, which changed in #94309. This PR also includes a variant of the `addassign-yield.rs` test case to make sure we continue to have correct behavior here with drop tracking. r? `@nikomatsakis`
2022-05-21Add back thinking emojioberien-6/+9
2022-05-21Add a function returning itself to weird-exprsJaro Fietz-0/+14
2022-05-21Add unicode identifier to weird-exprsJaro Fietz-0/+9
Use unicode identifiers and a unicode emoji in weird-exprs.rs
2022-05-21Make the most special expression even more specialJaro Fietz-1/+1
Add or-pattern syntax in argument position
2022-05-20Auto merge of #97224 - matthiaskrgr:rollup-it5nw68, r=matthiaskrgrbors-9/+208
Rollup of 7 pull requests Successful merges: - #97109 (Fix misleading `cannot infer type for type parameter` error) - #97187 (Reverse condition in Vec::retain_mut doctest) - #97201 (Fix typo) - #97203 (Minor tweaks to rustc book summary formatting.) - #97208 (Do not emit the lint `unused_attributes` for *inherent* `#[doc(hidden)]` associated items) - #97215 (Add complexity estimation of iterating over HashSet and HashMap) - #97220 (Add regression test for#81827) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-20Rollup merge of #97220 - JohnTitor:issue-81827, r=compiler-errorsMatthias Krüger-0/+46
Add regression test for#81827 Closes #81827 r? `@compiler-errors`
2022-05-20Rollup merge of #97208 - fmease:fix-issue-97205, r=oli-obkMatthias Krüger-9/+35
Do not emit the lint `unused_attributes` for *inherent* `#[doc(hidden)]` associated items Fixes #97205 (embarrassing oversight from #96008). `@rustbot` label A-lint
2022-05-20Rollup merge of #97109 - ↵Matthias Krüger-0/+127
TaKO8Ki:fix-misleading-cannot-infer-type-for-type-parameter-error, r=oli-obk Fix misleading `cannot infer type for type parameter` error closes #93198
2022-05-21Add regression test for #81827Yuki Okushi-0/+46
2022-05-20Auto merge of #96833 - cjgillot:ast-lifetimes-single, r=petrochenkovbors-36/+98
Lint single-use lifetimes during AST resolution This PR rewrites `single_use_lifetime` and `unused_lifetime` lints to be based on the AST. We have more information at our disposal, so we can reduce the amount of false positives. Remaining false positive: single-use lifetimes in argument-position impl-trait. I'm waiting for https://github.com/rust-lang/rust/issues/96529 to be fixed to have a clean and proper solution here. Closes https://github.com/rust-lang/rust/issues/54079 Closes https://github.com/rust-lang/rust/issues/55057 Closes https://github.com/rust-lang/rust/issues/55058 Closes https://github.com/rust-lang/rust/issues/60554 Closes https://github.com/rust-lang/rust/issues/69952 r? `@petrochenkov`
2022-05-20report ambiguous type parameters when their parents are impl or fnTakayuki Maeda-0/+90
fix ci error emit err for `impl_item`
2022-05-20Auto merge of #97211 - GuillaumeGomez:rollup-jul7x7e, r=GuillaumeGomezbors-35/+51
Rollup of 6 pull requests Successful merges: - #96565 (rustdoc: show implementations on `#[fundamental]` wrappers) - #97179 (Add new lint to enforce whitespace after keywords) - #97185 (interpret/validity: separately control checking numbers for being init and non-ptr) - #97188 (Remove unneeded null pointer asserts in ptr2int casts) - #97189 (Update .mailmap) - #97192 (Say "last" instead of "rightmost" in the documentation for `std::str:rfind`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-20Rollup merge of #97185 - RalfJung:number-validity, r=oli-obkGuillaume Gomez-35/+35
interpret/validity: separately control checking numbers for being init and non-ptr This lets Miri control this in a more fine-grained way. r? `@oli-obk`
2022-05-20Rollup merge of #96565 - notriddle:notriddle/impl-box, r=camelidGuillaume Gomez-0/+16
rustdoc: show implementations on `#[fundamental]` wrappers Fixes #92940
2022-05-20Lint single-use-lifetimes on the AST.Camille GILLOT-36/+98
2022-05-20update error messagelcnr-7/+7
2022-05-20rewrite `ensure_drop_params_and_item_params_correspond`lcnr-45/+35
2022-05-20Do not warn on inherent doc(hidden) assoc itemsLeón Orell Valerian Liehr-9/+35
2022-05-20Auto merge of #97029 - eholk:drop-tracking-yielding-in-match-guard, ↵bors-0/+12
r=nikomatsakis generator_interior: Count match pattern bindings as borrowed for the whole guard expression The test case `yielding-in-match-guard.rs` was failing with `-Zdrop-tracking` enabled. The reason is that the copy of a local (`y`) was not counted as a borrow in typeck, while MIR did consider this as borrowed. The correct thing to do here is to count pattern bindings are borrowed for the whole guard. Instead, what we were doing is to record the type at the use site of the variable and check if the variable comes from a borrowed pattern. Due to the fix for #57017, we were considering too small of a scope for this variable, which meant it was not counted as borrowed. Because we now unconditionally record the borrow, rather than only for bindings that are used, this PR is also able to remove a lot of the logic around match bindings that was there before. r? `@nikomatsakis`
2022-05-20Auto merge of #97027 - cuviper:yesalias-refcell, r=thomccbors-0/+50
Use pointers in `cell::{Ref,RefMut}` to avoid `noalias` When `Ref` and `RefMut` were based on references, they would get LLVM `noalias` attributes that were incorrect, because that alias guarantee is only true until the guard drops. A `&RefCell` on the same value can get a new borrow that aliases the previous guard, possibly leading to miscompilation. Using `NonNull` pointers in `Ref` and `RefCell` avoids `noalias`. Fixes the library side of #63787, but we still might want to explore language solutions there.
2022-05-19Borrow guard patterns for the body of the guardEric Holk-9/+0
2022-05-19Revert "Count copies of locals as borrowed temporaries"Eric Holk-13/+1
This reverts commit 0d270b5e9f48268735f9a05462df65c9d1039855.
2022-05-19Count copies of locals as borrowed temporariesEric Holk-1/+13
2022-05-19Further reduce test caseEric Holk-9/+5
Thanks to @tmiasko for this one!
2022-05-19Add drop tracking version of yielding-in-match-guard.rsEric Holk-0/+25
2022-05-19bless 32bitRalf Jung-11/+11
2022-05-19interpret/validity: separately control checking numbers for being init and ↵Ralf Jung-24/+24
non-ptr
2022-05-19Rollup merge of #97171 - JohnTitor:issue-88119, r=compiler-errorsDylan DPC-0/+35
Add regression test for #88119 Closes #88119
2022-05-19Rollup merge of #97169 - gimbles:u32-diagnostic, r=petrochenkovDylan DPC-18/+9
Improve `u32 as char` cast diagnostic Fixes #97160
2022-05-19Improve u32 to char diagnosticgimbles-18/+9
2022-05-19Add regression test for #88119Yuki Okushi-0/+35
2022-05-19Auto merge of #97103 - luqmana:asm-unwind-cleanup, r=Amanieu,tmiaskobors-0/+40
Update MIR passes to handle unwinding Inline Asm Some more follow up fixes from https://github.com/rust-lang/rust/pull/95864#issuecomment-1094165398 r? `@Amanieu`
2022-05-18Add mir-opt test for asm_unwind + panic=abortLuqman Aden-0/+40
2022-05-18Auto merge of #97019 - b-naber:transition-to-valtrees-pt1, r=oli-obkbors-6/+12
Transition to valtrees pt1 Compartmentalising https://github.com/rust-lang/rust/pull/96591 as much as possible. r? `@oli-obk`
2022-05-18Auto merge of #96863 - SparrowLii:let, r=michaelwoeristerbors-2/+6
use `hir::Let` in `hir::Guard::IfLet` This PR fixes the FIXME about using `hir::Let` in `hir::Guard::IfLet`
2022-05-18Auto merge of #96800 - nbdd0121:const, r=nagisabors-20/+73
Permit `asm_const` and `asm_sym` to reference generic params Related #96557 These constructs will be allowed: ```rust fn foofoo<const N: usize>() {} unsafe fn foo<const N: usize>() { asm!("/* {0} */", const N); asm!("/* {0} */", const N + 1); asm!("/* {0} */", sym foofoo::<N>); } fn barbar<T>() {} unsafe fn bar<T>() { asm!("/* {0} */", const std::mem::size_of::<T>()); asm!("/* {0} */", const std::mem::size_of::<(T, T)>()); asm!("/* {0} */", sym barbar::<T>); asm!("/* {0} */", sym barbar::<(T, T)>); } ``` `@Amanieu,` I didn't switch inline asms to use `DefKind::InlineAsm`, as I see little value doing that; given that no type inference is needed, it will only make typecking slower and more complex but will have no real gains. I did switch them to follow the same code path as inline asm during symbol resolution, though. The `error: unconstrained generic constant` you mentioned in #76001 is due to the fact that `to_const` will actually add a wfness obligation to the constant, which we don't need for `asm_const`, so I have that removed. `@rustbot` label: +A-inline-assembly +F-asm
2022-05-18Auto merge of #96867 - michaelwoerister:path-prefix-fixes-2, r=davidtwcobors-1/+83
--remap-path-prefix: Fix duplicated path components in debuginfo This PR fixes an issue with `--remap-path-prefix` where path components could appear twice in the remapped version of the path (e.g. https://github.com/rust-lang/rust/issues/78479). The underlying problem was that `--remap-path-prefix` is often used to map an absolute path to something that looks like a relative path, e.g.: ``` --remap-path-prefix=/home/calvin/.cargo/registry/src/github.com-1ecc6299db9ec823=crates.io", ``` and relative paths in debuginfo are interpreted as being relative to the compilation directory. So if Cargo invokes the compiler with `/home/calvin/.cargo/registry/src/github.com-1ecc6299db9ec823/some_crate-0.1.0/src/lib.rs` as input and `/home/calvin/.cargo/registry/src/github.com-1ecc6299db9ec823/some_crate-0.1.0` as the compiler's working directory, then debuginfo will state that the working directory was `crates.io/some_crate-0.1.0` and the file is question was `crates.io/some_crate-0.1.0/src/lib.rs`, which combined gives the path: ``` crates.io/some_crate-0.1.0/crates.io/some_crate-0.1.0/src/lib.rs ``` With this PR the compiler will detect this situation and set up debuginfo in LLVM in a way that makes it strip the duplicated path components when emitting DWARF. The PR also extracts the logic for making remapped paths absolute into a common helper function that is now used by debuginfo too (instead of just during crate metadata generation).
2022-05-18Properly apply path prefix remapping paths emitted into debuginfo.Michael Woerister-1/+83
2022-05-18Rollup merge of #97123 - ricked-twice:issue-96223-clean-fix, r=jackh726Dylan DPC-10/+5
Clean fix for #96223 Okay, so here we are (hopefully) :+1: Closes #96223 Thanks a lot to `@jackh726` for your help and explanation :pray: - Modified `InferCtxt::mk_trait_obligation_with_new_self_ty` to take as argument a `Binder<(TraitPredicate, Ty)>` instead of a `Binder<TraitPredicate>` and a separate `Ty` with no bound vars. - Modified all call places to avoid calling `Binder::no_bounds_var` or `Binder::skip_binder` when it is not safe. r? `@jackh726`
2022-05-18Rollup merge of #96378 - compiler-errors:trait-upcast-error, r=nagisaDylan DPC-2/+4
Mention traits and types involved in unstable trait upcasting Fixes #95972 by printing the traits being upcasted and the types being coerced that cause that upcasting... --- the poor span mentioned in the original issue has nothing to do with trait upcasting diagnostic here... > The original example I had that made me run into this issue had an even longer expression there (multiple chained iterator methods) which just got all highlighted as one big block saying "somewhere here trait coercion is used and it's not allowed". I don't think I can solve that issue in general without fixing the ObligationCauseCode and span that gets passed into Coerce.
2022-05-18Rollup merge of #95979 - lcnr:coherence-docs, r=compiler-errorsDylan DPC-0/+82
update coherence docs, fix generator + opaque type ICE the world is confusing, this makes it slightly less so