345 Commits

Author SHA1 Message Date
Patrick Walton
f7d0c1cec3 rustc: Add a new "C stack cdecl" native ABI 2011-09-28 12:58:33 -07:00
Brian Anderson
381205b747 Revert "Revert "Implement pattern ranges for all numeric types.""
This reverts commit a034f87146e60e1db2327c6f6807c47406a1bb0b.

Conflicts:

	src/comp/middle/check_alt.rs
	src/comp/middle/trans_alt.rs
	src/comp/syntax/ast.rs
	src/comp/syntax/ast_util.rs
	src/comp/syntax/fold.rs
	src/comp/syntax/print/pprust.rs

Conflicts:

	src/comp/middle/trans_alt.rs
2011-09-28 12:46:29 -07:00
Wade Mealing
f375391cb6 Patch to error instead of crashing when parsing unmatched double quotes
Patch to error and fail instead of using all available memory
then crashing to detect the error condition of an unmatched
double quote before the end of a file.

I couldn't get it to show nice error messages, so this may not be
the ideal fix.

A test case for this situation has also been added.
2011-09-27 23:20:31 -07:00
Marijn Haverbeke
8911aef798 Make return-by-ref function headers pretty-print safely
Closes #972
2011-09-26 04:11:35 +02:00
Jesse Ruderman
3b5b29c7ec Reduce and clarify abuse of 'pure' in interner 2011-09-24 16:33:26 -07:00
Jesse Ruderman
064f52fa96 Mark some fns as pure so type_is_unique_box doesn't need to be unchecked 2011-09-24 15:36:09 -07:00
Brian Anderson
856acbf66d Vectors containing pinned kinds become pinned
Otherwise they could be copied
2011-09-24 12:36:51 -07:00
Brian Anderson
122f714fde Add missing case for pat_uniq to syntax::visit
Issue #409
2011-09-23 16:03:35 -07:00
Brian Anderson
2082f67765 Begin to support pattern matching on unique boxes
Issue #409
2011-09-23 15:15:30 -07:00
Marijn Haverbeke
b029789f02 Remove backward-compatible support for 'mutable' before type.
Closes #966
2011-09-23 09:58:51 +02:00
Marijn Haverbeke
a034f87146 Revert "Implement pattern ranges for all numeric types."
This reverts commit ce0f054f9d56df4e60291fc2e1b89ce979cf374f.
2011-09-21 18:42:09 +02:00
Josh Matthews
ce0f054f9d Implement pattern ranges for all numeric types. 2011-09-21 09:36:12 +02:00
Brian Anderson
f809e22697 Represent unique creation as a unop in the AST instead of its own expr
Like the box unop.

Issue #409
2011-09-20 18:06:47 -07:00
Brian Anderson
865dcb663d Parse unique box types
Issue #409
2011-09-20 17:51:17 -07:00
Brian Anderson
b1bf9ef5ae Break fold's circular reference during unwinding
This converts the AST fold into a resource that breaks it's own circular
reference (just a temporary workaround until GC), so that failure during fold
will unwind correctly.

Issue #936
2011-09-19 15:32:56 -07:00
Marijn Haverbeke
133d36f452 Require body of else-less if expressions to be a value-less block
For consistency with other constructs that could not possibly return a
value (say, loops).
2011-09-16 18:21:06 +02:00
Marijn Haverbeke
d7587c1eda Change convention for specifying referenced argument
It is now 1-based, rather than 0 based. (Seems more natural, and allows 0 to
be used to refer to self and maybe to closure.)

Also allows non-referenced args to be implicitly copied again.

Issue #918
2011-09-16 12:42:18 +02:00
Jesse Ruderman
ce1877dc8e Add parens, as needed, around else-if conditions. 2011-09-15 21:24:24 -07:00
Marijn Haverbeke
7364a8c2b0 Prevent binary expressions from parsing when lhs is non-value block 2011-09-15 17:37:10 +02:00
Marijn Haverbeke
3abe3671bd Require the parameter that will be referenced to be noted
Issue #918
2011-09-15 16:15:17 +02:00
Marijn Haverbeke
25787bd2b8 Forbid assignment to by-reference bindings
Issue #918
2011-09-15 14:08:54 +02:00
Marijn Haverbeke
1cda74deee Add representation for by-ref let bindings
Issue #918
2011-09-15 11:42:56 +02:00
Marijn Haverbeke
197f360e30 Ensure parens are wrapped around composite exprs in call/index/field pos
This is needed to fix the second example in issue #919
2011-09-15 11:15:14 +02:00
Marijn Haverbeke
8c83ea564b More thorough check for (.. 10).x in pretty-printer
Closes #919
2011-09-15 10:59:06 +02:00
Marijn Haverbeke
63ecc84562 Also handle fail and put in print_maybe_parens_discrim
Closes #920
2011-09-15 10:14:52 +02:00
Marijn Haverbeke
3798b6f780 Remove maybe_protect_block kludge from pretty-printer
It is no longer needed.
2011-09-15 10:14:52 +02:00
Marijn Haverbeke
0b34e0e60b Introduce new semicolon rules
- Loop bodies and resource constructors aren't allowed to have
  trailing expressions anymore.

- An expression that ends* in a block without trailing expression can
  can not be called, indexed, or subscripted.

- Only expression-statements that end* in a block without trailing
  expression can omit their semicolon.

*) 'Ending in a trailing expression' is defined as being a block or
   construct-ending-in-a-block (if, alt) that either ends in an
   expression itself, or ends in another block-like expression that
   has a trailing expression (by these same rules).
2011-09-15 09:49:00 +02:00
Marijn Haverbeke
7298b8f4ba Insert omitted semicolons for statements 2011-09-15 09:49:00 +02:00
Marijn Haverbeke
93de2f0b74 Add syntax and representation for return-by-mutably-rooted-ref
This will be used in the near future to decide what can safely
be done with the returned reference.

Issue #918
2011-09-14 17:30:38 +02:00
Marijn Haverbeke
51dae63c44 Make most of the compiler aware of return-by-reference
tyencode/tydecode still don't know about it. return_ref will be extended to take
arguments anyway.
2011-09-14 11:31:05 +02:00
Marijn Haverbeke
c1c083cd66 Refactor parse_ret_ty, start parsing by-alias return specs 2011-09-14 10:46:40 +02:00
Marijn Haverbeke
6eb9738a66 Rename ast::controlflow to ast::ret_style
It will include information about returning by alias.
2011-09-14 10:38:23 +02:00
Josh Matthews
f6fe07d1f3 Add support for negative literals. 2011-09-14 00:47:14 -04:00
Marijn Haverbeke
577d6dd602 Improve lexing of float literals
Closes #575
2011-09-13 17:43:01 +02:00
Marijn Haverbeke
f72573cce8 Properly pretty-print 10.x
Closes #890
2011-09-13 17:08:59 +02:00
Marijn Haverbeke
e64e9792ab Make pretty-printer wrap fail/ret/put in parens in call/index/field pos
Closes #764
Closes #891
2011-09-13 17:02:36 +02:00
Marijn Haverbeke
be5537e95f Be more strict about what constitutes a block expression
Blocks (or statements involving blocks) that end in a semicolon are no
longer considered the block-expression of their outer block. This used
to be an expression block, but now is a statement block:

    { if foo { ret 1; } else { ret 10; } }

This helps clear up some ambiguities in our grammar.
2011-09-13 15:50:03 +02:00
Graydon Hoare
7f94957721 Kill trailing whitespace. 2011-09-12 16:33:43 -07:00
Graydon Hoare
a4815b6742 Factor imports mindlessly. 2011-09-12 16:13:28 -07:00
Marijn Haverbeke
f4b6264f8c Remove backwards-compatibility with old arg-mode syntax 2011-09-12 12:49:00 +02:00
Marijn Haverbeke
ca1df2b111 Pretty-print for new arg-mode syntax 2011-09-12 12:49:00 +02:00
Marijn Haverbeke
bfa021de0d Switch pretty-printer to new arg-mode syntax 2011-09-12 12:48:59 +02:00
Marijn Haverbeke
3667137a41 Accept {|| ... } for argument-less block syntax
Closes #880
2011-09-12 12:04:41 +02:00
Marijn Haverbeke
fc6b7c8b38 Reformat for new mode syntax, step 1
Long lines were fixed in a very crude way, as I'll be following up
with another reformat in a bit.
2011-09-12 12:04:14 +02:00
Marijn Haverbeke
0e6e56ca60 Make the names of the arg mode tag reflect their (revised) meaning 2011-09-12 11:07:17 +02:00
Jesse Ruderman
476bbca87a Fuzzer: move tys around in addition to exprs 2011-09-10 18:55:09 -07:00
Jesse Ruderman
7182054416 Add missing arm, so pretty-printing the statement 'copy 1;' does not die. 2011-09-09 21:27:07 -07:00
Jesse Ruderman
8e00161819 Make the pretty printer disambiguatae blocks followed by vec expressions.
Semicolons are needed here now that postfix [] is used for vec indexing (the syntax change made in rev 518dc52f85c2efb67aaa1208c02e9a7e0bdaca49).
2011-09-09 19:47:40 -07:00
Brian Anderson
f1555e2ca8 Rename ty_istr to ty_str. Issue #855 2011-09-02 22:11:46 -07:00
Brian Anderson
b16457627c Stop parsing transitional istr forms. Issue #855 2011-09-02 22:11:46 -07:00