Matthias Krüger
576bf82702
Rollup merge of #114022 - oli-obk:tait_ice_alias_field_projection, r=cjgillot
...
Perform OpaqueCast field projection on HIR, too.
fixes #105819
This is necessary for closure captures in 2021 edition, as they capture individual fields, not the full mentioned variables. So it may try to capture a field of an opaque (because the hidden type is known to be something with a field).
See https://github.com/rust-lang/rust/pull/99806 for when and why we added OpaqueCast to MIR.
2023-08-04 09:18:58 +02:00
León Orell Valerian Liehr
9213aec762
Lower generic const items to HIR
2023-07-28 22:21:40 +02:00
Matthias Krüger
fa21a8c6f8
Rollup merge of #114075 - matthiaskrgr:fmt_args_rustc_3, r=wesleywiser
...
inline format!() args from rustc_codegen_llvm to the end (4)
r? `@WaffleLapkin`
2023-07-27 06:04:13 +02:00
Wesley Wiser
15e9f56088
Replace in-tree rustc_apfloat
with the new version of the crate
2023-07-26 10:20:15 -04:00
Matthias Krüger
c64ef5e070
inline format!() args from rustc_codegen_llvm to the end (4)
...
r? @WaffleLapkin
2023-07-25 23:20:28 +02:00
Oli Scherer
e390dc9c36
Perform OpaqueCast field projection on HIR, too.
...
This is necessary for closure captures in 2021 edition, as they capture individual fields, not the full mentioned variables. So it may try to capture a field of an opaque (because the hidden type is known to be something with a field).
2023-07-24 15:19:26 +00:00
Michael Goulet
846cc63e38
Make it clearer that edition functions are >=, not ==
2023-07-19 16:38:35 +00:00
syvb
2cfe8ed37d
Implement "items do not inherit unsafety" for THIR unsafeck
2023-07-15 11:59:38 -04:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
bors
fe03b46ee4
Auto merge of #113609 - nnethercote:maybe_lint_level_root_bounded-cache, r=cjgillot
...
Add a cache for `maybe_lint_level_root_bounded`
`maybe_lint_level_root_bounded` is called many times and traces node sub-paths many times. This PR adds a cache that lets many of these tracings be skipped, avoiding lots of calls to functions like `Map::attrs` and `Map::parent_id`.
r? `@cjgillot`
2023-07-14 05:30:53 +00:00
Mark Rousskov
cc907f80b9
Re-format let-else per rustfmt update
2023-07-12 21:49:27 -04:00
Nicholas Nethercote
667d75e546
Add a cache for maybe_lint_level_root_bounded
.
...
It's a nice speed win.
2023-07-13 09:32:09 +10:00
Nicholas Nethercote
f234dc3e1c
Move maybe_lint_level_root_bounded
.
...
From `TyCtxt` to the MIR `Builder`. This will allow us to add a cache to
`Builder` and use it from `maybe_lint_level_root_bounded`.
2023-07-12 10:02:13 +10:00
Nicholas Nethercote
36458109ae
Shorten some overlong comment lines.
...
It's annoying that these wrap in a 100-char terminal window.
2023-07-12 09:16:31 +10:00
Michael Goulet
fe870424a7
Do not set up wrong span for adjustments
2023-07-10 20:09:26 +00:00
Matthias Krüger
b637be7a17
Rollup merge of #113217 - ericmarkmartin:lower-type-relative-ctor-to-adt, r=cjgillot
...
resolve typerelative ctors to adt
Associated issue: #110508
r? ``@spastorino``
2023-07-08 20:53:29 +02:00
Nilstrieb
2beabbbf6f
Rename adjustment::PointerCast
and variants using it to PointerCoercion
...
It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related
casts, when in reality their just used to share a some enum variants. Make it clear there these
are only coercion to make it clear why only some pointer related "casts" are in the enum.
2023-07-07 18:17:16 +02:00
Boxy
12138b8e5e
Move TyCtxt::mk_x
to Ty::new_x
where applicable
2023-07-05 20:27:07 +01:00
Boxy
d30f56dbf2
Replace const_error
methods with Const::new_error
2023-07-04 14:46:32 +01:00
Boxy
ddbc774e74
Replace mk_const
with Const::new_x
methods
2023-07-04 14:26:33 +01:00
Eric Mark Martin
07b1912acc
refactor
2023-07-02 18:44:26 -04:00
Eric Mark Martin
76a7772759
resolve typerelative ctors to adt
2023-06-30 08:26:56 -04:00
Eric Mark Martin
96bd056695
remove cruft
2023-06-28 01:55:32 -04:00
Eric Mark Martin
2017a176eb
use translatable subdiagnostic
2023-06-28 01:51:53 -04:00
Eric Mark Martin
fbd1e0252f
add note for non-exhaustive matches with guards
2023-06-28 01:51:53 -04:00
Matthias Krüger
4571be358b
Rollup merge of #113093 - WaffleLapkin:become_unuwuable_in_thir, r=Nilstrieb
...
`thir`: Add `Become` expression kind
This PR is pretty small and just adds `thir::ExprKind::Become`. I didn't include the checks that will be done on thir, since they are much more complicated and can be done in parallel with with MIR (or, well, at least I believe they can).
r? `@Nilstrieb`
2023-06-27 17:48:47 +02:00
Maybe Waffle
c60fb12a35
thir
: Add Become
expression kind
2023-06-27 09:03:05 +00:00
Matthias Krüger
a144272eee
Rollup merge of #113039 - matthiaskrgr:custom_mir, r=compiler-errors
...
make custom mir ICE a bit nicer
2023-06-27 07:01:32 +02:00
bors
b9ad9b78a2
Auto merge of #112693 - ericmarkmartin:use-more-placeref, r=spastorino
...
Use PlaceRef abstractions more often
Associated issue: https://github.com/rust-lang/rust/issues/80647
r? `@spastorino`
2023-06-27 00:34:49 +00:00
Matthias Krüger
c6e6ceb078
make custom mir ICE a bit nicer
2023-06-26 19:23:22 +02:00
Maybe Waffle
ccb71ff424
hir
: Add Become
expression kind
2023-06-26 08:56:32 +00:00
Eric Mark Martin
c07c10d1e4
use PlaceRef abstractions more consistently
2023-06-25 20:38:01 -04:00
Nilstrieb
34c8e53d7a
Rollup merge of #112759 - cjgillot:closure-names, r=oli-obk
...
Make closure_saved_names_of_captured_variables a query.
As we will start removing debuginfo during MIR optimizations, we need to keep them somewhere.
2023-06-21 07:37:01 +02:00
Ziru Niu
a52cc0a8c9
address most easy comments
2023-06-20 20:55:31 +08:00
Ziru Niu
8fb4c41f35
merge BorrowKind::Unique
into BorrowKind::Mut
2023-06-20 20:55:31 +08:00
Michael Goulet
31d1fbf8d2
Rollup merge of #112232 - fee1-dead-contrib:match-eq-const-msg, r=b-naber
...
Better error for non const `PartialEq` call generated by `match`
Resolves #90237
2023-06-19 17:53:33 -07:00
Camille GILLOT
689607e7a3
Remove duplicated comment.
2023-06-19 16:52:12 +00:00
Camille GILLOT
7d5b2e4926
Make closure_saved_names_of_captured_variables a query.
2023-06-19 16:50:52 +00:00
Deadbeef
89c24af133
Better error for non const PartialEq
call generated by match
2023-06-18 05:24:38 +00:00
Oli Scherer
0f7174a02a
Re-use the deref-pattern recursion instead of duplicating the logic
2023-06-16 15:39:12 +00:00
许杰友 Jieyou Xu (Joe)
55b4549602
Show note for type ascription interpreted as a constant pattern, not a new variable
...
Given the code
```rust
pub fn main() {
const y: i32 = 4;
let y: i32 = 3;
}
```
`y` in the let binding is actually interpreted as a constant pattern
and is not a new variable, causing confusing diagnostics about
refutable patterns in local binding.
This commit extends the note for type ascription as a constant pattern
to `AscribeUserType` patterns as well.
2023-06-04 20:49:30 +08:00
Camille GILLOT
ca4d0d4c24
Separate AnonConst from ConstBlock in HIR.
2023-06-02 21:25:18 +00:00
Oli Scherer
81b07edde8
Inline from_inline_const into its sole call site
2023-05-31 14:07:16 +00:00
Oli Scherer
c4d5dded57
Explain and simplify valtree -> mir-const fallback
2023-05-31 14:07:16 +00:00
Oli Scherer
9cf7810078
bug!
message nit
2023-05-31 14:07:15 +00:00
Oli Scherer
bd4197cbf9
Simplify an if let Some
to a ?
2023-05-31 14:07:15 +00:00
Oli Scherer
1722aa79ea
Remove some dead code
2023-05-31 14:07:15 +00:00
Oli Scherer
4ca87073f6
Remove lit_to_mir_constant
query
2023-05-31 14:07:15 +00:00
Oli Scherer
aa3a1862ba
Remove deref_mir_constant
2023-05-31 14:07:15 +00:00
Oli Scherer
d030ece6f7
Only rewrite valtree-constants to patterns and keep other constants opaque
2023-05-31 14:02:57 +00:00