@@ -3477,7 +3477,12 @@ pub impl Parser {
34773477 fn parse_item_foreign_const ( & self , vis : ast:: visibility ,
34783478 +attrs : ~[ attribute ] ) -> @foreign_item {
34793479 let lo = self . span . lo ;
3480- self . expect_keyword ( & ~"const ") ;
3480+
3481+ // XXX: Obsolete; remove after snap.
3482+ if !self . eat_keyword ( & ~"const ") {
3483+ self . expect_keyword ( & ~"static ") ;
3484+ }
3485+
34813486 let ident = self . parse_ident ( ) ;
34823487 self . expect ( & token:: COLON ) ;
34833488 let ty = self . parse_ty ( false ) ;
@@ -3506,7 +3511,7 @@ pub impl Parser {
35063511
35073512 fn parse_foreign_item ( & self , +attrs: ~[ attribute] ) -> @foreign_item {
35083513 let vis = self . parse_visibility ( ) ;
3509- if self . is_keyword ( & ~"const ") {
3514+ if self . is_keyword ( & ~"const ") || self . is_keyword ( & ~" static " ) {
35103515 self . parse_item_foreign_const ( vis, attrs)
35113516 } else {
35123517 self . parse_item_foreign_fn ( attrs)
@@ -3864,13 +3869,18 @@ pub impl Parser {
38643869 visibility = inherited;
38653870 }
38663871
3867- if items_allowed && self . eat_keyword ( & ~"const ") {
3872+ if items_allowed &&
3873+ ( self . is_keyword ( & ~"const ") ||
3874+ ( self . is_keyword ( & ~"static ") &&
3875+ !self . token_is_keyword ( & ~"fn ", & self . look_ahead ( 1 ) ) ) ) {
38683876 // CONST ITEM
3877+ self . bump ( ) ;
38693878 let ( ident, item_, extra_attrs) = self . parse_item_const ( ) ;
38703879 return iovi_item ( self . mk_item ( lo, self . last_span . hi , ident, item_,
38713880 visibility,
38723881 maybe_append ( attrs, extra_attrs) ) ) ;
3873- } else if foreign_items_allowed && self . is_keyword ( & ~"const ") {
3882+ } else if foreign_items_allowed &&
3883+ ( self . is_keyword ( & ~"const ") || self . is_keyword ( & ~"static ") ) {
38743884 // FOREIGN CONST ITEM
38753885 let item = self . parse_item_foreign_const ( visibility, attrs) ;
38763886 return iovi_foreign_item ( item) ;
0 commit comments