Dylan DPC
2fe2975391
Rollup merge of #100081 - RalfJung:unused-unsafe-in-unsafe-fn, r=jackh726
...
never consider unsafe blocks unused if they would be required with deny(unsafe_op_in_unsafe_fn)
Judging from https://github.com/rust-lang/rust/issues/71668#issuecomment-1200317370 the consensus nowadays seems to be that we should never consider an unsafe block unused if it was required with `deny(unsafe_op_in_unsafe_fn)`, no matter whether that lint is actually enabled or not. So let's adjust rustc accordingly.
The first commit does the change, the 2nd does some cleanup.
2022-08-19 12:26:40 +05:30
Mark Rousskov
154a09dd91
Adjust cfgs
2022-08-12 16:28:15 -04:00
Dylan DPC
561ea0a746
Rollup merge of #99110 - audunhalland:match_has_guard_from_candidate, r=pnkfelix
...
Determine match_has_guard from candidates instead of looking up thir table again
Currently looking through mir build of matches because of interest in deref patterns. Finding some micro-optimizable things.
2022-08-11 22:46:57 +05:30
Matthias Krüger
b11b8d6939
Rollup merge of #100240 - cjgillot:noice-structural-match, r=davidtwco
...
Fail gracefully when const pattern is not structural match.
Fixes https://github.com/rust-lang/rust/issues/82909
2022-08-10 00:00:30 +02:00
Takayuki Maeda
56ec5bec1e
suggest adding an appropriate missing pattern excluding comments
2022-08-09 14:27:26 +09:00
Camille GILLOT
aa031f9fbf
Fail gracefully when const pattern is not structural match.
2022-08-07 19:12:33 +02:00
Matthias Krüger
eabf1a2e8e
Rollup merge of #100132 - compiler-errors:issue-100103, r=tmiasko
...
Use (actually) dummy place for let-else divergence
Fixes #100103
2022-08-06 16:15:56 +02:00
Matthias Krüger
6b938c8491
Rollup merge of #100093 - wcampbell0x2a:unused-parens-for-match-arms, r=petrochenkov
...
Enable unused_parens for match arms
Fixes: https://github.com/rust-lang/rust/issues/92751
Currently I can't get the `stderr` to work with `./x.py test`, but this should fix the issue. Help would be appreciated!
2022-08-04 22:25:02 +02:00
wcampbell
8dd44f1af4
Enable unused_parens for match arms
2022-08-04 07:16:39 -04:00
bors
2f2243c9b6
Auto merge of #99843 - oli-obk:is_useful_perf, r=compiler-errors
...
Some `is_useful` cleanups
#98582 was reverted because it was a perf regression.
https://github.com/rust-lang/rust/pull/99806 reintroduces the changes, but this PR picks individual ones that have no regressions.
2022-08-04 07:35:33 +00:00
Michael Goulet
47a7a91c96
Use (actually) dummy place for let-else divergence
2022-08-04 05:08:09 +00:00
Ralf Jung
86e2ca3088
add link to discussion
2022-08-02 18:57:22 -04:00
Ralf Jung
ee3fc9dff8
never consider unsafe blocks unused if they would be required with unsafe_op_in_unsafe_fn
2022-08-02 17:09:41 -04:00
Camille GILLOT
957548183d
Remove trait_of_item query.
2022-08-01 21:39:26 +02:00
Camille GILLOT
d7ea161b7e
Remove DefId from AssocItemContainer.
2022-08-01 21:38:45 +02:00
Matthias Krüger
8db3d7cfb6
Rollup merge of #99911 - cjgillot:no-guess, r=davidtwco
...
Remove some uses of `guess_head_span`
That function cuts a span at the first occurrence of `{`. Using `def_span` is almost always more precise.
2022-08-01 16:49:31 +02:00
Dylan DPC
403c1b3802
Rollup merge of #99186 - camsteffen:closure-localdefid, r=cjgillot
...
Use LocalDefId for closures more
2022-07-31 17:36:40 +05:30
Cameron Steffen
cf2433a74f
Use LocalDefId for closures more
2022-07-30 15:59:17 -05:00
Dylan DPC
c668820365
Rollup merge of #99311 - kckeiks:clean-up-body-owner-methods, r=cjgillot
...
change maybe_body_owned_by to take local def id
Issue https://github.com/rust-lang/rust/issues/96341
r? `@cjgillot`
2022-07-30 20:39:46 +05:30
Yuki Okushi
955091be8f
Rollup merge of #99518 - dingxiangfei2009:let-else-additional-tests, r=oli-obk
...
Let-else: break out scopes when a let-else pattern fails to match
This PR will commit to a new behavior so that values from initializer expressions are dropped earlier when a let-else pattern fails to match.
Fix #98672 .
Close #93951 .
cc `@camsteffen` `@est31`
2022-07-30 07:39:49 +09:00
Miguel Guarniz
0c609a4c1f
Change enclosing_body_owner to return LocalDefId
...
Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
2022-07-29 18:26:10 -04:00
Miguel Guarniz
16513d689e
Rename local_did to def_id
...
Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
2022-07-29 18:26:10 -04:00
Miguel Guarniz
25bdc8965e
Change maybe_body_owned_by to take local def id
...
Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
2022-07-29 18:25:58 -04:00
Camille GILLOT
a09b7ebfd3
Use DefKind instead of FnKind for recursion lint.
2022-07-29 18:10:43 +02:00
Camille GILLOT
6733bc3066
Remove guess_head_span.
2022-07-28 23:14:04 +02:00
Oli Scherer
803d374f9b
Pass PatCtxt instead of passing MatchCtxt + Ty separately
2022-07-28 08:49:39 +00:00
Oli Scherer
544de44a6b
Don't pass (the rather large) PatCtxt
by value
2022-07-28 08:44:49 +00:00
Oli Scherer
970ff3d45d
Move constructor into the branch that actually uses it
2022-07-28 08:33:36 +00:00
Guillaume Gomez
9e7b7d5e1c
Rollup merge of #99651 - compiler-errors:fn-and-raw-ptr-in-const-generics, r=oli-obk
...
Deeply deny fn and raw ptrs in const generics
I think this is right -- just because we wrap a fn ptr in a wrapper type does not mean we should allow it in a const parameter.
We now reject both of these in the same way:
```
#![feature(adt_const_params)]
#[derive(Eq, PartialEq)]
struct Wrapper();
fn foo<const W: Wrapper>() {}
fn foo2<const F: fn()>() {}
```
This does regress one test (`src/test/ui/consts/refs_check_const_eq-issue-88384.stderr`), but I'm not sure it should've passed in the first place.
cc: ``@b-naber`` who introduced that test^
fixes #99641
2022-07-27 17:55:04 +02:00
Takayuki Maeda
051e98b7bf
avoid &str
/Symbol
to String
conversions
2022-07-25 22:40:00 +09:00
Michael Goulet
10b69ab0d2
Remove non-descriptive boolean from search_for_structural_match_violation
2022-07-25 03:39:23 +00:00
Michael Goulet
c1f54c30bb
Get rid of redundant NonStructuralMatchTyKind
2022-07-25 03:39:22 +00:00
Michael Goulet
1152e70363
Deeply deny fn and raw ptrs in const generics
2022-07-25 03:39:22 +00:00
Ding Xiang Fei
9b56640106
break out scopes when let-else fails to match
2022-07-21 00:35:43 +08:00
Oli Scherer
4a742a691e
Revert "Rollup merge of #98582 - oli-obk:unconstrained_opaque_type, r=estebank"
...
This reverts commit 6f8fb911ad
, reversing
changes made to 7210e46dc6
.
2022-07-20 07:55:58 +00:00
Michael Goulet
6d2bd541e0
use body's param-env when checking if type needs drop
2022-07-17 10:56:12 -07:00
Caio
3266460749
Stabilize let_chains
2022-07-16 20:17:58 -03:00
Oli Scherer
57e9f7a556
Infer wildcard type from other patterns at every pattern level
2022-07-15 15:56:17 +00:00
Oli Scherer
92e470a1de
Move constructor into the branch that actually uses it
2022-07-15 15:56:17 +00:00
Oli Scherer
ea68ce7fac
Revert a hack that only ever worked on level deep
2022-07-15 15:56:17 +00:00
Oli Scherer
728c7e8bda
Allow destructuring opaque types, since the patterns constrain the opaque types
2022-07-15 15:56:17 +00:00
Oli Scherer
12457f814c
Some tracing helpers
2022-07-15 15:56:16 +00:00
Oli Scherer
0c6918fe21
Reuse a helper method instead of manually rolling it
2022-07-15 15:56:16 +00:00
Oli Scherer
7a8a048b58
Remove early return that would likely have caused miscompilations if it ever happened
2022-07-15 15:56:16 +00:00
Oli Scherer
eeb10335ce
Pass one argument instead of fetching two fields of it at every call site
2022-07-15 15:56:16 +00:00
Oli Scherer
a034446fae
Add some tracing instrumentation
2022-07-15 15:56:16 +00:00
Oli Scherer
84a444a1f4
Introduce opaque type to hidden type projection
2022-07-15 15:49:22 +00:00
bors
f1a8854f9b
Auto merge of #99231 - Dylan-DPC:rollup-0tl8c0o, r=Dylan-DPC
...
Rollup of 5 pull requests
Successful merges:
- #97720 (Always create elided lifetime parameters for functions)
- #98315 (Stabilize `core::ffi:c_*` and rexport in `std::ffi`)
- #98705 (Implement `for<>` lifetime binder for closures)
- #99126 (remove allow(rustc::potential_query_instability) in rustc_span)
- #99139 (Give a better error when `x dist` fails for an optional tool)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-07-14 11:00:30 +00:00
Dylan DPC
e5a86d7358
Rollup merge of #98705 - WaffleLapkin:closure_binder, r=cjgillot
...
Implement `for<>` lifetime binder for closures
This PR implements RFC 3216 ([TI](https://github.com/rust-lang/rust/issues/97362 )) and allows code like the following:
```rust
let _f = for<'a, 'b> |a: &'a A, b: &'b B| -> &'b C { b.c(a) };
// ^^^^^^^^^^^--- new!
```
cc ``@Aaron1011`` ``@cjgillot``
2022-07-14 14:14:21 +05:30
bors
0ed9c64c3e
Auto merge of #98975 - jyn514:unstable_opts, r=wesleywiser
...
Rename `debugging_opts` to `unstable_opts`
This is no longer used only for debugging options (e.g. `-Zoutput-width`, `-Zallow-features`).
Rename it to be more clear.
cc https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Codegen.20options.20.2F.20debugging.20options
r? `@Amanieu` cc `@nikic` `@joshtriplett`
2022-07-14 08:14:31 +00:00