Matthias Krüger
7357cfbf3d
Rollup merge of #105147 - nbdd0121:inline_const_unsafe, r=oli-obk
...
Allow unsafe through inline const
Handle similar to closures.
Address https://github.com/rust-lang/rust/pull/104087#issuecomment-1324173328
Note that this PR does not fix the issue for `unsafe { [0; function_requiring_unsafe()] }`. This is fundamentally unfixable for MIR unsafeck IMO.
This PR also does not fix unsafety checking for inline const in pattern position. It actually breaks it, allowing unsafe functions to be used in inline const in pattern position without unsafe blocks. Inline const in pattern position is not visible in MIR so ignored by MIR unsafety checking (currently it is also not checked by borrow checker, which is the reason why it's considered an incomplete feature).
`@rustbot` label: +T-lang +F-inline_const
2022-12-13 19:57:09 +01:00
Gary Guo
d6dc9124b7
Extract shared logic into a new function
2022-12-13 02:34:43 +00:00
Gary Guo
5c58a1b003
Remove unnecessary recursive call to parent unsafeck
...
All bodies are unsafe checked anyway. Current MIR unsafeck also just
returns for closures.
2022-12-13 01:38:38 +00:00
Gary Guo
adf1717219
Ensure valid local_data is set for custom mir building
...
MIR unsafety checking requires this to be valid
2022-12-13 01:38:38 +00:00
Gary Guo
aa5af2a003
Allow unsafe through inline const for THIR unsafety checker
...
The closure handling code is changed slightly to avoid allocation
when THIR building failed.
2022-12-13 01:38:38 +00:00
Matthias Krüger
666366444c
Rollup merge of #105615 - WaffleLapkin:remove_opt_scope_span_mention, r=compiler-errors
...
Fixup method doc that mentions removed param
The param was removed in https://github.com/rust-lang/rust/pull/61872 (101a2f59b4
)
2022-12-12 19:20:36 +01:00
Maybe Waffle
613c1216b7
Fixup method doc that mentions removed param
2022-12-12 15:43:04 +00:00
bors
2cd2070af7
Auto merge of #105160 - nnethercote:rm-Lit-token_lit, r=petrochenkov
...
Remove `token::Lit` from `ast::MetaItemLit`.
Currently `ast::MetaItemLit` represents the literal kind twice. This PR removes that redundancy. Best reviewed one commit at a time.
r? `@petrochenkov`
2022-12-12 05:16:50 +00:00
Matthias Krüger
2daa3bcbc2
Rollup merge of #105537 - kadiwa4:remove_some_imports, r=fee1-dead
...
compiler: remove unnecessary imports and qualified paths
Some of these imports were necessary before Edition 2021, others were already in the prelude.
I hope it's fine that this PR is so spread-out across files :/
2022-12-11 09:51:57 +01:00
KaDiWa
9bc69925cb
compiler: remove unnecessary imports and qualified paths
2022-12-10 18:45:34 +01:00
Jakob Degen
9fb8da8f8f
Remove unneeded field from SwitchTargets
2022-12-09 04:53:10 -08:00
Matthias Krüger
3bcfa4c459
Rollup merge of #105267 - compiler-errors:issue-104613, r=oli-obk
...
Don't ICE in ExprUseVisitor on FRU for non-existent struct
Fixes #104613
Fixes #105202
2022-12-07 15:39:06 +01:00
Will Crichton
d595884302
Move -Z maximal-hir-to-mir-coverage implementation to new maybe_new_source_scope
method
2022-12-05 12:47:44 -08:00
Michael Goulet
26b24cd755
drive-by: move field_index to typeck results
2022-12-04 17:59:21 +00:00
bors
fd02567705
Auto merge of #105121 - oli-obk:simpler-cheaper-dump_mir, r=nnethercote
...
Cheaper `dump_mir` take two
alternative to #105083
r? `@nnethercote`
2022-12-04 05:47:10 +00:00
Oli Scherer
c7e94b0efd
Use zero based indexing for pass_count
2022-12-02 15:55:24 +00:00
Nicholas Nethercote
a7f35c42d4
Add StrStyle
to ast::LitKind::ByteStr
.
...
This is required to distinguish between cooked and raw byte string
literals in an `ast::LitKind`, without referring to an adjacent
`token::Lit`. It's a prerequisite for the next commit.
2022-12-02 10:38:58 +11:00
Jakob Degen
5a34dbf193
Improve spans in custom mir
2022-11-29 19:27:26 -08:00
Jakob Degen
52ce1f7697
Support statics in custom mir
2022-11-29 19:27:26 -08:00
Jakob Degen
7578100317
Support most constant kinds in custom mir
2022-11-29 19:26:04 -08:00
Maybe Waffle
f4d00fe785
Remove Const::from_value
...
...it's just `mk_const` but without the sparcles
2022-11-28 17:28:30 +00:00
Maybe Waffle
26b87bf8ff
Simplify calls to tcx.mk_const
...
`mk_const(ty::ConstKind::X(...), ty)` can now be simplified to
`mk_cosnt(..., ty)`.
I searched with the following regex: \mk_const\([\n\s]*(ty::)?ConstKind\
I've left `ty::ConstKind::{Bound, Error}` as-is, they seem clearer this
way.
2022-11-28 17:27:20 +00:00
Maybe Waffle
1d42936b18
Prefer doc comments over //
-comments in compiler
2022-11-27 11:19:04 +00:00
Matthias Krüger
5197ef66b7
Rollup merge of #103908 - estebank:consider-cloning, r=compiler-errors
...
Suggest `.clone()` or `ref binding` on E0382
2022-11-24 08:42:33 +01:00
bors
872631d0f0
Auto merge of #104507 - WaffleLapkin:asderefsyou, r=wesleywiser
...
Use `as_deref` in compiler (but only where it makes sense)
This simplifies some code :3
(there are some changes that are not exacly `as_deref`, but more like "clever `Option`/`Result` method use")
2022-11-24 00:17:35 +00:00
Esteban Küber
3a471b5fd8
Account for x @ y
and suggest ref x @ ref y
2022-11-23 12:17:48 -08:00
bors
80b3c6dbde
Auto merge of #103947 - camsteffen:place-clones, r=cjgillot
...
Reduce `PlaceBuilder` cloning
Some API tweaks with an eye towards reducing clones.
2022-11-23 13:13:50 +00:00
bors
66ccf36f16
Auto merge of #104711 - Dylan-DPC:rollup-gkw1qr8, r=Dylan-DPC
...
Rollup of 6 pull requests
Successful merges:
- #104295 (Check generics parity before collecting return-position `impl Trait`s in trait)
- #104464 (Reduce exceptions overallocation on non Windows x86_64)
- #104615 (Create def_id for async fns during lowering)
- #104669 (Only declare bindings for if-let guards once per arm)
- #104701 (Remove a lifetime resolution hack from `compare_predicate_entailment`)
- #104710 (disable strict-provenance-violating doctests in Miri)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-22 13:18:45 +00:00
Dylan DPC
d29491aba0
Rollup merge of #104669 - LeSeulArtichaut:88015-if-let-guard-bindings, r=cjgillot
...
Only declare bindings for if-let guards once per arm
Currently, each candidate for a match arm uses separate locals for the bindings in the if-let guard, causing problems (#88015 ) when those branches converge in the arm body.
Fixes #88015 (🤞 )
2022-11-22 16:36:38 +05:30
bors
b7463e8bdb
Auto merge of #103578 - petrochenkov:nofict, r=nagisa
...
Unreserve braced enum variants in value namespace
With this PR braced enum variants (`enum E { V { /*...*/ } }`) no longer take a slot in value namespace, so the special case mentioned in the note in https://github.com/rust-lang/rfcs/blob/master/text/1506-adt-kinds.md#braced-structs is removed.
Report - https://github.com/rust-lang/rust/pull/103578#issuecomment-1292594900 .
2022-11-22 10:17:09 +00:00
Oli Scherer
c2ecd8f1f6
merge self type and substs in trait_method
2022-11-21 20:41:17 +00:00
Oli Scherer
7658e0fccf
Stop passing the self-type as a separate argument.
2022-11-21 20:39:46 +00:00
Oli Scherer
4d9451b1d1
Fix an ICE that I just made worse
2022-11-21 20:36:15 +00:00
Oli Scherer
25c4760b5d
Some cleanup around trait_method lookup
2022-11-21 20:34:56 +00:00
Oli Scherer
9e4c3f41c1
Use iterators instead of slices at more sites
2022-11-21 20:34:28 +00:00
Oli Scherer
ec8d01fdcc
Allow iterators instead of requiring slices that will get turned into iterators
2022-11-21 20:33:55 +00:00
Oli Scherer
6f77c97b38
Assert that various types have the right amount of generic args and fix the sites that used the wrong amount
2022-11-21 20:31:59 +00:00
Oli Scherer
0c47deed9f
Reduce the amount of passed-around arguments that will get merged into one later anyway
2022-11-21 20:28:48 +00:00
Vadim Petrochenkov
7a5376d23c
Unreserve braced enum variants in value namespace
2022-11-21 22:40:06 +03:00
Léo Lanteri Thauvin
baa59d1a77
Only declare bindings for if-let guards once per arm
2022-11-21 12:45:29 +01:00
Cameron Steffen
cc8dddbac9
Factor out conservative_is_privately_uninhabited
2022-11-20 19:04:11 -06:00
Cameron Steffen
34cbe72780
Change to Ty::is_inhabited_from
2022-11-20 19:04:11 -06:00
Matthias Krüger
820a41580e
Rollup merge of #104564 - RalfJung:either, r=oli-obk
...
interpret: use Either over Result when it is not representing an error condition
r? `@oli-obk`
2022-11-20 18:21:48 +01:00
Ralf Jung
09a887cebf
review feedback
2022-11-18 14:24:48 +01:00
Ralf Jung
4101889786
interpret: use Either over Result when it is not representing an error condition
2022-11-18 10:18:32 +01:00
Deadbeef
bc51f8783c
rename to string_deref_patterns
2022-11-18 06:16:20 +00:00
Cameron Steffen
9cf6ce070d
Remove more PlaceBuilder clones
2022-11-17 19:01:05 -06:00
Cameron Steffen
105abe39c0
Replace into_place with to_place
2022-11-17 19:01:05 -06:00
Cameron Steffen
be5b7778c8
Replace try_upvars_resolved with try_to_place
2022-11-17 19:01:05 -06:00
Cameron Steffen
1c819792a7
Introduce PlaceBuilder::resolve_upvar by ref
2022-11-17 19:01:05 -06:00