@@ -1150,20 +1150,23 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
11501150 }
11511151
11521152 fn visit_generics ( & mut self , generics : & ' a Generics ) {
1153- let mut prev_ty_default = None ;
1153+ let cg_defaults = self . session . features_untracked ( ) . const_generics_defaults ;
1154+
1155+ let mut prev_param_default = None ;
11541156 for param in & generics. params {
11551157 match param. kind {
11561158 GenericParamKind :: Lifetime => ( ) ,
1157- GenericParamKind :: Type { default : Some ( _) , .. } => {
1158- prev_ty_default = Some ( param. ident . span ) ;
1159+ GenericParamKind :: Type { default : Some ( _) , .. }
1160+ | GenericParamKind :: Const { default : Some ( _) , .. } => {
1161+ prev_param_default = Some ( param. ident . span ) ;
11591162 }
11601163 GenericParamKind :: Type { .. } | GenericParamKind :: Const { .. } => {
1161- if let Some ( span) = prev_ty_default {
1164+ if let Some ( span) = prev_param_default {
11621165 let mut err = self . err_handler ( ) . struct_span_err (
11631166 span,
1164- "type parameters with a default must be trailing" ,
1167+ "generic parameters with a default must be trailing" ,
11651168 ) ;
1166- if matches ! ( param. kind, GenericParamKind :: Const { .. } ) {
1169+ if matches ! ( param. kind, GenericParamKind :: Const { .. } ) && !cg_defaults {
11671170 err. note (
11681171 "using type defaults and const parameters \
11691172 in the same parameter list is currently not permitted",
@@ -1174,17 +1177,6 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
11741177 }
11751178 }
11761179 }
1177- if !self . session . features_untracked ( ) . const_generics_defaults {
1178- if let GenericParamKind :: Const { default : Some ( ref default) , .. } = param. kind {
1179- let mut err = self . err_handler ( ) . struct_span_err (
1180- default. value . span ,
1181- "default values for const generic parameters are unstable" ,
1182- ) ;
1183- err. help ( "add `#![feature(const_generic_defaults)]` to the crate attributes to enable" ) ;
1184- err. emit ( ) ;
1185- break ;
1186- }
1187- }
11881180 }
11891181
11901182 validate_generic_param_order (
0 commit comments