@@ -13,7 +13,9 @@ use rustc_span::{Span, DUMMY_SP};
1313
1414use std:: ptr;
1515
16- use crate :: late:: { ConstantItemKind , HasGenericParams , PathSource , Rib , RibKind } ;
16+ use crate :: late:: {
17+ ConstantHasGenerics , ConstantItemKind , HasGenericParams , PathSource , Rib , RibKind ,
18+ } ;
1719use crate :: macros:: { sub_namespace_match, MacroRulesScope } ;
1820use crate :: { AmbiguityError , AmbiguityErrorMisc , AmbiguityKind , Determinacy , Finalize } ;
1921use crate :: { ImportKind , LexicalScopeBinding , Module , ModuleKind , ModuleOrUniformRoot } ;
@@ -1103,7 +1105,7 @@ impl<'a> Resolver<'a> {
11031105 | ForwardGenericParamBanRibKind => {
11041106 // Nothing to do. Continue.
11051107 }
1106- ItemRibKind ( _) | FnItemRibKind | AssocItemRibKind => {
1108+ ItemRibKind ( _) | AssocItemRibKind => {
11071109 // This was an attempt to access an upvar inside a
11081110 // named function item. This is not allowed, so we
11091111 // report an error.
@@ -1168,10 +1170,10 @@ impl<'a> Resolver<'a> {
11681170 let has_generic_params: HasGenericParams = match rib. kind {
11691171 NormalRibKind
11701172 | ClosureOrAsyncRibKind
1171- | AssocItemRibKind
11721173 | ModuleRibKind ( ..)
11731174 | MacroDefinition ( ..)
11741175 | InlineAsmSymRibKind
1176+ | AssocItemRibKind
11751177 | ForwardGenericParamBanRibKind => {
11761178 // Nothing to do. Continue.
11771179 continue ;
@@ -1180,7 +1182,9 @@ impl<'a> Resolver<'a> {
11801182 ConstantItemRibKind ( trivial, _) => {
11811183 let features = self . session . features_untracked ( ) ;
11821184 // HACK(min_const_generics): We currently only allow `N` or `{ N }`.
1183- if !( trivial == HasGenericParams :: Yes || features. generic_const_exprs ) {
1185+ if !( trivial == ConstantHasGenerics :: Yes
1186+ || features. generic_const_exprs )
1187+ {
11841188 // HACK(min_const_generics): If we encounter `Self` in an anonymous constant
11851189 // we can't easily tell if it's generic at this stage, so we instead remember
11861190 // this and then enforce the self type to be concrete later on.
@@ -1207,7 +1211,6 @@ impl<'a> Resolver<'a> {
12071211
12081212 // This was an attempt to use a type parameter outside its scope.
12091213 ItemRibKind ( has_generic_params) => has_generic_params,
1210- FnItemRibKind => HasGenericParams :: Yes ,
12111214 ConstParamTyRibKind => {
12121215 if let Some ( span) = finalize {
12131216 self . report_error (
@@ -1232,28 +1235,22 @@ impl<'a> Resolver<'a> {
12321235 }
12331236 }
12341237 Res :: Def ( DefKind :: ConstParam , _) => {
1235- let mut ribs = ribs. iter ( ) . peekable ( ) ;
1236- if let Some ( Rib { kind : FnItemRibKind , .. } ) = ribs. peek ( ) {
1237- // When declaring const parameters inside function signatures, the first rib
1238- // is always a `FnItemRibKind`. In this case, we can skip it, to avoid it
1239- // (spuriously) conflicting with the const param.
1240- ribs. next ( ) ;
1241- }
1242-
12431238 for rib in ribs {
12441239 let has_generic_params = match rib. kind {
12451240 NormalRibKind
12461241 | ClosureOrAsyncRibKind
1247- | AssocItemRibKind
12481242 | ModuleRibKind ( ..)
12491243 | MacroDefinition ( ..)
12501244 | InlineAsmSymRibKind
1245+ | AssocItemRibKind
12511246 | ForwardGenericParamBanRibKind => continue ,
12521247
12531248 ConstantItemRibKind ( trivial, _) => {
12541249 let features = self . session . features_untracked ( ) ;
12551250 // HACK(min_const_generics): We currently only allow `N` or `{ N }`.
1256- if !( trivial == HasGenericParams :: Yes || features. generic_const_exprs ) {
1251+ if !( trivial == ConstantHasGenerics :: Yes
1252+ || features. generic_const_exprs )
1253+ {
12571254 if let Some ( span) = finalize {
12581255 self . report_error (
12591256 span,
@@ -1272,7 +1269,6 @@ impl<'a> Resolver<'a> {
12721269 }
12731270
12741271 ItemRibKind ( has_generic_params) => has_generic_params,
1275- FnItemRibKind => HasGenericParams :: Yes ,
12761272 ConstParamTyRibKind => {
12771273 if let Some ( span) = finalize {
12781274 self . report_error (
0 commit comments