about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-05-03 17:07:57 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-05-03 17:08:18 -0700
commita7e0eb35819bb9171b60f2854753f7784da6a087 (patch)
tree2412d211f8a533185669d3fc8c5c2ce02e54f952 /src/rustc
parentc6d33c3d37c0e9f8db88b7402da45506d7f44d33 (diff)
downloadrust-a7e0eb35819bb9171b60f2854753f7784da6a087.tar.gz
rust-a7e0eb35819bb9171b60f2854753f7784da6a087.zip
allow enums that ref themselves via unsafe pointers
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/ty.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs
index cf8f223afd9..a64c1a5a777 100644
--- a/src/rustc/middle/ty.rs
+++ b/src/rustc/middle/ty.rs
@@ -1475,11 +1475,14 @@ fn is_instantiable(cx: ctxt, r_ty: t) -> bool {
 
           ty_box(mt) |
           ty_uniq(mt) |
-          ty_ptr(mt) |
           ty_rptr(_, mt) {
             be type_requires(cx, seen, r_ty, mt.ty);
           }
 
+          ty_ptr(mt) {
+            false           // unsafe ptrs can always be NULL
+          }
+
           ty_rec(fields) {
             vec::any(fields) {|field|
                 type_requires(cx, seen, r_ty, field.mt.ty)