Lindsey Kuper
1092bbfff0
Support for self-calls that take arguments.
...
Nicer parsing of self-calls (expr_self_method nodes inside expr_call
nodes, rather than a separate expr_call_self) makes typechecking
tractable. We can now write self-calls that take arguments and return
values (see: test/run-pass/obj-self-*.rs).
2011-04-07 14:26:34 -07:00
Tim Chevalier
2e90bd94de
Continued sketching out code for checking states against preconditions.
...
It's still sketchy. I added a typestate annotation field to statements
tagged stmt_decl or stmt_expr, because a stmt_decl statement has a typestate
that's different from that of its child node. This necessitated trivial
changes to a bunch of other files all over to the compiler. I also added a
few small standard library functions, some of which I didn't actually end
up using but which I thought might be useful anyway.
2011-04-06 17:58:18 -07:00
Lindsey Kuper
b8bb2e118e
Further on the path toward self-awareness.
...
Mostly:
* Merciless refactoring of trans.rs so that trans_call can work for
self-calls as well as other kinds of calls
Also:
* Various changes to go with having idents, rather than exprs, in
expr_call_self AST nodes
* Added missing case for SELF token to token.to_str()
2011-04-05 14:54:48 -07:00
Graydon Hoare
70e5457d7c
Make box prefix operator and box type carry mutability flag.
2011-04-04 15:44:15 -07:00
Tim Chevalier
3130348ee1
Started adding support for typestate checking.
...
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.
The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton
c66edca83d
rustc: Add a type annotation to tag items
2011-03-31 19:12:40 -07:00
Marijn Haverbeke
39f0656b4f
Improve line comment positioning
...
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
f8393cc572
Add effect field to ast.ty_fn.
...
Still not used, except by the pretty-printer.
2011-03-31 14:41:40 +00:00
Patrick Walton
cc59cea8b0
rustc: Thread an item-to-type mapping throughout the typechecking and translation phases
2011-03-30 17:28:06 -07:00
Lindsey Kuper
55fbed3d8d
Beginnings of support for magical self prefix; nothing profound happening yet.
2011-03-29 15:59:15 -07:00
Graydon Hoare
734abe593d
Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now.
2011-03-29 13:23:51 -07:00
Brian Anderson
2b27d12ce1
Add expr_spawn, spawn parsing, folding, typechecking, ty_task
2011-03-28 21:13:53 -07:00
Patrick Walton
81695a19f8
rustc: Add support for calling LLVM intrinsics as native functions
2011-03-28 08:24:58 -07:00
Marijn Haverbeke
6ecdc04788
Add support for break and cont to rustc
...
Testing proper cleanup is hampered by
https://github.com/graydon/rust/issues/293
2011-03-27 14:11:23 +02:00
Graydon Hoare
b2427509e2
Another go at changing compile-command, this time using RBUILD env var.
2011-03-25 15:07:27 -07:00
Graydon Hoare
91c2b82b09
Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
...
This reverts commit 846f2e2ba994268725f38c36fa12f1a09f21615c.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9
Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root.
2011-03-25 13:48:37 -07:00
Patrick Walton
e2d6475308
rustc: Store cached crate metadata in the session
2011-03-25 11:11:21 -07:00
Brian Anderson
71f058499a
Refactor ast.local to make room for initialization via recv
2011-03-25 11:01:52 -07:00
Patrick Walton
af3d0d1848
rustc: Open "use"d crates; add a _vec.vec_from_buf() method along the way; XFAIL use-import-export.rs in rustc
2011-03-24 17:22:07 -07:00
Tim Chevalier
23e23bd762
Further support for floating-point. Literals with exponents work
...
and literals with the 'f32' or 'f64' suffixes work as well. In
addition, logging things with the f32 or f64 type works. (float is
still assumed to be a synonym for f64).
2011-03-22 17:31:27 -07:00
Tim Chevalier
caa22c9341
Started adding support for floating-point type, floating-point literals, and logging of floats. Other operations on float probably don't work yet.
2011-03-21 18:10:34 -07:00
Graydon Hoare
4b946cea35
Modify native_item_fn to handle trailing linkage names that differ from the item name (used in win32 build of std.dll)
2011-03-20 20:18:19 -07:00
Patrick Walton
2ef9c01ffc
rustc: Implement "mutable?". Add a test case and XFAIL it in rustboot for now.
2011-03-18 11:49:47 -07:00
Patrick Walton
5eca7129e3
rustc: Switch mutability from being a type constructor to a field annotation
2011-03-17 17:39:47 -07:00
Patrick Walton
71b6e602c5
rustc: Add an annotation for the crate definition to view_item_use
2011-03-15 17:33:05 -07:00
Patrick Walton
7d32f3d052
rustc: Add a stub crate reader module for "use" directives
2011-03-15 16:30:43 -07:00
Graydon Hoare
7f5bffc3ea
Merge remote branch 'brson/recursive-elseif'
2011-03-14 16:59:04 -07:00
Brian Anderson
a309f74a94
Reorganize evaluation of expr_send/recv to put them closer to expr_assign, to which they are similar
2011-03-14 16:41:46 -07:00
Brian Anderson
7464237256
Add folding and type checking for ports and chans
2011-03-14 16:41:46 -07:00
Brian Anderson
292dac644f
Parse receive expressions
2011-03-14 16:41:46 -07:00
Brian Anderson
80e0ebaa86
Parse port and chan types, constructors, send statements
2011-03-14 16:41:46 -07:00
Brian Anderson
bbb6836da0
Merge branch 'master' into recursive-elseif
...
Conflicts:
src/comp/middle/typeck.rs
2011-03-13 19:40:25 -04:00
Graydon Hoare
ec7e84ae0d
Preserve crate directives in the parsed crate.
2011-03-11 15:49:56 -08:00
Rafael Ávila de Espíndola
74d891517b
reindex the block index.
2011-03-11 17:35:33 -05:00
Rafael Ávila de Espíndola
28d51e3fd2
Add support for indexing tags in blocks.
2011-03-11 17:12:25 -05:00
Rafael Ávila de Espíndola
0117cf2fc2
Handle resolving to native modules.
2011-03-10 21:33:53 -05:00
Patrick Walton
7454b53411
rustc: Build up a list of upvars inside foreach bodies
2011-03-10 16:49:00 -08:00
Patrick Walton
4654faa67c
rustc: Add a slot for explicit type parameter instantations to the typechecker's AST annotation
2011-03-08 12:42:56 -08:00
Brian Anderson
9fc4db6b89
Merge branch 'master' into recursive-elseif
...
Conflicts:
src/Makefile
src/comp/front/ast.rs
src/comp/front/parser.rs
src/comp/middle/fold.rs
src/comp/middle/trans.rs
2011-03-07 21:21:01 -05:00
Graydon Hoare
df3038e68b
Parse opacity (and drop on the floor), so std.rc parses now.
2011-03-07 15:38:20 -08:00
Marijn Haverbeke
0624f9db4a
Add a pretty-printer
...
Adds a -pp option to the compiler which will cause it to simply
pretty-print the given file.
2011-03-07 12:58:08 -08:00
Graydon Hoare
90f299e710
Permit view items in native modules.
2011-03-07 11:48:43 -08:00
Graydon Hoare
596face274
Parse (and generally ignore) constraints and constrained types.
2011-03-04 14:19:48 -08:00
Graydon Hoare
02dff96b52
Parse meta directives in crates.
2011-03-04 11:28:40 -08:00
Graydon Hoare
9e4943c922
Parse, add to AST, and otherwise ignore 'export' view items. Need to add support to resolve.
2011-03-02 13:50:42 -08:00
Brian Anderson
dbd90996ee
Remove unused is_ext_expr
2011-03-02 10:28:15 -08:00
Brian Anderson
c1e6f5328c
Make the expanded expression in expr_ext not optional
2011-03-02 10:28:15 -08:00
Brian Anderson
9528c34774
Begin implementing #fmt in rustc
2011-03-02 10:28:14 -08:00
Graydon Hoare
64ab5eaaf0
Parse (and ignore) dtors on objs.
2011-03-01 17:33:17 -08:00