summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-03-08 15:07:35 -0800
committerPatrick Walton <pcwalton@mimiga.net>2012-03-08 15:08:26 -0800
commit8047c0cd68baaee21ac89ac7d933bc84b7ebcf3e (patch)
treed3292fadb293ca593ec8fb1e3991a929cc160d38 /src
parent57596cbe53e826feec2d0fba5293249306d70403 (diff)
downloadrust-8047c0cd68baaee21ac89ac7d933bc84b7ebcf3e.tar.gz
rust-8047c0cd68baaee21ac89ac7d933bc84b7ebcf3e.zip
rustc: Typecheck dereference operations on safe references.
They require unsafe blocks for now. This will be removed once they typecheck properly.
Diffstat (limited to 'src')
-rw-r--r--src/rustc/middle/typeck.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rustc/middle/typeck.rs b/src/rustc/middle/typeck.rs
index 8770a109f1d..85dbedaefcc 100644
--- a/src/rustc/middle/typeck.rs
+++ b/src/rustc/middle/typeck.rs
@@ -2170,6 +2170,13 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
                 oper_t = inner.ty;
                 require_unsafe(tcx.sess, fcx.purity, expr.span);
               }
+              ty::ty_rptr(_, inner) {
+                // FIXME: This shouldn't be unsafe for now, but we enforce it
+                // for now to safeguard the language until we're properly
+                // typechecking regions.
+                oper_t = inner.ty;
+                require_unsafe(tcx.sess, fcx.purity, expr.span);
+              }
               _ {
                   tcx.sess.span_err(expr.span,
                       #fmt("Type %s cannot be dereferenced",