File tree Expand file tree Collapse file tree 3 files changed +33
-3
lines changed
compiler/rustc_borrowck/src/region_infer Expand file tree Collapse file tree 3 files changed +33
-3
lines changed Original file line number Diff line number Diff line change @@ -1726,9 +1726,10 @@ impl<'tcx> RegionInferenceContext<'tcx> {
1726
1726
// `BoringNoLocation` constraints can point to user-written code, but are less
1727
1727
// specific, and are not used for relations that would make sense to blame.
1728
1728
ConstraintCategory :: BoringNoLocation => 6 ,
1729
- // Do not blame internal constraints.
1730
- ConstraintCategory :: OutlivesUnnameablePlaceholder ( _) => 7 ,
1731
- ConstraintCategory :: Internal => 8 ,
1729
+ // Do not blame internal constraints if we can avoid it. Never blame
1730
+ // the `'region: 'static` constraints introduced by placeholder outlives.
1731
+ ConstraintCategory :: Internal => 7 ,
1732
+ ConstraintCategory :: OutlivesUnnameablePlaceholder ( _) => 8 ,
1732
1733
} ;
1733
1734
1734
1735
debug ! ( "constraint {constraint:?} category: {category:?}, interest: {interest:?}" ) ;
Original file line number Diff line number Diff line change
1
+ //@ compile-flags: -Zdeduplicate-diagnostics=yes
2
+
3
+ // Regression test for #146467.
4
+ trait Trait { type Assoc ; }
5
+
6
+ impl Trait for fn ( & ( ) ) { type Assoc = ( ) ; }
7
+
8
+ fn f ( _: for <' a > fn ( <fn ( & ' a ( ) ) as Trait >:: Assoc ) ) { }
9
+ //~^ ERROR implementation of `Trait` is not general enough
10
+ //~| ERROR higher-ranked subtype error
11
+
12
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error: implementation of `Trait` is not general enough
2
+ --> $DIR/do-not-blame-outlives-static-ice.rs:8:9
3
+ |
4
+ LL | fn f(_: for<'a> fn(<fn(&'a ()) as Trait>::Assoc)) {}
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough
6
+ |
7
+ = note: `for<'a> fn(&'a ())` must implement `Trait`, for any lifetime `'0`...
8
+ = note: ...but `Trait` is actually implemented for the type `for<'a> fn(&'a ())`
9
+
10
+ error: higher-ranked subtype error
11
+ --> $DIR/do-not-blame-outlives-static-ice.rs:8:1
12
+ |
13
+ LL | fn f(_: for<'a> fn(<fn(&'a ()) as Trait>::Assoc)) {}
14
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15
+
16
+ error: aborting due to 2 previous errors
17
+
You can’t perform that action at this time.
0 commit comments