about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-12-02 15:54:45 -0800
committerGraydon Hoare <graydon@mozilla.com>2010-12-02 15:54:45 -0800
commitcdcab742a72583d6d59b32952df7c7320efd3bc3 (patch)
treee3be349b51206b1c42f9799ebc3d64432cca78e8 /src/comp
parentdf5f8f3e37ca0ebbd2d44d26abbab9dfedb6b088 (diff)
downloadrust-cdcab742a72583d6d59b32952df7c7320efd3bc3.tar.gz
rust-cdcab742a72583d6d59b32952df7c7320efd3bc3.zip
Fix fold bug on expr_unary.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/fold.rs2
-rw-r--r--src/comp/middle/typeck.rs2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs
index 203b8fdaf03..8ec0bd2fa67 100644
--- a/src/comp/middle/fold.rs
+++ b/src/comp/middle/fold.rs
@@ -404,7 +404,7 @@ fn fold_expr[ENV](&ENV env, ast_fold[ENV] fld, &@expr e) -> @expr {
 
         case (ast.expr_unary(?op, ?a, ?t)) {
             auto aa = fold_expr(env_, fld, a);
-            ret fld.fold_expr_unary(env_, e.span, op, a, t);
+            ret fld.fold_expr_unary(env_, e.span, op, aa, t);
         }
 
         case (ast.expr_lit(?lit, ?t)) {
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index 7f427c32318..d7df7616f0d 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -271,6 +271,7 @@ fn ast_ty_to_ty(ty_getter getter, &@ast.ty ast_ty) -> @ty {
 
         case (ast.ty_path(?path, ?def)) {
             auto def_id;
+            check (def != none[ast.def]);
             alt (option.get[ast.def](def)) {
                 case (ast.def_ty(?id)) { def_id = id; }
                 case (_) { fail; }
@@ -1247,6 +1248,7 @@ fn check_expr(&fn_ctxt fcx, @ast.expr expr) -> @ast.expr {
 
         case (ast.expr_name(?name, ?defopt, _)) {
             auto t = plain_ty(ty_nil);
+            check (defopt != none[ast.def]);
             alt (option.get[ast.def](defopt)) {
                 case (ast.def_arg(?id)) {
                     check (fcx.locals.contains_key(id));