142 Commits

Author SHA1 Message Date
Brian Anderson
e824775d53 Remove std::str. Issue #855 2011-09-01 16:09:15 -07:00
Marijn Haverbeke
6ba4eacddf Make resolve recognize upvars
Upvars are now marked with def_upvar throughout, not just when going
through freevars::lookup_def. This makes things less error-prone. One
thing to watch out for is that def_upvar is used in `for each` bodies
too, when they refer to a local outside the body.
2011-09-01 16:32:44 +02:00
Marijn Haverbeke
34ae491ca9 Store arg mode and objfield mutability in their def 2011-09-01 16:32:38 +02:00
Brian Anderson
f09ef6ec66 Convert rest of the AST to istrs. Issue #855 2011-08-27 15:54:45 -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
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
Brian Anderson
608f7ccded Move ast::pat_id_map to ast::util 2011-08-25 14:15:54 -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
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
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
Tim Chevalier
3ddb26e993 Comments 2011-08-18 17:21:55 -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
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
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
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
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
Lindsey Kuper
f91351aaf6 The wonky for...in... whitespace was bothering me. Sorry! 2011-08-15 22:19:50 -07:00
Graydon Hoare
814bf41d89 Add operator 'copy', translates as fall-through. 2011-08-15 15:44:41 -07:00
Paul Stansifer
c48036c0b7 Make spans into stacks (to store expansion backtraces). 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
Patrick Walton
af61daf294 rustc: Parse and typecheck unique pointers 2011-08-15 14:38:48 -07:00
Marijn Haverbeke
3f127e397f Add tuple patterns 2011-08-15 13:20:16 +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
119f43e0c7 Rename str::connect_ivec to str::connect 2011-08-12 12:08:27 -07:00
Michael Sullivan
67e361a940 Introduce a ty_infer ast node and use it instead of option::t[ty].
This actually basically makes things worse, since we get less nice
type system guarentees but it will make doing type inferred blocks a
fair deal less painful. I'm not /really/ happy about this...
2011-08-10 20:18:07 -07:00
Michael Sullivan
43c9fe65bd Eliminate the last vestiges of init_recv. 2011-08-10 19:21:29 -07:00
Michael Sullivan
7d5092ee7b Some trivial cleanup. 2011-08-10 16:28:34 -07:00
Erick Tryzelaar
8b15045224 Port the compiler to the ivec type [T] syntax. 2011-08-09 15:53:26 -07:00
Graydon Hoare
b54e7e4506 Add new arg-passing mode 'move' denoted with '-T'. Translate as pass-by-value, doesn't deinit source yet nor get proper analysis in typestate, alias passes. 2011-08-08 15:53:41 -07:00
Patrick Walton
fd7ffd5ac2 rustc: Add inlineness to the fn decl instead 2011-08-05 11:46:43 -07:00
Patrick Walton
59e9b629c0 Revert "rustc: Introduce the concept of inline to the AST"
This reverts commit 9b9170f9fe2e4701255a5bd0630c203409d8e934.
2011-08-05 11:38:06 -07:00
Patrick Walton
9b9170f9fe rustc: Introduce the concept of inline to the AST 2011-08-05 11:33:48 -07:00
Marijn Haverbeke
d08c0f0ec1 Make ast::pat_bindings an iterator
And use it to get rid of some repetetive code
2011-08-03 10:26:41 +02:00
Marijn Haverbeke
985c32ef4c Partially implement destructuring locals
You can now say

    let {bcx, val} = some_result_returner();

Similar for loop variables. Assigning to such variables is not safe
yet. Function arguments also remain a TODO.
2011-08-01 17:51:37 +02:00
Marijn Haverbeke
c34d74315f Remove unreachable statements 2011-07-29 20:54:44 +02:00
Marijn Haverbeke
b1d2a00b4a Remove support for obj dtors 2011-07-29 14:03:24 +02:00
Lindsey Kuper
b24da1c2e5 The names 'outer' and 'inner' make more sense than 'self' and 'with'.
(Also, some formatting and long-string cleanup.)
2011-07-28 14:54:32 -07:00
Graydon Hoare
3e63fdc4c9 Thread kinds into the type system. Don't quite activate yet, since it breaks stdlib and snapshot isn't ready to compile modified stdlib. 2011-07-28 13:29:39 -07:00
Paul Stansifer
86f337484e Change macro syntax to accept a single expr, not a sequence of exprs. 2011-07-28 12:12:08 -07:00