Patrick Walton
d1c27ba9e0
Revert "Make option::get return the option contents by reference" due to memory corruption
...
This reverts commit fc0bf12516
.
2011-09-15 12:52:09 -07:00
Marijn Haverbeke
fc0bf12516
Make option::get return the option contents by reference
...
I can't believe this actually works!
2011-09-15 17:49:29 +02:00
Brian Anderson
906f1fc425
Add regression tests for previously ambiguous syntactic forms
2011-09-15 08:47:23 -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
93ba85a0f1
Register new snapshot
2011-09-15 17:33:35 +02:00
Marijn Haverbeke
b843cf2117
Generalize expression roots in alias analysis
...
This allows calls-returning-a-reference to count as expression roots,
making it possible to return the result of such a call by reference.
Issue #918
2011-09-15 17:01:35 +02:00
Marijn Haverbeke
29177864c3
Add tests for returning by reference
...
Issue #918
2011-09-15 16:37:37 +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
75eee8b194
Overhaul alias-checking of blocks
...
The set of active bindings has to be updated as by-reference locals are
encountered.
Issue #918
2011-09-15 15:43:15 +02:00
Marijn Haverbeke
87fa38910e
Make storing returned references in a by-reference local work
...
fn f(a: {x: str}) -> &str {
ret a.x;
}
fn main() {
let x = {x: "hi"};
let &y = f(x); // Look ma, no copy!
log_err y;
}
Issue #918 .
2011-09-15 15:17:14 +02:00
Marijn Haverbeke
25787bd2b8
Forbid assignment to by-reference bindings
...
Issue #918
2011-09-15 14:08:54 +02:00
Marijn Haverbeke
d7a1d6a1cb
Make trans understand by-ref bindings
...
Issue #918
2011-09-15 14:00:58 +02:00
Marijn Haverbeke
8aad16112b
Implement basic checking of by-reference bindings
...
Issue #918
2011-09-15 13:40:28 +02:00
Marijn Haverbeke
44c6370e6a
Move local numbering into ast_map.rs
...
This further simplifies the alias pass, which is sorely needed.
2011-09-15 13:18:32 +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
d0d322ac93
Stop mentioning tail calls in reference
...
They don't work, and won't work in the near future.
2011-09-15 10:14:52 +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
Brian Anderson
2bed548d1b
xfail-fast run-pass/linked-failure.rs. Not sure what the problem is.
2011-09-14 17:47:48 -07:00
Brian Anderson
a0ad9a42cd
Unsupervise tasks before the scheduler kills them. Unblock before yield->fail
2011-09-14 17:05:35 -07:00
Brian Anderson
69eda46af8
Add a run-pass test for linked failure
2011-09-14 15:51:46 -07:00
Brian Anderson
103197bc42
Make failure propagation to dead parents work
...
The failure will basically go 'through' the dead parent and continue
propagating the failure (as if the child was reparented).
2011-09-14 15:48:14 -07:00
Graydon Hoare
6dcd0a9b5e
Remove mention of port, chan and task *types*, as they're not just library-provided. Move some text about channels into the comm section.
2011-09-14 14:48:40 -07:00
Graydon Hoare
f13acbdbf1
Remove talk of 'sharing boxes between tasks', old GC layer, etc. Add description of unique boxes.
2011-09-14 14:38:52 -07:00
Graydon Hoare
4e93ea8b1e
Remove mention of the nonexistent (and no longer implementable) memory accounting model.
2011-09-14 14:22:27 -07:00
Brian Anderson
9505d70513
Make linked task failure work again
2011-09-14 14:20:41 -07:00
Graydon Hoare
c61f06fde9
Fix vector indexing notation, remove reference to 'slices'.
2011-09-14 14:13:47 -07:00
Graydon Hoare
7c782c10df
Fix description of tuples.
2011-09-14 14:11:31 -07:00
Brian Anderson
79751348b3
Remove more references to reflection from docs
2011-09-14 13:32:09 -07:00
Graydon Hoare
431a27f9a8
Remove description of nonexistent stuff (reflection, meta directives); add description of attributes and tidy up description of syntax extensions.
2011-09-14 12:35:26 -07:00
Graydon Hoare
ffeb175239
Remove stuff that's either unimplemented or misleading.
2011-09-14 12:35:26 -07:00
Graydon Hoare
2812f3cf24
Remove misleading details.
2011-09-14 12:35:26 -07:00
Brian Anderson
ad2bdbee08
Add another XFAILed test for failing destructors
2011-09-14 10:59:17 -07:00
Brian Anderson
ca0d3cae5c
Add another unwind test
...
This makes sure that cleanups added after the first invoke in a scope are
actually run on unwind
2011-09-14 09:21:28 -07:00
Brian Anderson
31d4fe37f6
Revert "Try a little harder to avoid creating new landing pads"
...
This reverts commit b8e31ac469
.
Conflicts:
src/comp/middle/trans.rs
2011-09-14 09:19:31 -07: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
1cabe37155
Prevent memory errors when returning references to temp args.
...
Issue #918
2011-09-14 16:46:54 +02:00
Marijn Haverbeke
c6619f9ce0
Accept returning refs rooted in an arg from a by-ref funtion
...
Issue #918
2011-09-14 16:19:15 +02:00
Marijn Haverbeke
a3c449df74
Make ast_map.rs index function args, switch it over to simple_visitor
2011-09-14 15:30:59 +02:00
Marijn Haverbeke
cd0e7fc041
Remove some extra white-space introduced by the pretty-printer
2011-09-14 15:20:22 +02:00
Marijn Haverbeke
7d69712dee
Disallow implicit arg copying when the function returns a ref
...
Issue #918
2011-09-14 14:57:20 +02:00
Marijn Haverbeke
93d2a4f82a
Add support for basic return-by-alias to trans
...
Issue #918
2011-09-14 14:39:08 +02:00
Marijn Haverbeke
9a69ee79e0
Clean up trans_obj.rs a bit
...
As a preparation to adding an arg to type_of_fn_full
2011-09-14 13:49:22 +02:00
Marijn Haverbeke
6cd24173d4
Add a ret_style field to fn_ctxt in trans
2011-09-14 13:48:51 +02:00
Marijn Haverbeke
2aac43d809
Simplify trans::new_fn_ctxt_w_id
...
It was still living in the pre-decent-type-inference era.
2011-09-14 13:26:39 +02:00
Marijn Haverbeke
0699acb6f7
Rudimentary checking of safe alias returns
2011-09-14 13:09:45 +02:00