349 Commits

Author SHA1 Message Date
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
Brian Anderson
608f7ccded Move ast::pat_id_map to ast::util 2011-08-25 14:15:54 -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
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
7b12924813 Fix pretty-printing of istr literals. Issue #855 2011-08-23 11:09:38 -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
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
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
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
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
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
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
Brian Anderson
f5ce3bf15d More misc ivec->vec renaming 2011-08-18 15:01:49 -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
53eb4a3025 Pretty-print ivecs as [] 2011-08-18 13:09:00 -07: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
Brian Anderson
69d4838169 Stop parsing old-style vec types 2011-08-17 16:08:45 -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
Graydon Hoare
ce276211f5 Remove dead send/recv operator tokens. 2011-08-16 17:39:25 -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
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