Commit Graph

2918 Commits

Author SHA1 Message Date
Brian Anderson
675073c266 Convert parser to istrs. Issue #855 2011-08-27 15:54:46 -07:00
Brian Anderson
427d42228f Convert rustc::syntax::eval to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
26516dc8d2 Convert rustc::syntax::token to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
58dedcd090 Convert lexer to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
d2ae28fc99 Convert rustc::util to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
54691f9a6c Convert rustc::metadata to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
7d70685eef Convert the rest of rustc::middle to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
9e01e05f3b Convert rustc::middle::trans to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
f09ef6ec66 Convert rest of the AST to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
f603e912ee Convert local_ctxt to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
afe27d461c Convert crate_ctxt to istrs. Issue #855 2011-08-27 15:54:45 -07:00
Brian Anderson
32b4524806 Convert middle::trans_common to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
fcdbdaf2ab Convert the rest of rustc::lib::llvm to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
d7fa75413f Convert rustc::lib::llvm to istr::sbufs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
7284f820d5 Support istrs in #fmt. Issue #855
The format string may be an istr and istr args may be used with %S
2011-08-27 15:54:44 -07:00
Brian Anderson
6b3f0b21be Convert the rest of rustc::back to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
a58bfced3c Convert back::link to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
9c9c5c9054 Remove ast::identistr. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
03119fe269 Convert ast::ident to istr. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
652332f9d4 Convert std::map::new_str_hash to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
15e3ae7936 Convert std::os to istrs. Issue #855 2011-08-27 15:54:44 -07:00
Brian Anderson
85b4253bc1 Convert std::generic_os to istrs. Issue #855 2011-08-27 15:54:43 -07:00
Brian Anderson
b2408d57f0 Convert portions of rustc to istrs. Recover a lot of performance.
Issue #855
2011-08-27 15:54:43 -07:00
Brian Anderson
fcc031c5b4 Convert std::io to istrs. Issue #855 2011-08-27 15:54:43 -07:00
Brian Anderson
20178b9312 Convert std::run to istrs. Issue #855 2011-08-27 15:53:09 -07:00
Brian Anderson
4cf2e510e0 Convert std::getopts to istrs. Issue #855 2011-08-27 15:53:09 -07:00
Brian Anderson
c2eafd268b Convert std::fs to istrs. Issue #855 2011-08-27 15:53:09 -07:00
Brian Anderson
051f1ff562 Convert std::sha1 to istrs. Issue #855 2011-08-27 15:53:09 -07:00
Brian Anderson
53be480d20 Convert std::int to istrs. Issue #855 2011-08-27 15:53:08 -07:00
Brian Anderson
ee2a11eb4f Convert std::uint to istrs. Issue #855 2011-08-27 15:53:08 -07:00
Brian Anderson
805e3098c5 Don't output bogus spans when reporting a message without one.
Emacs gets confused by <input>:0:0:0:0:
2011-08-27 15:45:11 -07:00
Brian Anderson
609e38d8e7 Output error spans that don't confuse emacs compilation mode. Closes #845 2011-08-27 15:39:53 -07:00
Eric Holk
640886ceb6 Polymorphic MapReduce! 2011-08-26 18:03:33 -07:00
Eric Holk
78f07a1453 Deleting trailing whitespace 2011-08-26 18:03:32 -07:00
Patrick Walton
5fe80a0d48 rt: Allow closures to be logged 2011-08-26 17:05:59 -07:00
Paul Stansifer
230a5869b4 Bugfix. --pretty typed requires expansion. Closes #691. 2011-08-26 15:13:57 -07:00
Brian Anderson
22d4641a30 Fix invalid reads of cstrs in trans 2011-08-26 14:03:22 -07:00
Brian Anderson
2744bcd693 Revert "Use cstrcache in C_str, C_cstr, C_shape."
This reverts commit d5173b1f2c.
2011-08-26 13:58:26 -07:00
Brian Anderson
f0820662c9 Revert "Add rustc::middle::cstrcache for getting c string bufs safely"
This reverts commit 4e136d1fd9.
2011-08-26 13:58:19 -07:00
Brian Anderson
d5173b1f2c Use cstrcache in C_str, C_cstr, C_shape.
This fixes up the current leaks.
2011-08-26 13:20:23 -07:00
Brian Anderson
4e136d1fd9 Add rustc::middle::cstrcache for getting c string bufs safely
We continue to leak string buffers in trans so this creates a way to get c
string buffers from strings while guaranteeing that they are not freed before
use.

Hopefully this can be made efficient in the istr regime.
2011-08-26 13:20:23 -07:00
Tim Chevalier
c02f346e2c Revert "Revert "Use typestate constraints for trans_be""
This reverts commit b0db13956f.

(Should work now that we have a new snapshot)
2011-08-26 10:14:58 -07:00
Marijn Haverbeke
5917d80cd7 Pass stuff to take_ty, free_ty, and drop_ty by address, even when immediate
The glue-calling will spill the values again anyway. This should
prevent a lot of load/spill junk in the output. It is also necessary
to be able to have unique vecs be immediate values (take must know the
actual address to be able to duplicate).
2011-08-26 11:20:10 +02:00
Tim Chevalier
b0db13956f Revert "Use typestate constraints for trans_be"
This reverts commit 1b60bba141.
(Need a snapshot first)
2011-08-26 00:59:41 -07:00
Tim Chevalier
1b60bba141 Use typestate constraints for trans_be
trans_be now has a precondition that its expression argument
is a call expr. Obviously this code may be going away soon, but
I wanted to exercise typestate somehow and this was an easy one :-)
2011-08-26 00:47:21 -07:00
Tim Chevalier
26e1cacb21 Let typestate constraints mention pattern-bound vars 2011-08-26 00:39:50 -07:00
Tim Chevalier
b099760269 Remove remaining use of 'pred' and make 'pred' a non-reserved word. Huzzah\! 2011-08-25 22:26:45 -07:00
Tim Chevalier
48c6953001 Remove typestate workaround that's no longer necessary 2011-08-25 18:48:34 -07:00
Tim Chevalier
f841e89443 Support unchecked blocks
This patch supports the syntax

    unchecked {
      ...
    }

    to disable purity checking within a block. Presumably it will only be
    used within a declared "pure fn". However, there is no checking that it
    doesn't occur elsewhere, and it would be harmless for it to do so.

    I went with Lindsey's suggestion for the syntax, but it's subject to
    change.

    This allows you to write code that uses predicates that call arbitrary
    Rust functions, but you must declare your intentions by wrapping it in
    an unchecked { ... } block. The test case run-pass/unchecked-predicates.rs
    demonstrates how to do that.
2011-08-25 18:28:23 -07:00
Tim Chevalier
1cb85015c3 Change "pred" to "pure fn" within the compiler. 2011-08-25 18:24:40 -07:00
Tim Chevalier
e241f2996d Allow pure fns to have any return type 2011-08-25 17:23:35 -07:00
Patrick Walton
8bd019bdc8 rt: Remember the number of captured type descriptors for objects in the type descriptor crate cache 2011-08-25 14:21:05 -07:00
Brian Anderson
608f7ccded Move ast::pat_id_map to ast::util 2011-08-25 14:15:54 -07:00
Patrick Walton
880fd788eb rustc: Add an extra flag to object tydescs so that shapes know how to find the captured subtydescs 2011-08-25 12:01:10 -07:00
Tim Chevalier
da766791d3 hmm, this should have been in the last commit. Oops. 2011-08-24 14:29:08 -07:00
Tim Chevalier
c6155d1fd1 Change "pred" to "pure fn" (but still accept "pred")
This is part 1 of changing the "pred" keyword to "pure fn".
Right now, the compiler accepts both "pred" and "pure fn".
2011-08-24 14:21:37 -07:00
Marijn Haverbeke
fa97793139 Revert "Back out copy-glue"
This reverts commit 629ee94a0b.
2011-08-24 20:30:20 +02:00
Brian Anderson
60547f6500 Use memmove to load istr literals. Issue #855 2011-08-24 10:24:59 -07:00
Marijn Haverbeke
629ee94a0b Back out copy-glue
This wasn't a good idea after all.
2011-08-24 17:05:53 +02:00
Marijn Haverbeke
15b540ded4 Use a single builder object throughout
This seems to be faster than creating separate ones for each block
context.
2011-08-24 16:57:33 +02:00
Marijn Haverbeke
b9112525ba Move to a more lightweight builder system
You now do

    bld::Ret(bcx, someval)

where you used to say

    bcx.build.Ret(someval)

Two fewer boxes are allocated for each block context, and build calls
no longer go through a vtable.
2011-08-24 16:48:10 +02:00
Marijn Haverbeke
9f44df65ef Ensure values created in an alt guard are cleaned up properly 2011-08-24 14:01:56 +02:00
Marijn Haverbeke
e58c48bdda Optimize += [x] into a simple push operation
This is a preparation for making vectors always-on-the-heap again,
which would cause way too much malloc traffic for this idiom. I will
add an efficient std::vec::push in the future, and migrate += [x] to
that instead.

Reduces compiler code size by 3%
2011-08-24 13:57:27 +02:00
Marijn Haverbeke
bead045f27 Check for is_terminated after translating a block
Closes #861
2011-08-24 10:55:34 +02:00
Brian Anderson
18576e55f7 Resolve a number of FIXMEs 2011-08-23 18:55:37 -07:00
Brian Anderson
c1f2394245 Zero locals with initializers that may break or terminate. Closes #787 2011-08-23 16:29:21 -07:00
Graydon Hoare
c011f13144 Add kind-checking for assign-op, copy, ret, be, fail exprs. Fix caught kinding-violations in rustc and libstd. 2011-08-23 15:58:53 -07:00
Brian Anderson
a3c8d4a5a5 Recheck the while loop contition after continuing. Closes #825 2011-08-23 14:51:22 -07:00
Brian Anderson
7b12924813 Fix pretty-printing of istr literals. Issue #855 2011-08-23 11:09:38 -07:00
Brian Anderson
d6e4fa6b44 Teach rustc to append istrs. Issue #855 2011-08-22 17:40:06 -07:00
Brian Anderson
3ab86fb79e Teach rustc to add istrs. Issue #855 2011-08-22 16:39:18 -07:00
Brian Anderson
aae212727d Encode the istr shape correctly. Issue #855 2011-08-22 16:12:42 -07:00
Brian Anderson
6841f3827a Fix ivec self-append. Closes #816 2011-08-22 15:04:28 -07:00
Brian Anderson
0f1f5e67ea Create correct drop glue for istrs. Issue #855 2011-08-22 14:34:55 -07:00
Brian Anderson
fd8ca2cf5d Translate istr literals. Issue #855 2011-08-22 14:34:36 -07:00
Brian Anderson
0a93a48ff5 Extract trans_ivec::alloc_with_heap from trans_ivec::trans_ivec
Need this for building istrs
2011-08-22 13:30:53 -07:00
Brian Anderson
309a7534d7 Move trans::ivec to middle::trans_ivec 2011-08-22 12:04:05 -07:00
Brian Anderson
179658e20f Move trans_ivec into the ivec module 2011-08-22 11:23:46 -07:00
Brian Anderson
152cbaade7 Move functions from syntax::ast to syntax::ast_util
This leaves syntax::ast just defining the AST, which strikes me as somewhat
nicer
2011-08-22 10:44:04 -07:00
Brian Anderson
a3affaa20f Remove ast::spawn_dom 2011-08-22 10:42:29 -07:00
Marijn Haverbeke
7d08678b74 Implement pattern guards
The syntax is

    alt x {
        mypat where mycond { ... }
    }

The condition may refer to any of the variables bound by the pattern.
When a guard fails, pattern-matching continues with the next pattern.

Closes #857
2011-08-22 17:49:31 +02:00
Marijn Haverbeke
a2466233b4 Fix bug introduced by 1a45a84e73 2011-08-22 17:49:31 +02:00
Marijn Haverbeke
1a45a84e73 Start using copy glue to copy bits that may contain ivecs
This is not currently necessary, but will be, when I land the new ivec
representation.
2011-08-22 14:17:27 +02:00
Marijn Haverbeke
3948f132d9 Write a type_structurally_contains, use it to rewrite has_dynamic_size
(I'll be using this for type-needs-copy-glue in the near future.)
2011-08-22 14:06:20 +02:00
Marijn Haverbeke
42864377a4 Remove silly restriction on passing type params by alias
Since they are now passed by pointer, this is no longer a problem
2011-08-22 14:06:20 +02:00
Marijn Haverbeke
10269dfaeb Replace &ty::t with ty::t throughout the compiler
Type handles are uints, passing them by reference only causes
unnecessary spilling.
2011-08-22 14:06:17 +02:00
Marijn Haverbeke
081caf5bb8 Do not check for self-assign unless dest is initialized
Also, give copy_val and move_val a more sane return type.
2011-08-22 14:05:56 +02:00
Marijn Haverbeke
c930af74d5 Write call_copy_glue 2011-08-22 14:05:54 +02:00
Marijn Haverbeke
cd5e4c21ee Add skeleton of copy glue that actually copies 2011-08-22 11:41:49 +02:00
Marijn Haverbeke
7588a89553 Rename copy_glue back to take_glue 2011-08-22 10:42:56 +02:00
Marijn Haverbeke
b24f978011 Drop arguments on the caller side, not the callee
This makes it easier for the caller to optimize the take/drop away for
temporary values, and opens up new possibilities for alias handling.

Breaks tail calls.
2011-08-22 10:16:09 +02:00
Marijn Haverbeke
35c962e9a1 Pass structural types by pointer, not by value
If we lose tail calls, this is possible. It simplifies things a lot.

Direct motivation: We want ivecs with pointers pointing into
themselves. When copying those, the pointers have to be adjusted. It
is impossible to this when copying them with Load/Store.
2011-08-22 10:16:09 +02:00
Patrick Walton
25416bfae1 rustc: Introduce ABI versioning so we can change value representations without breaking the compiler 2011-08-20 14:22:09 -07:00
Brian Anderson
bc1b6b594b Stop parsing ~[] vector syntax 2011-08-20 11:04:00 -07:00
Brian Anderson
a7d837be74 Stop parsing .() indexes 2011-08-20 11:04:00 -07:00
Brian Anderson
518dc52f85 Reformat
This changes the indexing syntax from .() to [], the vector syntax from ~[] to
[] and the extension syntax from #fmt() to #fmt[]
2011-08-20 11:04:00 -07:00
Patrick Walton
d8d9f2adf2 rustc: Unconditionally zero out all GC-relevant types for now 2011-08-19 17:55:42 -07:00
Brian Anderson
390dd38619 Pretty-print new index syntax 2011-08-19 12:50:05 -07:00
Brian Anderson
7053b6010a Parse x[y] as indexes 2011-08-19 12:50:05 -07:00
Lindsey Kuper
325ea41a1e Getting rid of superfluous log statement. 2011-08-19 12:01:55 -07:00
Michael Sullivan
a7e559ee2e Fix polymorphic iterators. Closes #829. 2011-08-19 11:54:46 -07:00
Brian Anderson
cc2ebbec92 Pretty-print constrained types correctly 2011-08-19 10:16:39 -07:00
Brian Anderson
09e21fe2b9 Pretty-print parens around more things that need disambiguation
Ridiculous stuff like (ret 0) == (log "error")
2011-08-19 10:16:38 -07:00
Brian Anderson
8327416411 Teach the pretty-printer to disambiguate 'if ret { }' et. al 2011-08-19 10:16:38 -07:00
Brian Anderson
113be53df3 Do better at preserving blank lines during pretty-printing 2011-08-19 10:16:38 -07:00
Brian Anderson
8c3ed8640b Don't pretty-print extra blank lines after anon object methods 2011-08-19 10:16:38 -07:00
Marijn Haverbeke
bc998c6140 Use move semantics when returning a local var
(Since the variable won't be used after return anyway.)
2011-08-19 10:19:21 +02:00
Marijn Haverbeke
f6ae60a432 Temporary work-around for issue #843 2011-08-19 10:19:21 +02:00
Tim Chevalier
0ba1037834 Revert "Disable warnings for unused function arguments. Temporary hack."
This reverts commit 1ec2211a98.
2011-08-19 01:15:30 -07:00
Tim Chevalier
1ec2211a98 Disable warnings for unused function arguments. Temporary hack. 2011-08-19 01:10:55 -07:00
Brian Anderson
b02f1f46e5 Don't pretty-print trailing whitespace for blank lines inside block comments 2011-08-18 19:22:10 -07:00
Brian Anderson
84fb821e40 Try harder to disambig blocks followed by various exprs in pprust. Closes #840
As it turns out, it's not just unops we need to worry about. Also tuples and
anything that requires parens.
2011-08-18 18:53:36 -07:00
Michael Sullivan
30b5f851c5 Merge remote-tracking branch 'graydon/master' 2011-08-18 18:16:11 -07:00
Patrick Walton
031529e3fe rustc: Only emit gc root intrinsic calls if the GC flag is on, to work around #836 2011-08-18 18:13:36 -07:00
Michael Sullivan
e7c8019dd9 Kind check tuples. Closes #841. 2011-08-18 18:13:18 -07:00
Michael Sullivan
94c6160c73 Some cleanup in ty_to_str. 2011-08-18 18:13:18 -07:00
Michael Sullivan
f8ac788d66 Print tag names in type error messages. Closes #834. 2011-08-18 18:13:18 -07:00
Tim Chevalier
d81d86440f Handle sequential let semantics properly in typestate
Closes #824
2011-08-18 17:21:55 -07:00
Tim Chevalier
3ddb26e993 Comments 2011-08-18 17:21:55 -07:00
Graydon Hoare
e8bcca2829 Kill another case of a spurious blank line. Closes #809. 2011-08-18 17:02:23 -07:00
Michael Sullivan
6e5af8996d Get rid of equal_type_structures. Closes #514. 2011-08-18 16:31:23 -07:00
Brian Anderson
f5ce3bf15d More misc ivec->vec renaming 2011-08-18 15:01:49 -07:00
Brian Anderson
1739200b02 Rename T_vec to T_evec 2011-08-18 14:36:22 -07:00
Brian Anderson
1aa1f8c4b7 Rename various things from ivec to vec 2011-08-18 14:32:25 -07:00
Brian Anderson
4fc3618233 Change ast::ty_ivec, ty::ty_ivec to ty_vec 2011-08-18 14:11:06 -07:00
Brian Anderson
504ec8b00d Rename some vec upcalls and trans functions from vec* to evec* 2011-08-18 13:09:50 -07:00
Brian Anderson
7903daf86f Remove upcall_new_vec 2011-08-18 13:09:50 -07:00
Brian Anderson
c2d2dad093 Remove ast::ty_vec 2011-08-18 13:09:50 -07:00
Brian Anderson
ec898244f7 Remove seq_kind from ast::expr_vec 2011-08-18 13:09:50 -07:00
Brian Anderson
0a8bffceb3 Simplify the _rust_main/rust_start interface
rust_start will always call _rust_main with the command line args, and it is
_rust_main's responsibility to free the args ivec heap. _rust_main will be
generated slightly differently depending on whether main takes an ivec or not:
if so then it's just passed through to main, otherwise it frees the ivec
directly.
2011-08-18 13:09:49 -07:00
Brian Anderson
c2d8a4df35 Continue transition to an ivec-only main
Only generate a single main function. Rename rust_start_ivec to rust_start,
leaving a transitional rust_start_ivec in place.
2011-08-18 13:09:49 -07:00
Brian Anderson
53eb4a3025 Pretty-print ivecs as [] 2011-08-18 13:09:00 -07:00
Marijn Haverbeke
079fae28e6 Fix long line 2011-08-18 10:23:24 +02:00
Marijn Haverbeke
cd440d338e Remove or _-prefix all unused function arguments
This should make the compilation process a bit less noisy.
2011-08-18 10:02:13 +02:00
Marijn Haverbeke
2885c67d47 Don't warn about unused vars whose name starts with _
Closes #832
2011-08-18 10:02:02 +02:00
Patrick Walton
117d21d6c2 rustc: Stub stack map generation machinery 2011-08-17 19:18:44 -07:00
Patrick Walton
51af43f192 rustc: Use "rust" GC in Rust functions 2011-08-17 18:26:51 -07:00
Patrick Walton
f17edf9829 rustc: Use obstacks in lieu of dynamically-allocated frames only when the frame is actually dynamically-sized 2011-08-17 18:14:57 -07:00
Patrick Walton
0b7af40384 rustc: Use explicit return blocks 2011-08-17 17:49:54 -07:00
Patrick Walton
df51fe36f1 Revert "rt: Use obstacks in lieu of dynamically-sized frames"
This reverts commit cc5fcfce89.
2011-08-17 17:27:31 -07:00
Patrick Walton
49397b5af6 rustc: Remove dead i2p function 2011-08-17 17:26:55 -07:00
Patrick Walton
cc5fcfce89 rt: Use obstacks in lieu of dynamically-sized frames 2011-08-17 17:24:57 -07:00
Tim Chevalier
f023f82090 Track arguments in typestate
Add the infrastructure for arguments -- as well as local vars --
to be deinitialized with move-mode calls. Address Issue #819
2011-08-17 17:15:46 -07:00
Brian Anderson
69d4838169 Stop parsing old-style vec types 2011-08-17 16:08:45 -07:00
Graydon Hoare
5dd62b7d41 Trivial commit to test github AMQP hook 2011-08-17 16:06:33 -07:00
Graydon Hoare
b7bf1dd5b0 Trivial commit to test github AMQP hook 2011-08-17 15:59:26 -07:00
Patrick Walton
72b2f8207d rustc: Add missing "bcx = " 2011-08-17 14:01:59 -07:00
Patrick Walton
702fe5cdac rustc: Run obstack cleanups at the end of each function 2011-08-17 13:58:49 -07:00
Patrick Walton
3aab46b020 rustc: Mark an obstack fencepost when entering a dynamically-sized frame 2011-08-17 13:16:15 -07:00
Patrick Walton
1d7ca9c189 rustc: Add the dynastack upcalls to upcall.rs 2011-08-17 11:43:45 -07:00
Brian Anderson
0d83956e2b Refactor resolve_import
Issue #817
2011-08-17 11:05:20 -07:00
Brian Anderson
206495b0a9 Refactor resolve_import
Issue #817
2011-08-17 11:05:15 -07:00
Brian Anderson
45706a63bf Remove unused case in resolve
Issue #817
2011-08-17 11:05:11 -07:00
Brian Anderson
bfbe8870d7 Refactor import lookup in middle:resolve
Issue #817
2011-08-17 11:05:04 -07:00
Brian Anderson
cd54e77720 Allow multiple imports in a single statement
Like so: import foo::{bar, baz};

Issue #817
2011-08-17 11:04:56 -07:00
Brian Anderson
c6482c0083 Refactor ast::view_item to differentiate between [ident]s and paths 2011-08-17 11:04:05 -07:00
Brian Anderson
67cc5b9e34 Allow multiple exports in a single export statement. Issue #817 2011-08-17 11:04:05 -07:00
Brian Anderson
53df58a177 Purge vecs from the std::test interface 2011-08-17 09:55:55 -07:00
Brian Anderson
7bd0437b08 Convert rustc main to ivecs 2011-08-17 09:55:55 -07:00
Graydon Hoare
5a209c8350 Fix some comments. 2011-08-16 17:39:25 -07:00
Graydon Hoare
ce276211f5 Remove dead send/recv operator tokens. 2011-08-16 17:39:25 -07:00
Michael Sullivan
07225e2169 Make a call with the wrong number of arguments non-fatal. Closes #784. 2011-08-16 16:41:29 -07:00
Michael Sullivan
837342242c Make fewer typechecker errors immediately fatal. 2011-08-16 16:39:49 -07:00
Erick Tryzelaar
70b009178c Remove support for expr[T] syntax. 2011-08-16 15:05:57 -07:00
Erick Tryzelaar
c92f5b34d5 Remove support for foo[T] declaration syntax. 2011-08-16 15:05:57 -07:00
Erick Tryzelaar
adb9cde399 Remove type parameter and vec/port/chan foo[T] syntax. 2011-08-16 15:05:57 -07:00
Erick Tryzelaar
af21a27002 Port the compiler to the expr foo::<T> syntax. 2011-08-16 15:05:56 -07:00
Erick Tryzelaar
4abc471390 Port the compiler to foo<T> decl syntax. 2011-08-16 15:05:56 -07:00
Erick Tryzelaar
e4a0f997fb Port the compiler to the typaram foo<T> syntax. 2011-08-16 15:05:56 -07:00
Erick Tryzelaar
014c6922e1 Change expr foo[T] syntax to foo::<T>.
This preserves the old syntax for now.
2011-08-16 14:16:14 -07:00
Erick Tryzelaar
9304b7ee59 Change declaration type parameter syntax to foo<T>. 2011-08-16 14:16:14 -07:00
Erick Tryzelaar
0107d6a81d Change type parameter syntax to foo<T>.
This preserves the old syntax for now.
2011-08-16 14:16:14 -07:00
Patrick Walton
03174b4379 rustc: Implement unique pointer allocation and deallocation 2011-08-16 12:41:53 -07:00
Marijn Haverbeke
27169387fe Remove partial DPS back-end
It won't be finished on the short term, and it's already bit-rotting
fast. We can fetch this from git's autumn annals if we need it.
2011-08-16 21:35:50 +02:00
Eric Holk
3db300b06e Removing port, chan and task shapes. 2011-08-16 12:30:32 -07:00
Michael Sullivan
a9c46e29bc Don't put the target in the bind closure if it is statically known. Closes #177. 2011-08-16 12:13:21 -07:00
Eric Holk
89df915a13 Removing task, chan and port upcalls. 2011-08-16 11:22:24 -07:00
Eric Holk
862bc521a1 Removing tasks, ports and chans from the compiler. 2011-08-16 10:59:49 -07:00
Brian Anderson
f05a91a0dc Rename std::ivec to std::vec 2011-08-16 10:36:19 -07:00
Brian Anderson
38c2363c45 Replace std::ufind with std::ufindivec. Remove std::ufindivec 2011-08-16 10:29:09 -07:00
Brian Anderson
bab29af449 Continue migrating the std #fmt interface to ivecs
Only thing left is to remove some duplicate interfaces in std::extfmt::rt
after the next snapshot
2011-08-16 10:29:09 -07:00
Brian Anderson
46658c4a9c Revert "Revert "Make [] and ~[] both construct ivecs""
This reverts commit 28bf190219.

Should work now that tests are all using ivecs
2011-08-16 10:29:09 -07:00
Brian Anderson
184eac90ab Add and use an ivec interface to std::test 2011-08-16 10:29:08 -07:00
Brian Anderson
053b8bff5a Accept main(args: [str]) as main signature 2011-08-16 10:29:08 -07:00
Eric Holk
cf2def46c1 Removed trans_comm.rs from the compiler. Updating aio/sio to work with the new chan and port system, started on a networking module for the standard library. 2011-08-16 09:36:29 -07:00
Marijn Haverbeke
e33af7e0b5 Make let bindings' scope start at their definition
Also, allow let bindings in a block to shadow each other.
2011-08-16 13:45:41 +02:00
Lindsey Kuper
f91351aaf6 The wonky for...in... whitespace was bothering me. Sorry! 2011-08-15 22:19:50 -07:00
Patrick Walton
e3d5b8a8d5 rustc: Add a few type-related methods to unique pointers; add typestate support 2011-08-15 18:12:31 -07:00
Michael Sullivan
42034f5e34 Remove a FIXME that I just made obsolete... 2011-08-15 17:40:08 -07:00
Michael Sullivan
14d85ca87a Make bind glue do an llvm tail call to the target. Closes #2.
Now, llvm probably won't actually *emit* a tail call with the compiler
options and configuration we have, but this should punt it over to the
more general "do tail calls" bug.
2011-08-15 17:36:28 -07:00
Michael Sullivan
f1cec5793f Make GEPi use InBoundsGEP. 2011-08-15 16:19:47 -07:00
Michael Sullivan
9e084469af Pretty print lambda-blocks. 2011-08-15 15:48:11 -07:00
Michael Sullivan
9eb798e965 Change arg typechecking procedure to make blocks more useful. 2011-08-15 15:48:10 -07:00
Michael Sullivan
d68f1a80dc Implement type inference for type-inferred blocks. 2011-08-15 15:48:10 -07:00
Michael Sullivan
9b50011aae Parse type inferred lambda-block expressions. 2011-08-15 15:48:10 -07:00
Graydon Hoare
814bf41d89 Add operator 'copy', translates as fall-through. 2011-08-15 15:44:41 -07:00
Paul Stansifer
ac0e5ea0ef Implement an untyped version of the AST, with a coversion back to the typed AST.. 2011-08-15 15:35:28 -07:00
Paul Stansifer
ebb16e6a25 Use span stacks to track macro expansion for less troublesome error messages. 2011-08-15 15:35:28 -07:00
Paul Stansifer
c48036c0b7 Make spans into stacks (to store expansion backtraces). 2011-08-15 15:35:27 -07:00
Paul Stansifer
87b56b5565 Allow [a, b, ..., c] transcription patterns in MBE. 2011-08-15 15:35:27 -07:00
Paul Stansifer
d2f9b15052 Rename a field (so that macros can mention it). 2011-08-15 15:35:27 -07:00
Paul Stansifer
b803326063 Change node_ids when expanding, to avoid duplicates. 2011-08-15 15:35:27 -07:00
Paul Stansifer
f50a582126 Add a syntax extension to log syntax, for debugging macros. 2011-08-15 15:35:27 -07:00
Paul Stansifer
e7139e28f4 Add a layer of boxing as a hack; this code can segfault otherwise. 2011-08-15 15:35:27 -07:00
Paul Stansifer
6d39be465f Add backtraces for syntax problems. 2011-08-15 15:35:27 -07:00
Paul Stansifer
5428d4ee6d Check for nonconsistent macro names. 2011-08-15 15:35:27 -07:00
Michael Sullivan
e39d835390 Fix compilation of paths containing ".". Closes #821. 2011-08-15 15:15:34 -07:00
Patrick Walton
af61daf294 rustc: Parse and typecheck unique pointers 2011-08-15 14:38:48 -07:00
Patrick Walton
55c9842e7d rustc: Unbreak "3 as uint < 5u" 2011-08-15 12:06:10 -07:00
Patrick Walton
91d83f5547 rustc: Accept <T> for type parameters in type and item declarations 2011-08-15 11:01:31 -07:00
Eric Holk
be7325073a Removed spawn and task from the parser. Updated all the tests except for the benchmarks. 2011-08-15 09:26:52 -07:00
Marijn Haverbeke
a21ebb2f5e Fix bad argument type of pprust::print_type
AST types are boxed, there's no need for every caller to do the unboxing
2011-08-15 13:45:04 +02:00
Marijn Haverbeke
3f127e397f Add tuple patterns 2011-08-15 13:20:16 +02:00
Marijn Haverbeke
1ee24d31e1 Make tuples constructable 2011-08-15 12:18:27 +02:00
Marijn Haverbeke
29ea87542f Tuple fields are immutable 2011-08-15 12:08:05 +02:00
Marijn Haverbeke
9538b00363 Tuple types back, not constructable yet 2011-08-15 11:40:38 +02:00
Brian Anderson
28bf190219 Revert "Make [] and ~[] both construct ivecs"
This reverts commit 60e1cead9b.

The check-fast driver can't work with this commit. Need to wait until main
taks ivecs
2011-08-14 12:54:18 -07:00
Michael Sullivan
0340f32748 Eliminate autoderef on binops and unary negation.
Autoderef on binops is basically unused, kind of silly, and
complicates typechecking. There were only three instances of it in the
compiler and the test drivers, two of which were of the form "*foo =
foo + 1", which should be written as "*foo += 1" anyways.
2011-08-12 18:28:03 -07:00
Tim Chevalier
1ba9af92bf Remove typestate workaround that's no longer necessary 2011-08-12 18:26:23 -07:00
Michael Sullivan
8e92be3b94 Small whitespace cleanups. 2011-08-12 16:36:50 -07:00
Tim Chevalier
c01e487485 Un-XFAIL do-while-body-fails
Made it work both with optimization enabled, and with optimization
disabled. Huzzah!
2011-08-12 16:26:10 -07:00
Brian Anderson
60e1cead9b Make [] and ~[] both construct ivecs
It's no longer possible to create an exterior vec
2011-08-12 16:23:33 -07:00
Brian Anderson
594c7fb0c6 Remove the last remaining vec expressions in rustc 2011-08-12 16:13:13 -07:00
Brian Anderson
12b03dd3d4 Add an ivec interface to the #fmt library functions
It will take a snapshot to finish the ivec conversion for #fmt
2011-08-12 16:13:13 -07:00
Michael Sullivan
2421312dea Don't rely on binop autoderef in the compiler. 2011-08-12 15:16:01 -07:00
Brian Anderson
4e62c0d6cb Remove std::vec 2011-08-12 12:14:07 -07:00
Brian Anderson
544bdf05c5 Convert uint::parse_buf to ivecs 2011-08-12 12:14:07 -07:00
Brian Anderson
5f71a204d3 Remove vecs from std::getopts 2011-08-12 12:14:07 -07:00
Brian Anderson
0fed53921f Remove ebmlivec module 2011-08-12 12:14:06 -07:00
Brian Anderson
674fb0911c Rename std::termivec to std::term 2011-08-12 12:14:06 -07:00
Brian Anderson
7625ed52ee Remove vecs from std::sort 2011-08-12 12:14:06 -07:00
Brian Anderson
13439dc870 Convert std::run to ivecs 2011-08-12 12:11:12 -07:00
Brian Anderson
72773e6d4d Hide even more exports from std::vec 2011-08-12 12:11:12 -07:00
Brian Anderson
7d05da96f7 Rename std::ioivec to std::io 2011-08-12 12:08:27 -07:00
Brian Anderson
119f43e0c7 Rename str::connect_ivec to str::connect 2011-08-12 12:08:27 -07:00
Brian Anderson
369be5c8df Convert uses of str::connect to str::connect_ivec 2011-08-12 12:08:27 -07:00
Brian Anderson
1e397eee2a Rename str::split_ivec to str::split 2011-08-12 12:08:27 -07:00
Brian Anderson
64f53dfbb0 Convert uses of str::split to split_ivec 2011-08-12 12:08:27 -07:00
Brian Anderson
740196987e Rename std::str::unsafe_from_bytes_ivec to unsafe_from_bytes 2011-08-12 12:08:27 -07:00
Brian Anderson
a9ce342fa3 Convert all uses of unsafe_from_bytes to unsafe_from_bytes_ivec 2011-08-12 12:08:26 -07:00
Brian Anderson
49b80f9bf7 Remove str::from_bytes
This is exactly the same as str::unsafe_from_bytes
2011-08-12 12:08:26 -07:00
Brian Anderson
2e7e58812b Remove vec version of str::bytes, rename bytes_ivec to str::bytes 2011-08-12 12:08:26 -07:00
Brian Anderson
4caeba9178 Remove vecs from the rustc driver 2011-08-12 12:08:26 -07:00
Brian Anderson
b32889d82c Remove vecs from simplext 2011-08-12 12:08:26 -07:00
Brian Anderson
f195814df3 Begin removing vecs from #fmt 2011-08-12 12:08:26 -07:00
Marijn Haverbeke
de4b383a0f Properly typecheck unary minus
Closes #813
2011-08-12 16:05:56 +02:00
Tim Chevalier
051b401051 Handle _|_ - typed things in the bodies of do-while loops
The resulting code is strange, but perhaps someone else can
fix it. The obvious things, like returning body_res, all resulted
in completely incomprehensible LLVM errors.

Closes #814
2011-08-11 17:23:47 -07:00
Lindsey Kuper
19bbd02049 Fix too-long line. 2011-08-11 16:21:09 -07:00
Rafael Ávila de Espíndola
6402b63b4f Use the new C API for PassManagerBuilder. 2011-08-11 19:09:52 -04:00
Rafael Ávila de Espíndola
4cee063976 Update for llvm api change. 2011-08-11 14:58:30 -07:00