Michael Goulet
05f6890b3e
Rename arg_iter to iter_instantiated
2023-07-17 21:04:12 +00:00
Camille GILLOT
87233da5c2
Check entry type as part of item type checking.
2023-07-15 22:02:16 +00:00
Matthias Krüger
0baf4406da
Rollup merge of #113698 - compiler-errors:rpitit-check, r=spastorino
...
Make it clearer that we're just checking for an RPITIT
Tiny nit to use `is_impl_trait_in_trait` more, to make it clearer that we're just checking whether a def-id is an RPITIT, rather than doing something meaningful with the `opt_rpitit_info`.
r? `@spastorino`
2023-07-14 19:33:29 +02:00
Michael Goulet
14672eba8b
Make it clearer that we're just checking for an RPITIT
2023-07-14 15:18:48 +00:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
Mark Rousskov
cc907f80b9
Re-format let-else per rustfmt update
2023-07-12 21:49:27 -04:00
Santiago Pastorino
20429af7a3
Replace RPITIT current impl with new strategy that lowers as a GAT
2023-07-08 18:21:34 -03:00
Michael Goulet
cf1f8c55d5
Rollup merge of #113456 - spastorino:new-rpitit-31, r=compiler-errors
...
Avoid calling report_forbidden_specialization for RPITITs
Fixes #113438
r? ``@compiler-errors``
2023-07-07 22:12:18 -07:00
Santiago Pastorino
24326ee508
Avoid calling report_forbidden_specialization for RPITITs
2023-07-07 16:24:08 -03:00
bors
cb80ff132a
Auto merge of #113245 - lukas-code:unsizing-sanity-check, r=the8472
...
sanity check field offsets in unsizeable structs
As promised in https://github.com/rust-lang/rust/pull/112062#issuecomment-1567494994 , this PR extends the layout sanity checks to ensure that structs fields don't move around when unsizing and prevent issues like https://github.com/rust-lang/rust/issues/112048 in the future. Like most other layout sanity checks, this only runs on compilers with debug assertions enabled.
Here is how it looks when it fails:
```text
error: internal compiler error: compiler/rustc_ty_utils/src/layout.rs:533:21: unsizing GcNode<std::boxed::Box<i32>> changed field order!
Layout { size: Size(32 bytes), align: AbiAndPrefAlign { abi: Align(8 bytes), pref: Align(8 bytes) }, abi: Aggregate { sized: true }, fields: Arbitrary { offsets: [Size(0 bytes), Size(8 bytes), Size(24 bytes)], memory_index: [0, 1, 2] }, largest_niche: Some(Niche { offset: Size(24 bytes), value: Pointer(AddressSpace(0)), valid_range: 1..=18446744073709551615 }), variants: Single { index: 0 } }
Layout { size: Size(24 bytes), align: AbiAndPrefAlign { abi: Align(8 bytes), pref: Align(8 bytes) }, abi: Aggregate { sized: false }, fields: Arbitrary { offsets: [Size(16 bytes), Size(0 bytes), Size(24 bytes)], memory_index: [1, 0, 2] }, largest_niche: None, variants: Single { index: 0 } }
```
r? `@the8472`
2023-07-07 15:42:29 +00:00
Santiago Pastorino
07a230b5a5
Do not assert >1 RPITITs on collect_return_position_impl_trait_in_trait_tys
2023-07-06 17:07:11 -03:00
Lukas Markeffsky
7aa5f39d3b
add helper methods for accessing struct tail
2023-07-06 13:15:05 +00:00
Boxy
12138b8e5e
Move TyCtxt::mk_x
to Ty::new_x
where applicable
2023-07-05 20:27:07 +01:00
Boxy
ddbc774e74
Replace mk_const
with Const::new_x
methods
2023-07-04 14:26:33 +01:00
lcnr
5378f07d64
use deeply_normalize
for assumed_wf_types
2023-07-03 09:12:14 +02:00
Michael Goulet
473c88dfb6
Flip the order of binder instantiation for better diagnostics
2023-06-30 02:17:07 +00:00
Michael Goulet
d567e4f8b6
Error for RPITIT hidden tys that capture more than their trait defn
2023-06-30 02:17:07 +00:00
Santiago Pastorino
d70deac161
Intern OpaqueTy on ItemKind::OpaqueTy
2023-06-29 14:05:10 -03:00
Michael Goulet
fbdef58414
Migrate predicates_of and caller_bounds to Clause
2023-06-26 23:12:03 +00:00
Matthias Krüger
6c7575721f
Rollup merge of #113036 - TaKO8Ki:fix-112094, r=compiler-errors
...
Accept `ReStatic` for RPITIT
Fixes #112094
Regression in 8216b7f229
If there is a better suggestion, I will go with that.
2023-06-25 22:34:32 +02:00
Takayuki Maeda
83722c62b0
accept ReStatic
for RPITIT
...
add an ui test for #112094
2023-06-26 01:11:44 +09:00
bors
1d67eba687
Auto merge of #112891 - oli-obk:impl_trait_in_assoc_tys_cleanup, r=compiler-errors
...
Various impl trait in assoc tys cleanups
r? `@compiler-errors`
All commits except for the last are pure refactorings. 274dab5bd658c97886a8987340bf50ae57900c39 allows struct fields to participate in deciding whether a function has an opaque in its signature.
best reviewed commit by commit
2023-06-23 23:26:38 +00:00
Michael Goulet
46a650f4e0
Migrate item_bounds to ty::Clause
2023-06-22 18:34:23 +00:00
Oli Scherer
c8979e587b
Move opaque_type_origin_unchecked
onto TyCtxt
and re-use it where it was open coded
2023-06-22 14:31:15 +00:00
Michael Goulet
7563909a28
Liberate bound vars properly when suggesting missing AFIT
2023-06-21 16:32:26 +00:00
Nilstrieb
a98c14f3a9
Rollup merge of #112772 - compiler-errors:clauses-1, r=lcnr
...
Add a fully fledged `Clause` type, rename old `Clause` to `ClauseKind`
Does two basic things before I put up a more delicate set of PRs (along the lines of #112714 , but hopefully much cleaner) that migrate existing usages of `ty::Predicate` to `ty::Clause` (`predicates_of`/`item_bounds`/`ParamEnv::caller_bounds`).
1. Rename `Clause` to `ClauseKind`, so it's parallel with `PredicateKind`.
2. Add a new `Clause` type which is parallel to `Predicate`.
* This type exposes `Clause::kind(self) -> Binder<'tcx, ClauseKind<'tcx>>` which is parallel to `Predicate::kind` 😸
The new `Clause` type essentially acts as a newtype wrapper around `Predicate` that asserts that it is specifically a `PredicateKind::Clause`. Turns out from experimentation[^1] that this is not negative performance-wise, which is wonderful, since this a much simpler design than something that requires encoding the discriminant into the alignment bits of a predicate kind, or something else like that...
r? ``@lcnr`` or ``@oli-obk``
[^1]: https://github.com/rust-lang/rust/pull/112714#issuecomment-1595653910
2023-06-21 07:37:01 +02:00
Michael Goulet
be68e9e336
Rollup merge of #112596 - compiler-errors:missing-sig-with-rpitit, r=b-naber
...
Suggest correct signature on missing fn returning RPITIT/AFIT
Add `async` and unpeel the future's output type if the function is async
Fixes #108195
2023-06-19 17:53:34 -07:00
Michael Goulet
fca56a8d2c
s/Clause/ClauseKind
2023-06-19 14:57:42 +00:00
Michael Goulet
6594c75449
Move ConstEvaluatable to Clause
2023-06-17 21:27:13 +00:00
Michael Goulet
52d3fc93f2
Move WF goal to clause
2023-06-17 21:20:20 +00:00
Oli Scherer
f3b7dd6388
Add AliasKind::Weak
for type aliases.
...
Only use it when the type alias contains an opaque type.
Also does wf-checking on such type aliases.
2023-06-16 19:39:48 +00:00
Michael Goulet
bc78d0cbf1
Error on unconstrained lifetime in RPITIT
2023-06-14 05:20:31 +00:00
Michael Goulet
dbee24d949
Suggest correct signature on missing fn returning RPITIT/AFIT
2023-06-13 20:41:15 +00:00
Matthias Krüger
b7706e891d
Rollup merge of #111885 - compiler-errors:rust-call-abi-sized, r=eholk
...
Don't ICE on unsized `extern "rust-call"` call
Conceptually builds on #111864 , but doesn't depend on it.
2023-06-13 07:02:28 +02:00
Matthias Krüger
8747c0ebea
Rollup merge of #109953 - thomcc:thomcc/typeid128, r=WaffleLapkin
...
Use 128 bits for TypeId hash
Preliminary/Draft impl of https://github.com/rust-lang/compiler-team/issues/608
Prior art (probably incomplete list)
- https://github.com/rust-lang/rust/pull/75923
- https://github.com/rust-lang/rust/pull/95845
2023-06-08 12:36:17 +02:00
Dylan DPC
0b002eb906
Rollup merge of #112122 - compiler-errors:next-coherence, r=lcnr
...
Add `-Ztrait-solver=next-coherence`
Flag that conditionally uses the trait solver *only* during coherence, for more testing and/or eventual partial-migration onto the trait solver (in the medium- to long-term).
* This still uses the selection context in some of the coherence methods I think, so it's not "complete". Putting this up for review and/or for further work in-tree.
* I probably need to spend a bit more time making sure that we don't sneakily create any other infcx's during coherence that also need the new solver enabled.
r? `@lcnr`
2023-06-07 18:01:29 +05:30
Michael Goulet
b7095f5572
Don't ICE on unsized rust-call abi call
2023-06-06 20:15:49 +00:00
Michael Goulet
3d4da98273
Make TraitEngine::new use the right solver, add compare mode
2023-06-06 18:43:20 +00:00
lcnr
01aaad3f1f
remove has_error_field
helper method
2023-06-06 09:37:30 +02:00
Matthias Krüger
dcdd867a52
Rollup merge of #112322 - compiler-errors:no-IMPLIED_BOUNDS_ENTAILMENT-if-errs, r=eholk
...
Don't mention `IMPLIED_BOUNDS_ENTAILMENT` if signatures reference error
Fixes #112321
2023-06-05 23:48:00 +02:00
Michael Goulet
0e9e91a95a
Don't mention IMPLIED_BOUNDS_ENTAILMENT if signatures reference error
2023-06-05 21:20:51 +00:00
Oli Scherer
604ffab063
Avoid going through queries if a value of type AssocItem
is already available
2023-06-05 14:22:45 +00:00
Thom Chiovoloni
9e5573a0d2
Use 128 bits for TypeId hash
...
- Switch TypeId to 128 bits
- Hack around the fact that tracing-subscriber dislikes how TypeId is hashed
- Remove lowering of type_id128 from rustc_codegen_llvm
- Remove unnecessary `type_id128` intrinsic (just change return type of `type_id`)
- Only hash the lower 64 bits of the TypeId
- Reword comment
2023-06-04 08:34:48 -07:00
Camille GILLOT
ca4d0d4c24
Separate AnonConst from ConstBlock in HIR.
2023-06-02 21:25:18 +00:00
Matthias Krüger
f121f77d8a
Rollup merge of #112165 - fee1-dead-contrib:rn-defualtness, r=compiler-errors
...
Rename `impl_defaultness` to `defaultness`
Since this isn't just about the `impl`.
2023-06-02 18:12:45 +02:00
bors
8ebf04225d
Auto merge of #112198 - compiler-errors:rollup-o2xe4of, r=compiler-errors
...
Rollup of 7 pull requests
Successful merges:
- #111670 (Require that const param tys implement `ConstParamTy`)
- #111914 (CFI: Fix cfi with async: transform_ty: unexpected GeneratorWitness(Bi…)
- #112030 (Migrate `item_trait_alias` to Askama)
- #112150 (Support 128-bit atomics on all x86_64 Apple targets)
- #112174 (Fix broken link)
- #112190 (Improve comments on `TyCtxt` and `GlobalCtxt`.)
- #112193 (Check tuple elements are `Sized` in `offset_of`)
Failed merges:
- #112071 (Group rfcs tests)
r? `@ghost`
`@rustbot` modify labels: rollup
2023-06-02 07:57:21 +00:00
Michael Goulet
847d50453c
Implement custom diagnostic for ConstParamTy
2023-06-01 18:21:42 +00:00
Boxy
bbf41279fa
Require that const param tys implement ConstParamTy
2023-06-01 18:03:59 +00:00
Deadbeef
4f83717cf7
Use translatable diagnostics in rustc_const_eval
2023-06-01 14:45:18 +00:00
Deadbeef
21bc5cded4
Rename impl_defaultness
to defaultness
2023-06-01 06:14:06 +00:00