@@ -2,7 +2,7 @@ use crate::ast::{
22 self , Param , BinOpKind , BindingMode , BlockCheckMode , Expr , ExprKind , Ident , Item , ItemKind ,
33 Mutability , Pat , PatKind , PathSegment , QSelf , Ty , TyKind , VariantData ,
44} ;
5- use crate :: feature_gate:: { feature_err, UnstableFeatures } ;
5+ use crate :: feature_gate:: feature_err;
66use crate :: parse:: { SeqSep , PResult , Parser , ParseSess } ;
77use crate :: parse:: parser:: { BlockMode , PathStyle , SemiColonMode , TokenType , TokenExpectType } ;
88use crate :: parse:: token:: { self , TokenKind } ;
@@ -387,14 +387,17 @@ impl<'a> Parser<'a> {
387387 let next_pos = sm. lookup_char_pos ( self . token . span . lo ( ) ) ;
388388 let op_pos = sm. lookup_char_pos ( sp. hi ( ) ) ;
389389
390+ let allow_unstable = self . sess . unstable_features . is_nightly_build ( ) ;
391+
390392 if likely_path {
391393 err. span_suggestion (
392394 sp,
393395 "maybe write a path separator here" ,
394396 "::" . to_string ( ) ,
395- match self . sess . unstable_features {
396- UnstableFeatures :: Disallow => Applicability :: MachineApplicable ,
397- _ => Applicability :: MaybeIncorrect ,
397+ if allow_unstable {
398+ Applicability :: MaybeIncorrect
399+ } else {
400+ Applicability :: MachineApplicable
398401 } ,
399402 ) ;
400403 } else if op_pos. line != next_pos. line && maybe_expected_semicolon {
@@ -404,14 +407,13 @@ impl<'a> Parser<'a> {
404407 ";" . to_string ( ) ,
405408 Applicability :: MaybeIncorrect ,
406409 ) ;
407- } else if let UnstableFeatures :: Disallow = self . sess . unstable_features {
408- err. span_label ( sp, "tried to parse a type due to this" ) ;
409- } else {
410+ } else if allow_unstable {
410411 err. span_label ( sp, "tried to parse a type due to this type ascription" ) ;
412+ } else {
413+ err. span_label ( sp, "tried to parse a type due to this" ) ;
411414 }
412- if let UnstableFeatures :: Disallow = self . sess . unstable_features {
415+ if allow_unstable {
413416 // Give extra information about type ascription only if it's a nightly compiler.
414- } else {
415417 err. note ( "`#![feature(type_ascription)]` lets you annotate an expression with a \
416418 type: `<expr>: <type>`") ;
417419 err. note ( "for more information, see \
0 commit comments