about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-03-05 20:05:02 +0000
committerGraydon Hoare <graydon@mozilla.com>2011-03-05 20:05:02 +0000
commitd97c800e3179604db82e35bff682ea1ed6ec3909 (patch)
tree2e2626267568eedc209da557d1e887afd5ec2459 /src
parent94b681afe4f8fb09141d459963b268c76fbd0072 (diff)
downloadrust-d97c800e3179604db82e35bff682ea1ed6ec3909.tar.gz
rust-d97c800e3179604db82e35bff682ea1ed6ec3909.zip
Make ret and fail stmts have 0 out-edges, Closes #250.
Diffstat (limited to 'src')
-rw-r--r--src/boot/me/typestate.ml5
-rw-r--r--src/comp/front/lexer.rs5
-rw-r--r--src/comp/middle/fold.rs4
-rw-r--r--src/comp/middle/ty.rs2
4 files changed, 9 insertions, 7 deletions
diff --git a/src/boot/me/typestate.ml b/src/boot/me/typestate.ml
index 1c9c90eaa4a..8b7840a2837 100644
--- a/src/boot/me/typestate.ml
+++ b/src/boot/me/typestate.ml
@@ -865,6 +865,11 @@ let rec build_flow_graph_for_stmt
         | Ast.STMT_block b ->
             blk predecessors b
 
+        | Ast.STMT_fail
+        | Ast.STMT_ret _ ->
+            connect predecessors [s.id];
+            []
+
         | _ ->
             connect predecessors [s.id];
             [s.id]
diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs
index 99e9217f507..0e15e3d8c35 100644
--- a/src/comp/front/lexer.rs
+++ b/src/comp/front/lexer.rs
@@ -665,12 +665,9 @@ impure fn next_token(reader rdr) -> token.token {
         case ('%') {
             ret binop(rdr, token.PERCENT);
         }
-
     }
 
-    log "lexer stopping at ";
-    log c;
-    ret token.EOF;
+    fail;
 }
 
 
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs
index c7041b26354..935f426b74f 100644
--- a/src/comp/middle/fold.rs
+++ b/src/comp/middle/fold.rs
@@ -701,7 +701,7 @@ fn fold_expr[ENV](&ENV env, ast_fold[ENV] fld, &@expr e) -> @expr {
 
     }
 
-    ret e;
+    fail;
 }
 
 
@@ -724,7 +724,7 @@ fn fold_stmt[ENV](&ENV env, ast_fold[ENV] fld, &@stmt s) -> @stmt {
             ret fld.fold_stmt_expr(env_, s.span, ee);
         }
     }
-    ret s;
+    fail;
 }
 
 fn fold_block[ENV](&ENV env, ast_fold[ENV] fld, &block blk) -> block {
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 2fc3160cc01..0b6ef53bf6d 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -373,7 +373,7 @@ fn fold_ty(ty_fold fld, @t ty) -> @t {
         case (ty_param(_))      { ret fld.fold_simple_ty(ty); }
     }
 
-    ret ty;
+    fail;
 }
 
 // Type utilities