Marijn Haverbeke
1af3174fe3
Move to single-uint file-position representation.
...
This makes passing them around cheaper. There is now a table (see
front/codemap.rs) that is needed to transform such an uint into an
actual filename/line/col location.
Also cleans up the span building in the parser a bit.
2011-04-09 01:05:18 +02:00
Marijn Haverbeke
094d31f5e4
Make lexer buffer the whole file
...
This way, it won't have to go through a bunch of calls for each
byte fetched.
2011-04-09 01:05:18 +02:00
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
Marijn Haverbeke
39774e88b4
Add a very basic crate-dump utility
...
'rustc -ls [cratelib]' will now dump out a list of symbols defined by
the crate, as well as a short description of what they are.
2011-04-07 14:19:19 -07:00
Marijn Haverbeke
ac3026412b
Revise EBML reader API
...
New one is less stateful, easier to work with.
2011-04-07 14:19:16 -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
4fc8de1969
Last pieces of self-call support.
...
The last few pieces of the hack that lets us use trans.trans_call() to
translate self-calls, plus a fix for the parser buy that was
preventing self-call expressions from getting past parsing.
test/run-pass/obj-self.rs works now (as in it actually prints "hi!"
twice!).
2011-04-05 16:26:31 -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
Graydon Hoare
0397c05f42
Support for passing native types through metadata/creader.
2011-04-01 17:04:51 -07:00
Patrick Walton
6dc452335a
rustc: Get tag variants from the crate metadata
2011-04-01 13:02:44 -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
Patrick Walton
bdea343879
rustc: Use the path index. Speeds up compilation a lot.
2011-03-31 18:28:59 -07:00
Patrick Walton
fffc5d3b3d
rustc: Write out a path index as well
2011-03-31 18:28:59 -07:00
Graydon Hoare
1b65a61cad
Couple minor bug fixes in creader, lib-bitv, int, rand, sort, sha1, uint and vec all work.
2011-03-31 15:57:36 -07:00
Patrick Walton
3c1de96cda
rustc: Use the crate index to look up defs
2011-03-31 14:37:44 -07:00
Patrick Walton
3945ace520
rustc: Write out an index of definition info in crate metadata
2011-03-31 11:56:02 -07:00
Brian Anderson
50e354611f
Remove redundant parser logic.
...
These cases are all dealt with in parse_expr_inner.
2011-03-31 14:52:29 +00:00
Marijn Haverbeke
6a75740e96
handle unterminated block comments and line comment at eof
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
39f0656b4f
Improve line comment positioning
...
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
8a7ea941bb
Support break and cont in pretty-printer
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
Marijn Haverbeke
e7e6f396d8
Preserve comments when pretty-printing.
...
The patch also includes a number of smaller fixes to the
pretty-printer that were encountered on the way.
2011-03-31 14:41:39 +00:00
Patrick Walton
ab8d200fb0
rustc: Read 'y' tags from external crates
2011-03-30 18:28:33 -07: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
Patrick Walton
626bdaaa1f
rustc: Parse parameter IDs in external crate metadata. Un-XFAIL lib-bitv.rs.
2011-03-29 17:25:55 -07:00
Patrick Walton
c67eb1a575
rustc: Partially resolve external module imports
2011-03-29 17:01:27 -07:00
Patrick Walton
6a5feffd6c
rustc: Tolerate def id tags inside module tags. Fixes metadata reading.
2011-03-29 16:43:27 -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
f6490a6f03
Ignore 'mutable foo' in plain field contexts.
2011-03-29 15:40:21 -07:00
Patrick Walton
94c061729b
rustc: Resolve external modules and native modules to definition IDs as well
2011-03-29 14:46:42 -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
2809e30d1d
rustc: Parse types in external metadata
2011-03-28 16:49:26 -07:00
Patrick Walton
ace2c92a96
rustc: Populate the item types table with types of items from external crates; remove the redundant typeck.ty_and_params type on the way
2011-03-28 14:42:01 -07:00
Patrick Walton
62f4709953
rustc: Resolve def ids in external crates
2011-03-28 13:29:59 -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
ac6e1131e9
Teach creader and metadata writer how to do ty.ty_type.
2011-03-26 17:35:51 -07:00
Patrick Walton
bea41aa7d8
rustc: Add a function to look up external item info in the item info table
2011-03-25 19:02:19 -07:00
Graydon Hoare
027368b885
Janitorial: move llvmext back to llvm module, as they're the same thing now.
2011-03-25 18:45:00 -07:00
Patrick Walton
24a75eeccc
rustc: Parse definition IDs from crates; add a function to parse unsigned ints to the standard library
2011-03-25 18:35:30 -07:00
Patrick Walton
94c19a18ae
rustc: Look up names in "use"d crates
2011-03-25 17:54:48 -07: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
3712ee68ad
Sketch of wiring typeck up to creader.
2011-03-25 14:34:32 -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 846f2e2ba9
.
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
Tim Chevalier
a47cd50dfb
Parse FP literals without coercing to int. This allows parsing 64-bit
...
floats. However, if someone writes a literal that can't be represented
precisely in 64 bits, the front-end will accept it while the back-end
will (presumably) complain.
2011-03-25 11:20:30 -07:00
Patrick Walton
e2d6475308
rustc: Store cached crate metadata in the session
2011-03-25 11:11:21 -07:00
Brian Anderson
9ca7acb1f3
Update pretty printer for ports, channels, send and receive
2011-03-25 11:01:52 -07:00
Brian Anderson
ebc4df3c7a
Implement local declarations with receive. Un-XFAIL decl-with-recv.rs.
2011-03-25 11:01:52 -07:00
Brian Anderson
71f058499a
Refactor ast.local to make room for initialization via recv
2011-03-25 11:01:52 -07:00
Marijn Haverbeke
d4c3059e1e
make lexer unicode-aware for strings and char literals
2011-03-25 08:23:00 -07:00
Marijn Haverbeke
a045514477
Start making the standard-lib utf-8 aware
...
Finally implements _str.is_utf8, adds from_chars, from_char, to_chars,
char_at, char_len, (push|pop|shift|unshift)_char. Also, proper
character I/O for streams.
2011-03-25 08:22:52 -07:00
Graydon Hoare
4e49ca8abd
Start hooking resolve into creater.
2011-03-24 17:37:32 -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
Graydon Hoare
86f1ace55b
Teach creader about reading ty_float, and trim trailing whitespace.
2011-03-24 11:50:45 -07:00
Lindsey Kuper
0b63512f4c
Support for 'float' in type signatures.
2011-03-23 16:01:29 -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
Patrick Walton
3dec5b5e50
rustc: Remove uses of Unicode in type deserialization and fix vector-push operations
2011-03-21 12:03:34 -07:00
Patrick Walton
84c0d8638e
rustc: Update type serialization and deserialization for the "mutable?" change
2011-03-21 11:44:08 -07:00
Marijn Haverbeke
86d05655b4
rustc: Merge in type serialization and deserialization
...
Signed-off-by: Patrick Walton <pcwalton@mimiga.net>
2011-03-21 11:35:04 -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
8b82a549bf
rustc: When encountering "mutable" as a tycon, parse it, drop it on the floor, and emit a warning
2011-03-18 13:44:54 -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
ed96688be5
rustc: Typo: mutabliity -> mutability
2011-03-17 16:39:10 -07:00
Graydon Hoare
54587bdccb
Switch all vases of vec += elt to vec += vec. Prohibit former in rustboot. Tweak std lib vec fns in process.
2011-03-16 14:58:02 -07:00
Rafael Ávila de Espíndola
e65e1716a7
Revert 6fdb81fa17
, it is causing failures in
...
the bots.
2011-03-16 11:46:51 -04:00
Patrick Walton
1d8b0e8f8a
rustc: Remove the memory-managed interface to LLVM memory buffers; passing them around transfers ownership
2011-03-15 18:08:30 -07:00
Patrick Walton
6fdb81fa17
rustc: Open "use"d crates with the LLVM object file reader
2011-03-15 18:05:29 -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
f0842030f3
Fix typo in expr_recv parsing
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
Marijn Haverbeke
441697ab35
Extend stream functionality
...
Writer and reader streams now come with methods to write and read
little-endian numbers. Whether that is the right place for such
methods is debatable, but for now, that's where they live.
2011-03-14 14:57:13 -07:00
Marijn Haverbeke
c731d625fe
Add basic file-system functionality
...
std.fs.list_dir will list the files in a directory, std.fs.file_is_dir
will, given a pathname, determine whether it is a directory or not.
2011-03-14 14:57:13 -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
Rafael Ávila de Espíndola
4ca0259b20
Update the current id when we create sub parsers.
2011-03-10 17:36:41 -05:00
Graydon Hoare
0d3cec71a3
Fix eval typo (caught by Martin Hock).
2011-03-10 10:17:10 -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
fa2525a7bd
Remove old pretty-printer from rustc
2011-03-07 22:06:07 -05: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
dfa85968c3
Stage the last compile fix to put out fire. Thanks git.
2011-03-07 10:33:04 -08:00
Graydon Hoare
44bceb84a7
Complain on unexpected native symbol, rather than failing with none-exhaustive match.
2011-03-07 10:02:01 -08:00
Marijn Haverbeke
1ce6cfbe7c
use a precedence table for operator parsing
2011-03-07 15:32:11 +01:00