about summary refs log tree commit diff
path: root/src/comp
AgeCommit message (Collapse)AuthorLines
2011-06-23Fix type inference inside of anonymous functions.Michael Sullivan-2/+11
2011-06-23Remove parse_str_lit_or_env_ident.Rafael Ávila de Espíndola-29/+13
We decided to use metadata for the more complex cases, and a simple string is enough for rustc right now.
2011-06-23Flesh out type pp code.Graydon Hoare-4/+19
2011-06-23rustc: Load immediate types when iterating over interior vectorsPatrick Walton-2/+30
2011-06-23Correct error message for argument mode mismatchTim Chevalier-9/+26
If you use a function expecting an alias argument in a context that expects a function expecting a value argument, or vice versa, the previous error message complained that the number of arguments was wrong. Fixed the error message to be accurate.
2011-06-22Compute typestate properly for moveTim Chevalier-219/+619
typestate now drops constraints correctly in the post-state of a move expression or a declaration whose op is a move. It doesn't yet drop constraints mentioning variables that get updated. To do this, I had to change typestate to use trit-vectors instead of bit-vectors, because for every constraint, there are three possible values: known-to-be-false (e.g. after x <- y, init(y) is known-to-be-false), known-to-be-true, and unknown. Before, we conflated known-to-be-false with unknown. But move requires them to be treated differently. Consider: (program a) (a1) x = 1; (a2) y <- x; (a3) log x; (program b) (b1) x = 1; (b2) y <- z; (b3) log x; With only two values, the postcondition of statement a2 for constraint init(x) is the same as that of b2: 0. But in (a2)'s postcondition, init(x) *must* be false, but in (b2)'s condition, it's just whatever it was in the postcondition of the preceding statement.
2011-06-22rustc: Convert field access on invalid types from an ICE to a fatal errorBrian Anderson-5/+4
Closes #367
2011-06-22Some work on supporting forwarding slots in vtables (issue #539).Lindsey Kuper-42/+70
2011-06-22rustc: Use the rhs span when unifying binopsBrian Anderson-1/+1
This makes the error message correctly identify the term that wasn't the expected type. Issue #516.
2011-06-22rustc: Remove some unneeded type annotationsBrian Anderson-9/+9
2011-06-22rustc: Don't commit unification changes until unify succeedsBrian Anderson-8/+16
This is so that subsequent reports about type mismatches get the types correct. Issue #516
2011-06-22rustc: Limit creader exportsBrian Anderson-0/+7
2011-06-22rustc: Downcase metadata::EncodeBrian Anderson-4/+4
2011-06-22rustc: Handle valueless ret expressions as block results. Closes #521Brian Anderson-0/+2
2011-06-22Fix bug: globbed imports were importing everything visible from the otherPaul Stansifer-6/+19
module, not just everything exported.
2011-06-22rustc: Introduce and parse additional meta_item formsBrian Anderson-37/+136
Examples: #[test], #[link(name = "vers")] Issue #487
2011-06-22Use fast regalloc and codegen at OptLevel=0.Rafael Ávila de Espíndola-4/+31
2011-06-22rustc: Rename parser.err to parser.fatalBrian Anderson-29/+29
2011-06-23Remove a simidgeon of dead code.Paul Stansifer-8/+1
2011-06-22Pull environment loading out into a function.Michael Sullivan-36/+50
2011-06-22Pull building the environment for for_each into a seperate function.Michael Sullivan-47/+61
2011-06-22Removing out-of-date comment.Michael Sullivan-1/+1
2011-06-21Emit a better error message for unbound type parameters in nested functionsTim Chevalier-7/+12
This code was causing a bounds check failure: fn hd[U](&vec[U] v) -> U { fn hd1(&vec[U] w) -> U { ret w.(0); } ret hd1(v); } because in hd1, U was being treated as if it referred to a type parameter of hd1, rather than referring to the lexically enclosing binding for U that's part of hd. I'm actually not sure whether this is a legit program or not. But I wanted to get rid of the bounds check error, so I assumed that program shouldn't compile and made it a proper error message.
2011-06-21Serialize constraints in types (literal arguments still not supported)Tim Chevalier-105/+101
This involved, in part, changing the ast::def type so that a def_fn has a "purity" field. This lets the typechecker determine whether functions defined in other crates are pure. It also required updating some error messages in tests. As a test for cross-crate constrained functions, I added a safe_slice function to std::str (slice(), with one of the asserts replaced with a function precondition) and some test cases (various versions of fn-constraint.rs) that call it. Also, I changed "fn" to "pred" for some of the boolean functions in std::uint.
2011-06-21Move names and ids of native items into their recs, rather than their tagsMarijn Haverbeke-74/+56
2011-06-21Puts out burning tinderbox (oops, AST nodes don't have def_ids/anns).Lindsey Kuper-5/+4
2011-06-21Some progress on support for extending objects with new fields (issueLindsey Kuper-54/+214
into four separate issues (#538, #539, #540, #543) with corresponding tests.
2011-06-21Move expr ids into the expr record typeMarijn Haverbeke-938/+814
This simplifies the tag variants a bit and makes expr_node_id obsolete.
2011-06-21rustc: Output an unimplemented message when alias encounters an unknown ↵Patrick Walton-0/+4
sequence type
2011-06-21rustc: Implement "for" over interior vectorsPatrick Walton-15/+41
2011-06-21rustc: Remove unused slice call from extfmt. Closes #532Brian Anderson-2/+0
2011-06-20Remove the old library names. These were unused since rustboot.Rafael Ávila de Espíndola-21/+2
Right now rustc hardcodes -lrustllvm. The idea is to instead remember all the native modules used and convert them to -l directives to the linker. In the case of a library that is installed in an unusual location, Graydon suggested using metadata: native module foo = "bar" { }
2011-06-20Merge remote branch 'upstream/master'Rafael Ávila de Espíndola-1599/+1621
2011-06-20Fix line length.Rafael Ávila de Espíndola-2/+2
2011-06-20Fix some uses of span_warn in alias.rs that should be span_fatalMarijn Haverbeke-2/+2
2011-06-20Make trans use the new ast_map instead of building its ownMarijn Haverbeke-28/+24
2011-06-20Use ast_map in typeck, instead of building another indexMarijn Haverbeke-49/+12
2011-06-20Add a separate AST mapping phaseMarijn Haverbeke-22/+16
This will replace the various node_id-to-node mappings done in several other passes. This commit already uses the new map in resolve, dropping the ast_map that was built there before.
2011-06-20Reduce confusing variable naming in resolveMarijn Haverbeke-51/+55
'id' is now used for node_ids, 'name' for idents
2011-06-20Get rid of def_ids and anns in AST nodes, use single node_idMarijn Haverbeke-1474/+1539
This reduces some redundancy in the AST data structures and cruft in the code that works with them. To get a def_id from a node_id, apply ast::local_def, which adds the local crate_num to the given node_id. Most code only deals with crate-local node_ids, and won't have to create def_ids at all.
2011-06-20Remember the library files we used in rustc and pass them to the "linker".Rafael Ávila de Espíndola-3/+21
This avoid the hardcoded -lstd, allows programs to use other crates and avoids any differences that may exist in the rustc and ld search logic.
2011-06-20Added string duplication to deep_copy. Closes #520.Eric Holk-22/+18
2011-06-20Tighten up the hardbreak rules a bit.Graydon Hoare-5/+7
2011-06-20Suppress hardbreaks when following hardbreaks.Graydon Hoare-6/+7
2011-06-20Fix interference between if-check and if printing.Graydon Hoare-4/+6
2011-06-20Removed duplicated ret_ty_of_fn. This also means the native function branch ↵Eric Holk-21/+12
is working now, so this commit closes #506.
2011-06-20Teach ret_ty_of_fn_ty to understand native functions. Closes #506.Eric Holk-0/+1
2011-06-20Remove flags that are not used during linking.Rafael Ávila de Espíndola-5/+4
2011-06-20Fix pp blank-lines insertion at beginning of file and before 'let' decls.Graydon Hoare-9/+13
2011-06-19Remove various rustboot workaroundsBrian Anderson-22/+11