diff options
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 22 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 16 |
2 files changed, 21 insertions, 17 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9bfb593786e..e7f40cf0722 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -32,7 +32,7 @@ use ast::{FnUnboxedClosureKind, FnMutUnboxedClosureKind}; use ast::{FnOnceUnboxedClosureKind}; use ast::{ForeignItem, ForeignItemStatic, ForeignItemFn, ForeignMod}; use ast::{Ident, NormalFn, Inherited, ImplItem, Item, Item_, ItemStatic}; -use ast::{ItemEnum, ItemFn, ItemForeignMod, ItemImpl}; +use ast::{ItemEnum, ItemFn, ItemForeignMod, ItemImpl, ItemConst}; use ast::{ItemMac, ItemMod, ItemStruct, ItemTrait, ItemTy}; use ast::{LifetimeDef, Lit, Lit_}; use ast::{LitBool, LitChar, LitByte, LitBinary}; @@ -91,10 +91,10 @@ use std::iter; bitflags! { flags Restrictions: u8 { - static UNRESTRICTED = 0b0000, - static RESTRICTION_STMT_EXPR = 0b0001, - static RESTRICTION_NO_BAR_OP = 0b0010, - static RESTRICTION_NO_STRUCT_LITERAL = 0b0100 + const UNRESTRICTED = 0b0000, + const RESTRICTION_STMT_EXPR = 0b0001, + const RESTRICTION_NO_BAR_OP = 0b0010, + const RESTRICTION_NO_STRUCT_LITERAL = 0b0100 } } @@ -4739,14 +4739,18 @@ impl<'a> Parser<'a> { } } - fn parse_item_const(&mut self, m: Mutability) -> ItemInfo { + fn parse_item_const(&mut self, m: Option<Mutability>) -> ItemInfo { let id = self.parse_ident(); self.expect(&token::COLON); let ty = self.parse_ty(true); self.expect(&token::EQ); let e = self.parse_expr(); self.commit_expr_expecting(&*e, token::SEMI); - (id, ItemStatic(ty, m, e), None) + let item = match m { + Some(m) => ItemStatic(ty, m, e), + None => ItemConst(ty, e), + }; + (id, item, None) } /// Parse a `mod <foo> { ... }` or `mod <foo>;` item @@ -5296,7 +5300,7 @@ impl<'a> Parser<'a> { // STATIC ITEM self.bump(); let m = if self.eat_keyword(keywords::Mut) {MutMutable} else {MutImmutable}; - let (ident, item_, extra_attrs) = self.parse_item_const(m); + let (ident, item_, extra_attrs) = self.parse_item_const(Some(m)); let last_span = self.last_span; let item = self.mk_item(lo, last_span.hi, @@ -5314,7 +5318,7 @@ impl<'a> Parser<'a> { self.span_err(last_span, "const globals cannot be mutable, \ did you mean to declare a static?"); } - let (ident, item_, extra_attrs) = self.parse_item_const(MutImmutable); + let (ident, item_, extra_attrs) = self.parse_item_const(None); let last_span = self.last_span; let item = self.mk_item(lo, last_span.hi, diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 7cc78891d91..fa6b0c5ad4a 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -385,13 +385,13 @@ macro_rules! declare_special_idents_and_keywords {( use ast::{Ident, Name}; $( #[allow(non_uppercase_statics)] - pub static $si_static: Ident = Ident { name: Name($si_name), ctxt: 0 }; + pub const $si_static: Ident = Ident { name: Name($si_name), ctxt: 0 }; )* } pub mod special_names { use ast::Name; - $( #[allow(non_uppercase_statics)] pub static $si_static: Name = Name($si_name); )* + $( #[allow(non_uppercase_statics)] pub const $si_static: Name = Name($si_name); )* } /** @@ -432,13 +432,13 @@ macro_rules! declare_special_idents_and_keywords {( }} // If the special idents get renumbered, remember to modify these two as appropriate -pub static SELF_KEYWORD_NAME: Name = Name(SELF_KEYWORD_NAME_NUM); -static STATIC_KEYWORD_NAME: Name = Name(STATIC_KEYWORD_NAME_NUM); -static SUPER_KEYWORD_NAME: Name = Name(SUPER_KEYWORD_NAME_NUM); +pub const SELF_KEYWORD_NAME: Name = Name(SELF_KEYWORD_NAME_NUM); +const STATIC_KEYWORD_NAME: Name = Name(STATIC_KEYWORD_NAME_NUM); +const SUPER_KEYWORD_NAME: Name = Name(SUPER_KEYWORD_NAME_NUM); -pub static SELF_KEYWORD_NAME_NUM: u32 = 1; -static STATIC_KEYWORD_NAME_NUM: u32 = 2; -static SUPER_KEYWORD_NAME_NUM: u32 = 3; +pub const SELF_KEYWORD_NAME_NUM: u32 = 1; +const STATIC_KEYWORD_NAME_NUM: u32 = 2; +const SUPER_KEYWORD_NAME_NUM: u32 = 3; // NB: leaving holes in the ident table is bad! a different ident will get // interned with the id from the hole, but it will be between the min and max |
