- 28 5月, 2011 1 次提交
-
-
由 Tim Chevalier 提交于
Previously, block_ty returned the type of the terminating expression of the block (or nil if said expression was absent). I changed check_expr to write the type of that expression into the annotation for the block itself, so now block_ty can use the block's annotation.
-
- 27 5月, 2011 3 次提交
-
-
由 Tim Chevalier 提交于
The typechecker had a number of special cases for unifying types with _|_ (as with checking if and alt). But, a value of type _|_ should be usable in any context, as such a value always diverges, and will never be used by its immediate context. Changed unify accordingly, removed special cases.
-
由 Tim Chevalier 提交于
-
由 Graydon Hoare 提交于
-
- 21 5月, 2011 3 次提交
-
-
由 Tim Chevalier 提交于
Also make _|_ unify with any type.
-
由 Tim Chevalier 提交于
Change ty_fn to have a controlflow field. A 'controlflow' is essentially a bit of data that says whether or not this function never returns to the caller (if it never returns, that means it calls "fail" or another "never-returns" function on every control path). Also add syntax for annotating functions that never return: fn foo() -> ! { fail; } for example. Functions marked with ! implicitly have a result type of ty_bot, which is a new type that this commit also adds.
-
由 Patrick Walton 提交于
-
- 20 5月, 2011 6 次提交
-
-
由 Graydon Hoare 提交于
After all that, give up on "complex" version of type_has_pointers and just manually inspect. Can't calculate property during interning.
-
由 Graydon Hoare 提交于
Move the ty_item_table into ty::ctxt.items, move variant_info to ty, and start sketching the contains_pointer property on types.
-
由 Patrick Walton 提交于
rustc: Unify variables using a single type instead of keeping a list and doing it all at the end. This will give us better error messages.
-
由 Graydon Hoare 提交于
-
由 Tim Chevalier 提交于
-
由 Patrick Walton 提交于
-
- 19 5月, 2011 2 次提交
-
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
- 18 5月, 2011 4 次提交
-
-
由 Patrick Walton 提交于
-
由 Eric Holk 提交于
-
由 Patrick Walton 提交于
-
由 Marijn Haverbeke 提交于
Except for _task, which is still a keyword.
-
- 17 5月, 2011 4 次提交
-
-
由 Graydon Hoare 提交于
-
由 Tim Chevalier 提交于
* Reorganized typestate into several modules. * Made typestate check that any function with a non-nil return type returns a value. For now, the check is a warning and not an error (see next item). * Added a "bot" type (prettyprinted as _|_), for constructs like be, ret, break, cont, and fail that don't locally return a value that can be inspected. "bot" is distinct from "nil". There is no concrete syntax for _|_, while the concrete syntax for the nil type is (). * Added support to the parser for a ! annotation on functions whose result type is _|_. Such a function is required to have either a fail or a call to another ! function that is reached in all control flow paths. The point of this annotation is to mark functions like unimpl() and span_err(), so that an alt with a call to err() in one case isn't a false positive for the return-value checker. I haven't actually annotated anything with it yet. * Random bugfixes: * * Fixed bug in trans::trans_binary that was throwing away the cleanups for nested subexpressions of an and or or (tests: box-inside-if and box-inside-if2). ** In typeck, unify the expected type arguments of a tag with the actual specified arguments.
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
- 15 5月, 2011 1 次提交
-
-
由 Brian Anderson 提交于
-
- 14 5月, 2011 10 次提交
-
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Lindsey Kuper 提交于
-
由 Lindsey Kuper 提交于
Still segfaulting on the method-overriding.rs test, though.
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
- 13 5月, 2011 6 次提交
-
-
由 Marijn Haverbeke 提交于
The type/value namespace distinction pretty much works now. Module namespace is up next.
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Marijn Haverbeke 提交于
This should be a snapshot transition.
-
由 Marijn Haverbeke 提交于
This will need to be a snapshot.
-