Deadbeef
fdf7d01088
Improve selection errors for ~const trait bounds
2022-01-26 00:48:01 +11:00
Michael Goulet
b7e4433974
Foreign types are trivially drop
...
- Also rename a trivial_const_drop to match style of other functions in
the util module.
- Also add a test for `const Drop` that doesn't depend on a `~const`
bound.
- Also comment a bit why we remove the const bound during dropck impl
check.
2022-01-19 20:07:04 -08:00
Michael Goulet
0eccd5feef
skip some layers in const drop confirmation
2022-01-19 01:28:14 -08:00
Michael Goulet
e3f01b2b6f
never type is const Drop
2022-01-19 00:40:05 -08:00
Michael Goulet
6ed42a7ca4
Check const Drop impls considering ConstIfConst bounds
2022-01-18 01:44:46 -08:00
Matthias Krüger
9835b90c91
Rollup merge of #92710 - jackh726:issue-92280, r=nikomatsakis
...
Include Projections when elaborating TypeOutlives
Fixes #92280
In `Elaborator`, we elaborate that `Foo<<Bar as Baz>::Assoc>: 'a` -> `<Bar as Baz>::Assoc: 'a`. This is the same rule that would be applied to any other `Param`. If there are escaping vars, we continue to do nothing.
r? `@nikomatsakis`
2022-01-16 16:58:17 +01:00
Ellen
71bbb603f4
initial revert
2022-01-15 01:16:55 +00:00
Jack Huey
ad57295fc9
Elaborate param_env predicates when checking if type outlives involving projection holds
2022-01-10 00:29:06 -05:00
Deadbeef
77297e5f1c
normalize env constness for nested obligations
2021-12-25 00:33:23 +08:00
Deadbeef
84b1d859c8
Revert "Auto merge of #91491 - spastorino:revert-91354, r=oli-obk"
...
This reverts commit ff2439b7b9 , reversing
changes made to 2a9e0831d6 .
2021-12-12 12:34:46 +08:00
Santiago Pastorino
85b723c4e6
Revert "Auto merge of #91354 - fee1-dead:const_env, r=spastorino"
...
This reverts commit 18bb8c61a9 , reversing
changes made to d9baa36190 .
2021-12-03 10:11:21 -03:00
Oli Scherer
a9a79f657c
Completely remove ConstnessAnd
2021-11-29 21:19:49 +08:00
Oli Scherer
a848c4ba3f
Avoid storing the ImplPolarity and Constness next to a TraitRef and use TraitPredicate instead
2021-11-29 21:19:49 +08:00
bors
18cae2680f
Auto merge of #88441 - jackh726:closure_norm, r=nikomatsakis
...
Normalize obligations for closure confirmation
Based on #90017
Fixes #74261
Fixes #71955
Fixes #88459
r? `@nikomatsakis`
2021-11-06 01:12:39 +00:00
lcnr
b40aa64e48
stabilize relaxed_struct_unsize
2021-10-30 15:56:02 +02:00
Santiago Pastorino
8b0bfb0dcb
Consider negative polarity on overlap check
2021-10-20 12:10:45 -03:00
jackh726
cacc3ee801
Normalize obligations for closure confirmation
2021-10-18 12:35:42 -04:00
Manish Goregaokar
743e842afb
Rollup merge of #88963 - fee1-dead:const-iterator, r=oli-obk
...
Coerce const FnDefs to implement const Fn traits
You can now pass a FnDef to a function expecting `F` where `F: ~const FnTrait`.
r? ``@oli-obk``
``@rustbot`` label T-compiler F-const_trait_impl
2021-10-01 14:46:48 -07:00
Oli Scherer
9b5aa063d8
More tracing instrumentation
2021-09-28 12:28:22 +00:00
jackh726
c065f57111
Remove ToPolyTraitRef impl for TraitRef
2021-09-15 22:55:10 -04:00
jackh726
be76bdf905
Remove ToPredicate impls that use Binder::dummy
2021-09-15 20:54:50 -04:00
Deadbeef
f8aa73d3dd
Coerce const FnDefs to implement const Fn traits
2021-09-15 11:48:27 +00:00
Deadbeef
a13b13ff46
Const drop selection candidates
2021-09-09 05:21:31 +00:00
Deadbeef
80e1ee5aee
Add ty::BoundConstness
2021-08-27 06:49:18 +00:00
lcnr
cc47998e28
add tcx to fn walk
2021-08-26 11:00:30 +02:00
Frank Steffahn
bf88b113ea
Fix typos “a”→“an”
2021-08-22 15:35:11 +02:00
Charles Lew
6b1c52ff25
Fold vtable_trait_upcasting_coercion_new_vptr_slot logic into obligation processing.
2021-08-18 13:00:27 +08:00
Charles Lew
1e605023ec
Properly generate multiple candidates for trait upcasting coercion.
2021-08-18 13:00:27 +08:00
Charles Lew
fb4e0a0972
Implement trait upcasting coercion type-checking.
2021-07-31 00:51:39 +08:00
Charles Lew
a86d3a7e45
Refactor to make interpreter and codegen backend neutral to vtable internal representation.
2021-06-15 01:59:00 +08:00
Jack Huey
857cb4de20
Make traits with GATs not object safe
2021-04-27 14:34:23 -04:00
Jack Huey
62a49c3bb8
Add tcx lifetime to Binder
2021-03-31 10:13:57 -04:00
Jack Huey
4955d755d3
Some rebinds and dummys
2021-03-31 10:05:32 -04:00
Simon Sapin
696b239f72
Add ptr::Pointee trait (for all types) and ptr::metadata function
...
RFC: https://github.com/rust-lang/rfcs/pull/2580
2021-02-15 14:27:12 +01:00
Bastian Kauschke
031cce8cfc
add relaxed_struct_unsize feature gate
2021-02-04 00:00:41 +01:00
Bastian Kauschke
50e394a05e
relax adt unsizing requirements
2021-02-04 00:00:28 +01:00
Jack Huey
3dea68de1d
Review changes
2021-01-16 18:56:37 -05:00
bors
1b6b06a03a
Auto merge of #80132 - matthewjasper:revert-eval-order, r=nikomatsakis
...
Revert change to trait evaluation order
This change breaks some code and doesn't appear to enable any new code.
closes #79902
r? `@nikomatsakis`
2020-12-19 16:20:22 +00:00
Jack Huey
5e7095850c
More rebinds
2020-12-19 04:26:35 -05:00
Matthew Jasper
3e31ffda97
Revert change to evaluation order
...
This change breaks some code and doesn't appear to enable any new code.
2020-12-17 20:16:10 +00:00
bors
eb4fc71dc9
Auto merge of #79945 - jackh726:existential_trait_ref, r=nikomatsakis
...
Move binder for dyn to each list item
This essentially changes `ty::Binder<&'tcx List<ExistentialTraitRef>>` to `&'tcx List<ty::Binder<ExistentialTraitRef>>`.
This is a first step in moving the `dyn Trait` representation closer to Chalk, which we've talked about in `@rust-lang/wg-traits.`
r? `@nikomatsakis`
2020-12-17 18:21:20 +00:00
Matthias Krüger
db6c50998c
don't clone types that are copy (clippy::clone_on_copy)
2020-12-11 23:02:19 +01:00
Jack Huey
ed80815bf2
Move binder for dyn to each list item
2020-12-11 15:02:46 -05:00
Jonas Schievink
ee6f42ba94
Thread Constness through selection
2020-11-22 02:13:53 +01:00
Bastian Kauschke
2bf93bd852
compiler: fold by value
2020-11-16 22:34:57 +01:00
Matthew Jasper
50dde2e4d8
Normalize when finding trait object candidates
2020-10-22 08:18:29 +01:00
Matthew Jasper
6c43a64931
Fix ICE from projection cycle
...
Cycles in normalization can cause evaluations to change from Unknown to
Err. This means that some selection that were applicable no longer are.
To avoid this:
* Selection candidates that are known to be applicable are prefered
over candidates that are not.
* We don't ICE if a candidate is no longer applicable.
2020-10-21 19:43:20 +01:00
Matthew Jasper
b8d2560dca
Use tracing spans in rustc_trait_selection
2020-10-11 16:08:23 +01:00
Matthew Jasper
022c148fcd
Fix tests from rebase
2020-10-06 11:19:33 +01:00
Matthew Jasper
27534b3932
Fix rebase
2020-10-06 11:19:33 +01:00