From 73c1839579a6b5f302f5497189d69c9a61760a6c Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Wed, 19 Jun 2013 21:12:40 -0400 Subject: [PATCH] libsyntax: Remove `drop` as a keyword. --- src/libsyntax/parse/token.rs | 237 +++++++++++++++++++++++++++++------ 1 file changed, 202 insertions(+), 35 deletions(-) diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index e7bc67340f0..fc6f07288f2 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -400,7 +400,9 @@ impl ident_interner { } } + // return a fresh interner, preloaded with special identifiers. +#[cfg(stage0)] fn mk_fresh_ident_interner() -> @ident_interner { // the indices here must correspond to the numbers in // special_idents. @@ -486,6 +488,92 @@ fn mk_fresh_ident_interner() -> @ident_interner { } } +// return a fresh interner, preloaded with special identifiers. +#[cfg(not(stage0))] +fn mk_fresh_ident_interner() -> @ident_interner { + // the indices here must correspond to the numbers in + // special_idents. + let init_vec = ~[ + "_", // 0 + "anon", // 1 + "", // 2 + "unary", // 3 + "!", // 4 + "[]", // 5 + "unary-", // 6 + "__extensions__", // 7 + "self", // 8 + "item", // 9 + "block", // 10 + "stmt", // 11 + "pat", // 12 + "expr", // 13 + "ty", // 14 + "ident", // 15 + "path", // 16 + "tt", // 17 + "matchers", // 18 + "str", // 19 + "TyVisitor", // 20 + "arg", // 21 + "descrim", // 22 + "__rust_abi", // 23 + "__rust_stack_shim", // 24 + "TyDesc", // 25 + "main", // 26 + "", // 27 + "blk", // 28 + "static", // 29 + "intrinsic", // 30 + "__foreign_mod__", // 31 + "__field__", // 32 + "C", // 33 + "Self", // 34 + + "as", // 35 + "break", // 36 + "const", // 37 + "copy", // 38 + "do", // 39 + "else", // 40 + "enum", // 41 + "extern", // 42 + "false", // 43 + "fn", // 44 + "for", // 45 + "if", // 46 + "impl", // 47 + "let", // 48 + "__log", // 49 + "loop", // 50 + "match", // 51 + "mod", // 52 + "mut", // 53 + "once", // 54 + "priv", // 55 + "pub", // 56 + "pure", // 57 + "ref", // 58 + "return", // 59 + "static", // 29 -- also a special ident + "self", // 8 -- also a special ident + "struct", // 60 + "super", // 61 + "true", // 62 + "trait", // 63 + "type", // 64 + "unsafe", // 65 + "use", // 66 + "while", // 67 + + "be", // 68 + ]; + + @ident_interner { + interner: interner::StrInterner::prefill(init_vec) + } +} + // if an interner exists in TLS, return it. Otherwise, prepare a // fresh one. pub fn get_ident_interner() -> @ident_interner { @@ -612,44 +700,86 @@ pub mod keywords { } impl Keyword { + #[cfg(stage0)] pub fn to_ident(&self) -> ident { match *self { As => ident { name: 35, ctxt: 0 }, - Break => ident { name: 36, ctxt: 0 }, - Const => ident { name: 37, ctxt: 0 }, - Copy => ident { name: 38, ctxt: 0 }, - Do => ident { name: 39, ctxt: 0 }, - Else => ident { name: 41, ctxt: 0 }, - Enum => ident { name: 42, ctxt: 0 }, - Extern => ident { name: 43, ctxt: 0 }, - False => ident { name: 44, ctxt: 0 }, - Fn => ident { name: 45, ctxt: 0 }, - For => ident { name: 46, ctxt: 0 }, - If => ident { name: 47, ctxt: 0 }, - Impl => ident { name: 48, ctxt: 0 }, - Let => ident { name: 49, ctxt: 0 }, - __Log => ident { name: 50, ctxt: 0 }, - Loop => ident { name: 51, ctxt: 0 }, - Match => ident { name: 52, ctxt: 0 }, - Mod => ident { name: 53, ctxt: 0 }, - Mut => ident { name: 54, ctxt: 0 }, - Once => ident { name: 55, ctxt: 0 }, - Priv => ident { name: 56, ctxt: 0 }, - Pub => ident { name: 57, ctxt: 0 }, - Pure => ident { name: 58, ctxt: 0 }, - Ref => ident { name: 59, ctxt: 0 }, - Return => ident { name: 60, ctxt: 0 }, - Static => ident { name: 29, ctxt: 0 }, - Self => ident { name: 8, ctxt: 0 }, - Struct => ident { name: 61, ctxt: 0 }, - Super => ident { name: 62, ctxt: 0 }, - True => ident { name: 63, ctxt: 0 }, - Trait => ident { name: 64, ctxt: 0 }, - Type => ident { name: 65, ctxt: 0 }, - Unsafe => ident { name: 66, ctxt: 0 }, - Use => ident { name: 67, ctxt: 0 }, - While => ident { name: 68, ctxt: 0 }, - Be => ident { name: 69, ctxt: 0 }, + Break => ident { name: 36, ctxt: 0 }, + Const => ident { name: 37, ctxt: 0 }, + Copy => ident { name: 38, ctxt: 0 }, + Do => ident { name: 39, ctxt: 0 }, + Else => ident { name: 41, ctxt: 0 }, + Enum => ident { name: 42, ctxt: 0 }, + Extern => ident { name: 43, ctxt: 0 }, + False => ident { name: 44, ctxt: 0 }, + Fn => ident { name: 45, ctxt: 0 }, + For => ident { name: 46, ctxt: 0 }, + If => ident { name: 47, ctxt: 0 }, + Impl => ident { name: 48, ctxt: 0 }, + Let => ident { name: 49, ctxt: 0 }, + __Log => ident { name: 50, ctxt: 0 }, + Loop => ident { name: 51, ctxt: 0 }, + Match => ident { name: 52, ctxt: 0 }, + Mod => ident { name: 53, ctxt: 0 }, + Mut => ident { name: 54, ctxt: 0 }, + Once => ident { name: 55, ctxt: 0 }, + Priv => ident { name: 56, ctxt: 0 }, + Pub => ident { name: 57, ctxt: 0 }, + Pure => ident { name: 58, ctxt: 0 }, + Ref => ident { name: 59, ctxt: 0 }, + Return => ident { name: 60, ctxt: 0 }, + Static => ident { name: 29, ctxt: 0 }, + Self => ident { name: 8, ctxt: 0 }, + Struct => ident { name: 61, ctxt: 0 }, + Super => ident { name: 62, ctxt: 0 }, + True => ident { name: 63, ctxt: 0 }, + Trait => ident { name: 64, ctxt: 0 }, + Type => ident { name: 65, ctxt: 0 }, + Unsafe => ident { name: 66, ctxt: 0 }, + Use => ident { name: 67, ctxt: 0 }, + While => ident { name: 68, ctxt: 0 }, + Be => ident { name: 69, ctxt: 0 }, + } + } + #[cfg(not(stage0))] + pub fn to_ident(&self) -> ident { + match *self { + As => ident { name: 35, ctxt: 0 }, + Break => ident { name: 36, ctxt: 0 }, + Const => ident { name: 37, ctxt: 0 }, + Copy => ident { name: 38, ctxt: 0 }, + Do => ident { name: 39, ctxt: 0 }, + Else => ident { name: 40, ctxt: 0 }, + Enum => ident { name: 41, ctxt: 0 }, + Extern => ident { name: 42, ctxt: 0 }, + False => ident { name: 43, ctxt: 0 }, + Fn => ident { name: 44, ctxt: 0 }, + For => ident { name: 45, ctxt: 0 }, + If => ident { name: 46, ctxt: 0 }, + Impl => ident { name: 47, ctxt: 0 }, + Let => ident { name: 48, ctxt: 0 }, + __Log => ident { name: 49, ctxt: 0 }, + Loop => ident { name: 50, ctxt: 0 }, + Match => ident { name: 51, ctxt: 0 }, + Mod => ident { name: 52, ctxt: 0 }, + Mut => ident { name: 53, ctxt: 0 }, + Once => ident { name: 54, ctxt: 0 }, + Priv => ident { name: 55, ctxt: 0 }, + Pub => ident { name: 56, ctxt: 0 }, + Pure => ident { name: 57, ctxt: 0 }, + Ref => ident { name: 58, ctxt: 0 }, + Return => ident { name: 59, ctxt: 0 }, + Static => ident { name: 29, ctxt: 0 }, + Self => ident { name: 8, ctxt: 0 }, + Struct => ident { name: 60, ctxt: 0 }, + Super => ident { name: 61, ctxt: 0 }, + True => ident { name: 62, ctxt: 0 }, + Trait => ident { name: 63, ctxt: 0 }, + Type => ident { name: 64, ctxt: 0 }, + Unsafe => ident { name: 65, ctxt: 0 }, + Use => ident { name: 66, ctxt: 0 }, + While => ident { name: 67, ctxt: 0 }, + Be => ident { name: 68, ctxt: 0 }, } } } @@ -662,6 +792,7 @@ pub fn is_keyword(kw: keywords::Keyword, tok: &Token) -> bool { } } +#[cfg(stage0)] pub fn is_any_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { @@ -672,6 +803,18 @@ pub fn is_any_keyword(tok: &Token) -> bool { } } +#[cfg(not(stage0))] +pub fn is_any_keyword(tok: &Token) -> bool { + match *tok { + token::IDENT(sid, false) => match sid.name { + 8 | 29 | 35 .. 68 => true, + _ => false, + }, + _ => false + } +} + +#[cfg(stage0)] pub fn is_strict_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { @@ -682,6 +825,18 @@ pub fn is_strict_keyword(tok: &Token) -> bool { } } +#[cfg(not(stage0))] +pub fn is_strict_keyword(tok: &Token) -> bool { + match *tok { + token::IDENT(sid, false) => match sid.name { + 8 | 29 | 35 .. 67 => true, + _ => false, + }, + _ => false, + } +} + +#[cfg(stage0)] pub fn is_reserved_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { @@ -692,6 +847,18 @@ pub fn is_reserved_keyword(tok: &Token) -> bool { } } +#[cfg(not(stage0))] +pub fn is_reserved_keyword(tok: &Token) -> bool { + match *tok { + token::IDENT(sid, false) => match sid.name { + 68 => true, + _ => false, + }, + _ => false, + } +} + + #[cfg(test)] mod test { use super::*;