670 Commits

Author SHA1 Message Date
Marijn Haverbeke
7f62944559 Convert the objects used in the lexer and parser to records + impls 2012-01-13 11:50:53 +01:00
Niko Matsakis
8818f42b19 make parser disambiguate fn~ at top level correctly 2012-01-12 13:47:38 -08:00
Marijn Haverbeke
efb9df1ebd Make driver::session::session no longer an object
Rather, it is now a struct where properties like opts are accessed
directly, and the error-reporting methods are part of a static impl
(with the same name as the type).
2012-01-12 18:04:02 +01:00
Kevin Atkinson
44352df57c Cleanups to previous commits for issue #1393. 2012-01-12 09:55:48 +01:00
Marijn Haverbeke
34d7f05292 Major clean-up of std::io
Use ifaces instead of objs, stop wrapping everything in two (or three)
layers of no-value-added indirection, and remove some of the more
pointless/outdated idioms from the code.
2012-01-11 21:00:11 +01:00
Niko Matsakis
c68345e57e add a log_str() function and allow '%?' in fmt strings to use it 2012-01-11 10:32:54 -08:00
Graydon Hoare
0e334c6839 Fold and re-evaluate expr in tag discriminant. 2012-01-10 15:59:57 -08:00
Kevin Atkinson
08abf8d37f Support explicit discriminant numbers on tag variants.
Addresses issue #1393.

For now disallow disr. values unless all variants use nullary
contractors (i.e. "enum-like").

Disr. values are now encoded in the crate metadata, but only when it
will differ from the inferred value based on the order.
2012-01-10 15:59:57 -08:00
Patrick Walton
ffdb7f97f8 rustc: Accept "enum" in addition to "tag" 2012-01-10 15:32:39 -08:00
Niko Matsakis
1592de0faf replace lambda with fn@ 2012-01-10 13:31:06 -08:00
Niko Matsakis
8b911587df rename sendfn to fn~, lambda to fn@ 2012-01-10 13:31:06 -08:00
Austin Seipp
070b1c8333 Remove support for 'when' in alt-patterns from parser
Issue #1396
2012-01-09 19:27:06 -08:00
Austin Seipp
a94b1ccacb Change all uses of 'when' in alt-patterns to 'if'
Issue #1396
2012-01-09 19:27:05 -08:00
Graydon Hoare
8387896dda Remove proto_sugar and 'lambda' as keyword, commit to fn@. 2012-01-09 16:12:48 -08:00
Austin Seipp
9211348989 Make the parser accept 'if' as an alternative to 'when' in alt patterns.
Also fix the pretty printer, making it output 'if' instead of 'when'.

Issue #1396
2012-01-09 10:50:33 -08:00
Marijn Haverbeke
41a2d8495e Fix pretty-printing of ty params in iface methods 2012-01-06 17:40:05 +01:00
Niko Matsakis
e1a0d0f03d fix pretty printer to correctly insert parens for disamb 2012-01-05 10:44:38 -08:00
Niko Matsakis
f832edc369 require a non-semi expr acting as a stmt to have unit return type 2012-01-05 10:44:38 -08:00
Niko Matsakis
37ba5f3b32 make parser handle parenthesized block-sugar exprs properly 2012-01-05 10:44:38 -08:00
Marijn Haverbeke
60ae1590af Switch to new param kind bound syntax
And remove support for the old syntax
2012-01-05 15:50:02 +01:00
Marijn Haverbeke
516fbed230 Fix bad spans for ast::ty parsing
The span would be pointing after the actual text.
2012-01-05 11:09:19 +01:00
Marijn Haverbeke
42f6608ffd Add visit_ty_params to visit.rs
And use it to make typechecking of bounds less error-prone.
2012-01-04 17:30:36 +01:00
Niko Matsakis
72a3667eb3 Allow tail expressions even in no_value blocks. Type checker
will guarantee they have unit type.
2012-01-03 13:13:52 -08:00
Niko Matsakis
de383bcfed extend parser so that expressions that do not require semi-colons
to be statements are not considered expressions in the tail position
2012-01-03 13:13:51 -08:00
Niko Matsakis
9e1dc703d2 rewrite to put blk as 2nd arg 2012-01-03 13:13:51 -08:00
Niko Matsakis
e34abbacf6 minimal changes to permit fn blocks in expr 2012-01-03 13:13:51 -08:00
Marijn Haverbeke
506a6ec38b Make syntax for impls less magical
The trick of interpreting parameters to the iface type as parameters
to the impl was just too magical.

Issue #1227
2012-01-03 15:37:41 +01:00
Niko Matsakis
8319b5a252 add cap clause to pretty printer, with a test 2011-12-30 16:25:55 -08:00
Niko Matsakis
aa5382bb13 split proto from fn_decl, as not all fn_decls know the proto.
this will address the (crashing) new test added.
2011-12-29 20:29:28 -08:00
Graydon Hoare
36c55b20a8 Add support in lexer for utf8 identifiers. No NFKC logic in char yet. 2011-12-29 14:45:18 -08:00
Graydon Hoare
51227c1e8a Merge pull request #1389 from erickt/master
misc standard library additions
2011-12-28 13:05:02 -08:00
Marijn Haverbeke
9236fdf39f Move the kind datatype to middle::ty
The AST no longer references it.
2011-12-28 21:18:16 +01:00
Marijn Haverbeke
1ed6a27548 Change representation of type params to handle interface bounds
Issue #1227
2011-12-28 21:18:16 +01:00
Erick Tryzelaar
5d84652f51 comp: minor cleanup. 2011-12-28 11:19:41 -08:00
Marijn Haverbeke
46cddffb8f Go back to a single visit_fn function in visit.rs 2011-12-23 18:45:02 +01:00
Marijn Haverbeke
711ff657e2 Get rid of visit_fn_block in visit.rs
It seems redundant and error-prone.
2011-12-23 18:24:49 +01:00
Marijn Haverbeke
25e65239ad Check impls methods against the type of their iface. 2011-12-23 18:11:36 +01:00
Marijn Haverbeke
057617c665 Parse iface items and interface references in impl items.
The (temporary) syntax is

    iface seq<T> {
        fn len() -> uint;
        fn iter(f: block(T));
    }

    // The 'blah<T>' can be left of to default the name of the
    // impl to seq<T>. The 'of seq<T>' can be left off when
    // not implementing a named interface.
    impl blah<T> of seq<T> for [T] {
        fn len() -> uint { vec::len(self) }
        fn iter(f: block(T)) { for x in self { f(x); } }
    }
2011-12-23 18:09:25 +01:00
Marijn Haverbeke
970f5cc0e4 Make ast::ty_method hold a fn_decl, rather than duplicating its fields 2011-12-23 13:32:17 +01:00
Graydon Hoare
f0dfbe7b1b Register new snapshots, purge log_err and log_full in favour of log(...). 2011-12-22 17:53:53 -08:00
Graydon Hoare
ccb5b6fb25 Switch core macros to expand to log(level, ...). 2011-12-22 16:36:55 -08:00
Graydon Hoare
389329ef1e Merge all 3 log syntaxes, tidy up residual misuses. 2011-12-22 16:14:00 -08:00
Graydon Hoare
dcd771cd48 Merge branch 'master' of github.com:graydon/rust 2011-12-22 14:50:52 -08:00
Graydon Hoare
8b580954fe Register snapshots and switch logging over to use of log_full or #error / #debug. 2011-12-22 14:42:52 -08:00
Marijn Haverbeke
eacb629442 Work around unwinding bug
See issue #1374
2011-12-22 20:38:09 +01:00
Marijn Haverbeke
0490c36143 Unify some data structures in syntax::ast that were doing the same thing
As a preparation to removing some duplication in typeck.
2011-12-22 20:18:56 +01:00
Graydon Hoare
3b61064631 Revert all of yesterday's snapshots and try again. Cursed! 2011-12-22 10:30:04 -08:00
Graydon Hoare
47d27af228 Merge branch 'master' of github.com:graydon/rust 2011-12-22 09:30:03 -08:00
Marijn Haverbeke
e2e077c831 Remove trivial cast checker
I consider the added complexity not justified at this point, and it
interacts badly with the patches for issue #828. Feel free to discuss.
2011-12-22 15:04:00 +01:00
Graydon Hoare
047b02d5bc More flailing on log syntax due to call-expr ambiguity in previous attempt. 2011-12-21 18:05:08 -08:00