File tree 2 files changed +29
-13
lines changed
compiler/rustc_trait_selection/src/traits
src/test/ui/const-generics
2 files changed +29
-13
lines changed Original file line number Diff line number Diff line change @@ -451,19 +451,21 @@ impl<'tcx> WfPredicates<'tcx> {
451
451
GenericArgKind :: Const ( ct) => {
452
452
match ct. kind ( ) {
453
453
ty:: ConstKind :: Unevaluated ( uv) => {
454
- let obligations = self . nominal_obligations ( uv. def . did , uv. substs ) ;
455
- self . out . extend ( obligations) ;
456
-
457
- let predicate =
458
- ty:: Binder :: dummy ( ty:: PredicateKind :: ConstEvaluatable ( ct) ) ;
459
- let cause = self . cause ( traits:: WellFormed ( None ) ) ;
460
- self . out . push ( traits:: Obligation :: with_depth (
461
- self . tcx ( ) ,
462
- cause,
463
- self . recursion_depth ,
464
- self . param_env ,
465
- predicate,
466
- ) ) ;
454
+ if !ct. has_escaping_bound_vars ( ) {
455
+ let obligations = self . nominal_obligations ( uv. def . did , uv. substs ) ;
456
+ self . out . extend ( obligations) ;
457
+
458
+ let predicate =
459
+ ty:: Binder :: dummy ( ty:: PredicateKind :: ConstEvaluatable ( ct) ) ;
460
+ let cause = self . cause ( traits:: WellFormed ( None ) ) ;
461
+ self . out . push ( traits:: Obligation :: with_depth (
462
+ self . tcx ( ) ,
463
+ cause,
464
+ self . recursion_depth ,
465
+ self . param_env ,
466
+ predicate,
467
+ ) ) ;
468
+ }
467
469
}
468
470
ty:: ConstKind :: Infer ( _) => {
469
471
let cause = self . cause ( traits:: WellFormed ( None ) ) ;
Original file line number Diff line number Diff line change
1
+ // check-pass
2
+ // edition:2021
3
+ #![ feature( generic_const_exprs) ]
4
+ #![ allow( incomplete_features) ]
5
+
6
+ #[ allow( unused) ]
7
+ async fn foo < ' a > ( ) {
8
+ let _data = & mut [ 0u8 ; { 1 + 4 } ] ;
9
+ bar ( ) . await
10
+ }
11
+
12
+ async fn bar ( ) { }
13
+
14
+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments