@@ -3477,7 +3477,12 @@ pub impl Parser {
3477
3477
fn parse_item_foreign_const ( & self , vis : ast:: visibility ,
3478
3478
+attrs : ~[ attribute ] ) -> @foreign_item {
3479
3479
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
+
3481
3486
let ident = self . parse_ident ( ) ;
3482
3487
self . expect ( & token:: COLON ) ;
3483
3488
let ty = self . parse_ty ( false ) ;
@@ -3506,7 +3511,7 @@ pub impl Parser {
3506
3511
3507
3512
fn parse_foreign_item ( & self , +attrs: ~[ attribute] ) -> @foreign_item {
3508
3513
let vis = self . parse_visibility ( ) ;
3509
- if self . is_keyword ( & ~"const ") {
3514
+ if self . is_keyword ( & ~"const ") || self . is_keyword ( & ~" static " ) {
3510
3515
self . parse_item_foreign_const ( vis, attrs)
3511
3516
} else {
3512
3517
self . parse_item_foreign_fn ( attrs)
@@ -3864,13 +3869,18 @@ pub impl Parser {
3864
3869
visibility = inherited;
3865
3870
}
3866
3871
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 ) ) ) ) {
3868
3876
// CONST ITEM
3877
+ self . bump ( ) ;
3869
3878
let ( ident, item_, extra_attrs) = self . parse_item_const ( ) ;
3870
3879
return iovi_item ( self . mk_item ( lo, self . last_span . hi , ident, item_,
3871
3880
visibility,
3872
3881
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 ") ) {
3874
3884
// FOREIGN CONST ITEM
3875
3885
let item = self . parse_item_foreign_const ( visibility, attrs) ;
3876
3886
return iovi_foreign_item ( item) ;
0 commit comments