diff --git a/src/librustc/middle/typeck/astconv.rs b/src/librustc/middle/typeck/astconv.rs
index a232aa764dd..e018cf6f940 100644
--- a/src/librustc/middle/typeck/astconv.rs
+++ b/src/librustc/middle/typeck/astconv.rs
@@ -57,7 +57,7 @@ use core::prelude::*;
 use middle::ty::{arg, field, substs};
 use middle::ty::{ty_param_substs_and_ty};
 use middle::ty;
-use middle::typeck::rscope::{in_anon_rscope, in_binding_rscope};
+use middle::typeck::rscope::{in_binding_rscope};
 use middle::typeck::rscope::{region_scope, type_rscope};
 use middle::typeck::{CrateCtxt, write_substs_to_tcx, write_ty_to_tcx};
 
@@ -315,8 +315,7 @@ pub fn ast_ty_to_ty<AC:AstConv, RS:region_scope + Copy + Durable>(
       }
       ast::ty_rptr(region, mt) => {
         let r = ast_region_to_region(self, rscope, ast_ty.span, region);
-        let anon_rscope = in_anon_rscope(rscope, r);
-        mk_pointer(self, &anon_rscope, mt, ty::vstore_slice(r),
+        mk_pointer(self, rscope, mt, ty::vstore_slice(r),
                    |tmt| ty::mk_rptr(tcx, r, tmt))
       }
       ast::ty_tup(fields) => {
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index 45c0992cc9b..2cb06e783dd 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+n// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -95,7 +95,7 @@ use middle::typeck::check::vtable::{LocationInfo, VtableContext};
 use middle::typeck::CrateCtxt;
 use middle::typeck::infer::{resolve_type, force_tvar};
 use middle::typeck::infer;
-use middle::typeck::rscope::{anon_rscope, binding_rscope, bound_self_region};
+use middle::typeck::rscope::{binding_rscope, bound_self_region};
 use middle::typeck::rscope::{in_binding_rscope, region_scope, type_rscope};
 use middle::typeck::rscope;
 use middle::typeck::{isr_alist, lookup_def_ccx, method_map_entry};
diff --git a/src/librustc/middle/typeck/rscope.rs b/src/librustc/middle/typeck/rscope.rs
index 84c68197e0c..77da34a31e9 100644
--- a/src/librustc/middle/typeck/rscope.rs
+++ b/src/librustc/middle/typeck/rscope.rs
@@ -27,7 +27,7 @@ pub trait region_scope {
 pub enum empty_rscope { empty_rscope }
 impl region_scope for empty_rscope {
     fn anon_region(&self, _span: span) -> Result<ty::Region, ~str> {
-        Ok(ty::re_static)
+        result::Err(~"only the static region is allowed here")
     }
     fn self_region(&self, _span: span) -> Result<ty::Region, ~str> {
         result::Err(~"only the static region is allowed here")
@@ -62,14 +62,14 @@ impl region_scope for MethodRscope {
 pub enum type_rscope = Option<ty::region_variance>;
 impl region_scope for type_rscope {
     fn anon_region(&self, _span: span) -> Result<ty::Region, ~str> {
-        // if the anon or self region is used, region parameterization should
+        result::Err(~"anonymous region types are not permitted here")
+    }
+    fn self_region(&self, _span: span) -> Result<ty::Region, ~str> {
+        // if the self region is used, region parameterization should
         // have inferred that this type is RP
         assert self.is_some();
         result::Ok(ty::re_bound(ty::br_self))
     }
-    fn self_region(&self, span: span) -> Result<ty::Region, ~str> {
-        self.anon_region(span)
-    }
     fn named_region(&self, span: span, id: ast::ident)
                       -> Result<ty::Region, ~str> {
         do empty_rscope.named_region(span, id).chain_err |_e| {
@@ -87,33 +87,6 @@ pub fn bound_self_region(rp: Option<ty::region_variance>)
     }
 }
 
-pub struct anon_rscope { anon: ty::Region, base: @region_scope }
-pub fn in_anon_rscope<RS:region_scope + Copy + Durable>(
-    self: &RS,
-    r: ty::Region) -> anon_rscope
-{
-    let base = @(copy *self) as @region_scope;
-    anon_rscope {anon: r, base: base}
-}
-impl region_scope for anon_rscope {
-    fn anon_region(&self,
-                   _span: span) -> Result<ty::Region, ~str>
-    {
-        result::Ok(self.anon)
-    }
-    fn self_region(&self,
-                   span: span) -> Result<ty::Region, ~str>
-    {
-        self.base.self_region(span)
-    }
-    fn named_region(&self,
-                    span: span,
-                    id: ast::ident) -> Result<ty::Region, ~str>
-    {
-        self.base.named_region(span, id)
-    }
-}
-
 pub struct binding_rscope {
     base: @region_scope,
     anon_bindings: @mut uint,