]> git.lizzy.rs Git - rust.git/commitdiff
Freeze the AST by removing a couple of unused @mut ~[T] from token_tree.
authorEduard Burtescu <edy.burt@gmail.com>
Wed, 27 Nov 2013 15:48:58 +0000 (17:48 +0200)
committerEduard Burtescu <edy.burt@gmail.com>
Wed, 27 Nov 2013 15:48:58 +0000 (17:48 +0200)
src/libsyntax/ast.rs
src/libsyntax/ext/log_syntax.rs
src/libsyntax/ext/tt/macro_rules.rs
src/libsyntax/ext/tt/transcribe.rs
src/libsyntax/fold.rs
src/libsyntax/parse/parser.rs

index b888c8772d0d3b83b042e904910f28a7d3f04c28..6e73c6abd0b34e832c48ee94aac58d65b3ad2221 100644 (file)
@@ -612,14 +612,14 @@ pub enum token_tree {
     tt_tok(Span, ::parse::token::Token),
     // a delimited sequence (the delimiters appear as the first
     // and last elements of the vector)
-    tt_delim(@mut ~[token_tree]),
+    tt_delim(@~[token_tree]),
 
     // These only make sense for right-hand-sides of MBE macros:
 
     // a kleene-style repetition sequence with a span, a tt_forest,
     // an optional separator, and a boolean where true indicates
     // zero or more (*), and false indicates one or more (+).
-    tt_seq(Span, @mut ~[token_tree], Option<::parse::token::Token>, bool),
+    tt_seq(Span, @~[token_tree], Option<::parse::token::Token>, bool),
 
     // a syntactic variable that will be filled in by macro expansion.
     tt_nonterminal(Span, Ident)
@@ -1180,6 +1180,18 @@ pub enum inlined_item {
     ii_foreign(@foreign_item),
 }
 
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    fn is_freeze<T: Freeze>() {}
+
+    // Assert that the AST remains Freeze (#10693).
+    #[test] fn ast_is_freeze() {
+        is_freeze::<item>();
+    }
+}
+
 /* hold off on tests ... they appear in a later merge.
 #[cfg(test)]
 mod test {
index 3e07b16221ec113be82f3d72d94d8f2b9c7403d9..2007abcc81cf7a64873d763b8cf5f47d897b9871 100644 (file)
@@ -23,7 +23,7 @@ pub fn expand_syntax_ext(cx: @ExtCtxt,
     cx.print_backtrace();
     println(
         print::pprust::tt_to_str(
-            &ast::tt_delim(@mut tt.to_owned()),
+            &ast::tt_delim(@tt.to_owned()),
             get_ident_interner()));
 
     //trivial expression
index 3cc00ef8199581fe993cd07abaac9111266bcd60..8291a76fab65d3107d86d9400b384a374400f2b1 100644 (file)
@@ -104,7 +104,7 @@ fn generic_extension(cx: @ExtCtxt,
         println!("{}! \\{ {} \\}",
                   cx.str_of(name),
                   print::pprust::tt_to_str(
-                      &ast::tt_delim(@mut arg.to_owned()),
+                      &ast::tt_delim(@arg.to_owned()),
                       get_ident_interner()));
     }
 
index 0f7b92b5b064050a962692380c0895941040d892..1bcfbcf7ab24e3c8dbbaaf1dc2f184ae39240637 100644 (file)
@@ -22,7 +22,7 @@
 
 ///an unzipping of `token_tree`s
 struct TtFrame {
-    forest: @mut ~[ast::token_tree],
+    forest: @~[ast::token_tree],
     idx: uint,
     dotdotdoted: bool,
     sep: Option<Token>,
@@ -52,7 +52,7 @@ pub fn new_tt_reader(sp_diag: @mut span_handler,
     let r = @mut TtReader {
         sp_diag: sp_diag,
         stack: @mut TtFrame {
-            forest: @mut src,
+            forest: @src,
             idx: 0u,
             dotdotdoted: false,
             sep: None,
@@ -74,7 +74,7 @@ pub fn new_tt_reader(sp_diag: @mut span_handler,
 
 fn dup_tt_frame(f: @mut TtFrame) -> @mut TtFrame {
     @mut TtFrame {
-        forest: @mut (*f.forest).clone(),
+        forest: @(*f.forest).clone(),
         idx: f.idx,
         dotdotdoted: f.dotdotdoted,
         sep: f.sep.clone(),
@@ -175,8 +175,7 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
     loop {
         {
             let stack = &mut *r.stack;
-            let forest = &mut *stack.forest;
-            if stack.idx < forest.len() {
+            if stack.idx < stack.forest.len() {
                 break;
             }
         }
index 4c0653a3c04f347064a1fe6926716d08d86b9447..887d3d2014ab0060d9f82ff30af11fa9b1e20664 100644 (file)
@@ -457,10 +457,10 @@ pub fn fold_tts<T:ast_fold>(tts: &[token_tree], fld: &T) -> ~[token_tree] {
         match *tt {
             tt_tok(span, ref tok) =>
             tt_tok(span,maybe_fold_ident(tok,fld)),
-            tt_delim(ref tts) => tt_delim(@mut fold_tts(**tts, fld)),
-            tt_seq(span, ref pattern, ref sep, is_optional) =>
+            tt_delim(tts) => tt_delim(@fold_tts(*tts, fld)),
+            tt_seq(span, pattern, ref sep, is_optional) =>
             tt_seq(span,
-                   @mut fold_tts(**pattern, fld),
+                   @fold_tts(*pattern, fld),
                    sep.as_ref().map(|tok|maybe_fold_ident(tok,fld)),
                    is_optional),
             tt_nonterminal(sp,ref ident) =>
index b9a7ec33ee4ffcd8af5358196c8a820b7a45d289..fab0de4179edbdc576c2e0ce7c2ffd5e3d96eccc 100644 (file)
@@ -2112,7 +2112,7 @@ fn parse_non_delim_tt_tok(p: &Parser) -> token_tree {
                     };
                     tt_seq(
                         mk_sp(sp.lo, p.span.hi),
-                        @mut seq,
+                        @seq,
                         s,
                         z
                     )
@@ -2157,7 +2157,7 @@ fn parse_any_tt_tok(p: &Parser) -> token_tree{
                 result.push(parse_any_tt_tok(self));
                 self.open_braces.pop();
 
-                tt_delim(@mut result)
+                tt_delim(@result)
             }
             _ => parse_non_delim_tt_tok(self)
         }