aboutsummaryrefslogtreecommitdiff
path: root/src/boot/fe
diff options
context:
space:
mode:
authorTim Chevalier <[email protected]>2011-05-02 11:23:07 -0700
committerGraydon Hoare <[email protected]>2011-05-02 12:16:29 -0700
commitaa25f22f197682de3b18fc4c8ba068d1feda220f (patch)
tree6d01f8fbb5680964fd9c53564c96aa58cb75d3d1 /src/boot/fe
parentrustc: Add a "fat tydesc" LLVM type to trans (diff)
downloadrust-aa25f22f197682de3b18fc4c8ba068d1feda220f.tar.xz
rust-aa25f22f197682de3b18fc4c8ba068d1feda220f.zip
Use different syntax for checks that matter to typestate
This giant commit changes the syntax of Rust to use "assert" for "check" expressions that didn't mean anything to the typestate system, and continue using "check" for checks that are used as part of typestate checking. Most of the changes are just replacing "check" with "assert" in test cases and rustc.
Diffstat (limited to 'src/boot/fe')
-rw-r--r--src/boot/fe/item.ml8
-rw-r--r--src/boot/fe/lexer.mll1
-rw-r--r--src/boot/fe/token.ml2
3 files changed, 11 insertions, 0 deletions
diff --git a/src/boot/fe/item.ml b/src/boot/fe/item.ml
index 6b232e7e..70e59be3 100644
--- a/src/boot/fe/item.ml
+++ b/src/boot/fe/item.ml
@@ -199,6 +199,14 @@ and parse_stmts_including_none (ps:pstate) : Ast.stmt array =
bump ps;
expect ps SEMI;
[| span ps apos (lexpos ps) Ast.STMT_cont |]
+ | ASSERT ->
+ bump ps;
+ let (stmts, expr) =
+ ctxt "stmts: check value" parse_expr ps
+ in
+ expect ps SEMI;
+ spans ps stmts apos (Ast.STMT_check_expr expr)
+(* leaving check as it is; adding assert as a synonym for the "old" check *)
| CHECK ->
bump ps;
begin
diff --git a/src/boot/fe/lexer.mll b/src/boot/fe/lexer.mll
index b375b874..a65acba1 100644
--- a/src/boot/fe/lexer.mll
+++ b/src/boot/fe/lexer.mll
@@ -92,6 +92,7 @@
("type", TYPE);
("check", CHECK);
+ ("assert", ASSERT);
("claim", CLAIM);
("prove", PROVE);
diff --git a/src/boot/fe/token.ml b/src/boot/fe/token.ml
index 0b157983..27cb399b 100644
--- a/src/boot/fe/token.ml
+++ b/src/boot/fe/token.ml
@@ -77,6 +77,7 @@ type token =
(* Type and type-state keywords *)
| TYPE
| CHECK
+ | ASSERT
| CLAIM
| PROVE
@@ -237,6 +238,7 @@ let rec string_of_tok t =
(* Type and type-state keywords *)
| TYPE -> "type"
| CHECK -> "check"
+ | ASSERT -> "assert"
| CLAIM -> "claim"
| PROVE -> "prove"