about summary refs log tree commit diff
path: root/src/libsyntax/ext/auto_encode.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-05-10 15:15:06 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-05-12 16:35:18 -0700
commit5d3559e6455757c5508bba5b5add69477ebac53e (patch)
tree71e166364df7f828c4c98c5853597d2c62c37fac /src/libsyntax/ext/auto_encode.rs
parent06ef889cdc77db862d526bf6a607ecdf3ee80beb (diff)
downloadrust-5d3559e6455757c5508bba5b5add69477ebac53e.tar.gz
rust-5d3559e6455757c5508bba5b5add69477ebac53e.zip
librustc: Make `self` and `static` into keywords
Diffstat (limited to 'src/libsyntax/ext/auto_encode.rs')
-rw-r--r--src/libsyntax/ext/auto_encode.rs24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/libsyntax/ext/auto_encode.rs b/src/libsyntax/ext/auto_encode.rs
index 1d3af61be70..e1416230720 100644
--- a/src/libsyntax/ext/auto_encode.rs
+++ b/src/libsyntax/ext/auto_encode.rs
@@ -245,6 +245,7 @@ trait ExtCtxtMethods {
     fn expr_path(&self, span: span, strs: ~[ast::ident]) -> @ast::expr;
     fn expr_path_global(&self, span: span, strs: ~[ast::ident]) -> @ast::expr;
     fn expr_var(&self, span: span, var: &str) -> @ast::expr;
+    fn expr_self(&self, span: span) -> @ast::expr;
     fn expr_field(&self, span: span, expr: @ast::expr, ident: ast::ident)
                   -> @ast::expr;
     fn expr_call(&self, span: span, expr: @ast::expr, args: ~[@ast::expr])
@@ -450,6 +451,10 @@ impl ExtCtxtMethods for @ext_ctxt {
         self.expr_path(span, ~[self.ident_of(var)])
     }
 
+    fn expr_self(&self, span: span) -> @ast::expr {
+        self.expr(span, ast::expr_self)
+    }
+
     fn expr_field(
         &self,
         span: span,
@@ -790,12 +795,8 @@ fn mk_struct_ser_impl(
         let expr_lambda = cx.lambda_expr_1(
             cx.expr_method_call(
                 span,
-                cx.expr_field(
-                    span,
-                    cx.expr_var(span, "self"),
-                    field.ident
-                ),
-                cx.ident_of("encode"),
+                cx.expr_field(span, cx.expr_self(span), field.ident),
+                cx.ident_of(~"encode"),
                 ~[cx.expr_var(span, "__s")]
             ),
             cx.ident_of("__s")
@@ -1062,13 +1063,10 @@ fn mk_enum_ser_body(
     // ast for `match *self { $(arms) }`
     let match_expr = cx.expr(
         span,
-        ast::expr_match(
-            cx.expr(
-                span,
-                ast::expr_unary(ast::deref, cx.expr_var(span, "self"))
-            ),
-            arms
-        )
+        ast::expr_match(cx.expr(span,
+                                ast::expr_unary(ast::deref,
+                                                cx.expr_self(span))),
+                        arms)
     );
 
     // ast for `__s.emit_enum($(name), || $(match_expr))`