about summary refs log tree commit diff
path: root/src/comp
AgeCommit message (Collapse)AuthorLines
2011-09-15Added more predicates in transTim Chevalier-2/+16
Added the non_ty_var predicate (soon to be used) Added a check in get_res_dtor (will be necessary for a future change to type_of_fn) Removed a gratuitous ret
2011-09-15Change a few span_fatals to span_errTim Chevalier-5/+5
2011-09-15Update README slightly.Graydon Hoare-2/+3
2011-09-15Prevent binary expressions from parsing when lhs is non-value blockMarijn Haverbeke-0/+1
2011-09-15Generalize expression roots in alias analysisMarijn Haverbeke-35/+40
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-15Require the parameter that will be referenced to be notedMarijn Haverbeke-38/+74
Issue #918
2011-09-15Overhaul alias-checking of blocksMarijn Haverbeke-34/+27
The set of active bindings has to be updated as by-reference locals are encountered. Issue #918
2011-09-15Make storing returned references in a by-reference local workMarijn Haverbeke-39/+47
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-15Forbid assignment to by-reference bindingsMarijn Haverbeke-21/+25
Issue #918
2011-09-15Make trans understand by-ref bindingsMarijn Haverbeke-8/+19
Issue #918
2011-09-15Implement basic checking of by-reference bindingsMarijn Haverbeke-3/+57
Issue #918
2011-09-15Move local numbering into ast_map.rsMarijn Haverbeke-48/+67
This further simplifies the alias pass, which is sorely needed.
2011-09-15Add representation for by-ref let bindingsMarijn Haverbeke-19/+31
Issue #918
2011-09-15Ensure parens are wrapped around composite exprs in call/index/field posMarijn Haverbeke-5/+10
This is needed to fix the second example in issue #919
2011-09-15More thorough check for (.. 10).x in pretty-printerMarijn Haverbeke-5/+21
Closes #919
2011-09-15Also handle fail and put in print_maybe_parens_discrimMarijn Haverbeke-2/+5
Closes #920
2011-09-15Remove maybe_protect_block kludge from pretty-printerMarijn Haverbeke-86/+0
It is no longer needed.
2011-09-15Introduce new semicolon rulesMarijn Haverbeke-71/+44
- 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-15Insert omitted semicolons for statementsMarijn Haverbeke-17/+14
2011-09-14Revert "Try a little harder to avoid creating new landing pads"Brian Anderson-11/+10
This reverts commit b8e31ac46917edcf5922f0b191c5e6c4505830d2. Conflicts: src/comp/middle/trans.rs
2011-09-14Add syntax and representation for return-by-mutably-rooted-refMarijn Haverbeke-34/+55
This will be used in the near future to decide what can safely be done with the returned reference. Issue #918
2011-09-14Prevent memory errors when returning references to temp args.Marijn Haverbeke-14/+18
Issue #918
2011-09-14Accept returning refs rooted in an arg from a by-ref funtionMarijn Haverbeke-21/+49
Issue #918
2011-09-14Make ast_map.rs index function args, switch it over to simple_visitorMarijn Haverbeke-12/+16
2011-09-14Remove some extra white-space introduced by the pretty-printerMarijn Haverbeke-17/+1
2011-09-14Disallow implicit arg copying when the function returns a refMarijn Haverbeke-1/+2
Issue #918
2011-09-14Add support for basic return-by-alias to transMarijn Haverbeke-58/+75
Issue #918
2011-09-14Clean up trans_obj.rs a bitMarijn Haverbeke-30/+21
As a preparation to adding an arg to type_of_fn_full
2011-09-14Add a ret_style field to fn_ctxt in transMarijn Haverbeke-9/+19
2011-09-14Simplify trans::new_fn_ctxt_w_idMarijn Haverbeke-20/+8
It was still living in the pre-decent-type-inference era.
2011-09-14Rudimentary checking of safe alias returnsMarijn Haverbeke-27/+52
2011-09-14Rename restrict to binding in alias.rsMarijn Haverbeke-75/+66
Its role gradually changed to the point where the old name doesn't really make sense anymore.
2011-09-14Stop needlessly boxing vectors in alias.rsMarijn Haverbeke-22/+20
2011-09-14Make most of the compiler aware of return-by-referenceMarijn Haverbeke-31/+34
tyencode/tydecode still don't know about it. return_ref will be extended to take arguments anyway.
2011-09-14Refactor parse_ret_ty, start parsing by-alias return specsMarijn Haverbeke-51/+24
2011-09-14Rename ast::controlflow to ast::ret_styleMarijn Haverbeke-61/+58
It will include information about returning by alias.
2011-09-14Add support for negative literals.Josh Matthews-6/+25
2011-09-13Try harder still to generate fewer landing padsBrian Anderson-1/+19
Scopes that don't have cleanups don't need their own landing pads This takes the optimized rustc bin from 4.7MB to 4.4
2011-09-13Try a little harder to avoid creating new landing padsBrian Anderson-10/+11
It's only when we add or revoke cleanups involving immediates that we need a new landing pad for the scope. Trims 5K off the optimized rustc bin
2011-09-13Reuse landing pads when possibleBrian Anderson-7/+32
Cuts the optimized rustc bin from 5.2 to 4.7MB
2011-09-13Print something when we can't figure out a tag name. Mitigates #876.Michael Sullivan-4/+1
2011-09-13Add missing cases for machine floats in shape.rsMarijn Haverbeke-3/+2
2011-09-13Improve lexing of float literalsMarijn Haverbeke-39/+36
Closes #575
2011-09-13Properly pretty-print 10.xMarijn Haverbeke-1/+9
Closes #890
2011-09-13Make pretty-printer wrap fail/ret/put in parens in call/index/field posMarijn Haverbeke-10/+14
Closes #764 Closes #891
2011-09-13Ensure that the declared type and actual type of a constant agreeMarijn Haverbeke-0/+3
Closes #899
2011-09-13Be more strict about what constitutes a block expressionMarijn Haverbeke-6/+35
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-13Always warn when implicitly copying a generic typeMarijn Haverbeke-12/+10
2011-09-13Properly alias-check bindings in for-each loopsMarijn Haverbeke-40/+32
2011-09-13Clean up copy bookkeeping in alias.rsMarijn Haverbeke-36/+34