diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index 0876e609396c5..6e232d0041604 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -53,7 +53,7 @@ use syntax::errors::Handler;
 use syntax::ext::mtwt;
 use syntax::ptr::P;
 use syntax::codemap::{respan, Spanned, Span};
-use syntax::parse::token;
+use syntax::parse::token::{self, keywords};
 use syntax::std_inject;
 use syntax::visit::{self, Visitor};
 
@@ -141,7 +141,11 @@ impl<'a, 'hir> LoweringContext<'a> {
 
 pub fn lower_ident(_lctx: &LoweringContext, ident: Ident) -> hir::Ident {
     hir::Ident {
-        name: mtwt::resolve(ident),
+        name: if ident.name != keywords::SelfValue.name() {
+            mtwt::resolve(ident)
+        } else {
+            ident.name
+        },
         unhygienic_name: ident.name,
     }
 }
diff --git a/src/test/run-pass/self-unhygienic.rs b/src/test/run-pass/self-unhygienic.rs
new file mode 100644
index 0000000000000..922ece5fdf89a
--- /dev/null
+++ b/src/test/run-pass/self-unhygienic.rs
@@ -0,0 +1,31 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Check that `self` is unhygienic
+
+struct A {
+    pub v: i64
+}
+
+macro_rules! pretty {
+    ( $t:ty => $body:block ) => (
+        impl $t {
+            pub fn pretty(&self) -> String $body
+        }
+    )
+}
+
+pretty! (A => {
+    format!("<A:{}>", self.v)
+});
+
+fn main() {
+    assert_eq!(format!("Pretty: {}", A { v: 3 }.pretty()), "Pretty: <A:3>");
+}