@@ -36,7 +36,6 @@ use util::nodemap::NodeMap;
3636use util:: ppaux:: Repr ;
3737
3838use syntax:: ast;
39- use syntax:: ast_util:: PostExpansionMethod ;
4039use syntax:: codemap:: Span ;
4140use syntax:: visit:: { self , Visitor } ;
4241
@@ -149,16 +148,16 @@ impl<'a, 'tcx> CheckCrateVisitor<'a, 'tcx> {
149148 Entry :: Occupied ( entry) => return * entry. get ( ) ,
150149 Entry :: Vacant ( entry) => {
151150 // Prevent infinite recursion on re-entry.
152- entry. insert ( PURE_CONST ) ;
151+ entry. insert ( ConstQualif :: empty ( ) ) ;
153152 }
154153 }
155154
156155 let mode = match fk {
157- visit:: FkItemFn ( _, _, _, ast:: Constness :: Const , _) => {
156+ visit:: FkItemFn ( _, _, _, ast:: Constness :: Const , _, _ ) => {
158157 Mode :: ConstFn
159158 }
160- visit:: FkMethod ( _, _ , m ) => {
161- if m. pe_constness ( ) == ast:: Constness :: Const {
159+ visit:: FkMethod ( _, m , _ ) => {
160+ if m. constness == ast:: Constness :: Const {
162161 Mode :: ConstFn
163162 } else {
164163 Mode :: Var
@@ -189,7 +188,7 @@ impl<'a, 'tcx> CheckCrateVisitor<'a, 'tcx> {
189188
190189 // Keep only bits that aren't affected by function body (NON_ZERO_SIZED),
191190 // and bits that don't change semantics, just optimizations (PREFER_IN_PLACE).
192- let qualif = qualif & ( NON_ZERO_SIZED | PREFER_IN_PLACE ) ;
191+ let qualif = qualif & ( ConstQualif :: NON_ZERO_SIZED | ConstQualif :: PREFER_IN_PLACE ) ;
193192
194193 self . tcx . const_qualif_map . borrow_mut ( ) . insert ( fn_id, qualif) ;
195194 qualif
@@ -210,7 +209,7 @@ impl<'a, 'tcx> CheckCrateVisitor<'a, 'tcx> {
210209 self . add_qualif ( qualif) ;
211210
212211 if ty:: type_contents ( self . tcx , ret_ty) . interior_unsafe ( ) {
213- self . add_qualif ( MUTABLE_MEM ) ;
212+ self . add_qualif ( ConstQualif :: MUTABLE_MEM ) ;
214213 }
215214
216215 true
@@ -366,7 +365,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for CheckCrateVisitor<'a, 'tcx> {
366365 macro in const?!")
367366 }
368367 } ;
369- self . add_qualif ( NOT_CONST ) ;
368+ self . add_qualif ( ConstQualif :: NOT_CONST ) ;
370369 if self . mode != Mode :: Var {
371370 span_err ! ( self . tcx. sess, span, E0016 ,
372371 "blocks in {}s are limited to items and \
@@ -602,7 +601,7 @@ fn check_expr<'a, 'tcx>(v: &mut CheckCrateVisitor<'a, 'tcx>,
602601 }
603602 Some ( def:: DefLocal ( _) ) if v. mode == Mode :: ConstFn => {
604603 // Sadly, we can't determine whether the types are zero-sized.
605- v. add_qualif ( NOT_CONST | NON_ZERO_SIZED ) ;
604+ v. add_qualif ( ConstQualif :: NOT_CONST | ConstQualif :: NON_ZERO_SIZED ) ;
606605 }
607606 def => {
608607 v. add_qualif ( ConstQualif :: NOT_CONST ) ;
@@ -651,20 +650,8 @@ fn check_expr<'a, 'tcx>(v: &mut CheckCrateVisitor<'a, 'tcx>,
651650 }
652651 }
653652 }
654- ast:: ExprBlock ( ref block) => {
655- // Check all statements in the block
656- let mut block_span_err = |span| {
657- v. add_qualif ( ConstQualif :: NOT_CONST ) ;
658- if v. mode != Mode :: Var {
659- span_err ! ( v. tcx. sess, e. span, E0015 ,
660- "function calls in {}s are limited to \
661- constant functions, \
662- struct and enum constructors", v. msg( ) ) ;
663- }
664- }
665- }
666653 ast:: ExprMethodCall ( ..) => {
667- let method_did = match v. tcx . method_map . borrow ( ) [ method_call] . origin {
654+ let method_did = match v. tcx . method_map . borrow ( ) [ & method_call] . origin {
668655 ty:: MethodStatic ( did) => Some ( did) ,
669656 _ => None
670657 } ;
@@ -673,9 +660,9 @@ fn check_expr<'a, 'tcx>(v: &mut CheckCrateVisitor<'a, 'tcx>,
673660 None => false
674661 } ;
675662 if !is_const {
676- v. add_qualif ( NOT_CONST ) ;
663+ v. add_qualif ( ConstQualif :: NOT_CONST ) ;
677664 if v. mode != Mode :: Var {
678- span_err ! ( v. tcx. sess, e. span, E0021 ,
665+ span_err ! ( v. tcx. sess, e. span, E0378 ,
679666 "method calls in {}s are limited to \
680667 constant inherent methods", v. msg( ) ) ;
681668 }
0 commit comments