about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2011-08-05Fix a type in the libuv mingw makefileBrian Anderson-1/+1
2011-08-05Another test for the occurs check, this one from issue 778Tim Chevalier-0/+4
2011-08-05Atomic ref counting for chans.Eric Holk-38/+61
2011-08-05Rewrote receive to return a value. This lets us initialize variables by ↵Eric Holk-12/+12
receiving them.
2011-08-05Merge branch 'master' of github.com:graydon/rustEric Holk-9/+41
2011-08-05Initialize all constraints to FalseTim Chevalier-9/+41
Previously, typestate was initializing the init constraint for a declared-but-not-initialized variable (like x in "let x;") to False, but other constraints to Don't-know. This led to over-lenient results when a variable was used before declaration (see the included test case). Now, everything gets initialized to False in the prestate/poststate- finding phase, and Don't-know should only be used in pre/postconditions. This aspect of the algorithm really needs formalization (just on paper), but for now, this closes #700
2011-08-05Merge branch 'master' of github.com:graydon/rustEric Holk-360/+103380
2011-08-05etc: Add "lambda" and "inline" to the vim modePatrick Walton-4/+4
2011-08-05rustc: Parse "inline". Also write it into metadata.Patrick Walton-13/+33
2011-08-05Add make clean rules for libuvBrian Anderson-0/+3
2011-08-05Build libuv with the same C compiler as the rest of rtBrian Anderson-1/+1
2011-08-05Introduce CC and CXX variables to the makefilesBrian Anderson-6/+10
2011-08-05Un-XFAIL sio-ctx, sio-srvBrian Anderson-8/+0
Seem to work consistently
2011-08-05Munge libuv makefiles sufficiently to build out of tree.Graydon Hoare-83/+66
2011-08-05More win32 libuv build tweaksBrian Anderson-3/+8
2011-08-05Tweak libuv makefiles so they pick up custom CFLAGSBrian Anderson-2/+2
2011-08-05Fix uv_buf_t declaration on win32Brian Anderson-0/+8
The fields of this structure are mysteriously defined in the opposite order on windows as on unix
2011-08-05XFAIL all the sio testsBrian Anderson-0/+20
They have random failures still, sadly.
2011-08-05Update build rules so rt builds with libuv on Linux.Brian Anderson-1/+2
Needed to shuffle around the linker arguments and add -lpthread
2011-08-05Add libuv MakefileRob Arnold-0/+113
2011-08-05Update libuv to revision ee599ec1141cc48f895de1f9d148033babdf9c2aRob Arnold-725/+37885
2011-08-05Basic async IO module using libuvRob Arnold-14/+722
2011-08-05Integrate libuv into the build systemRob Arnold-4/+14
2011-08-05Drop in libuv rev 2b5707d834a6b85b8e589ac04cb61a6db2dab94bRob Arnold-0/+64837
2011-08-05Log tags in memory_region::{free,realloc}Rob Arnold-4/+4
Make this useful and consistent with the destructor.
2011-08-05rustc: Add inlineness to the fn decl insteadPatrick Walton-0/+10
2011-08-05Revert "rustc: Introduce the concept of inline to the AST"Patrick Walton-104/+86
This reverts commit 9b9170f9fe2e4701255a5bd0630c203409d8e934.
2011-08-05rustc: Introduce the concept of inline to the ASTPatrick Walton-86/+104
2011-08-05build: Don't error out if clang is too old. Instead, build with GCC.Patrick Walton-5/+9
2011-08-05etc: Update the Vim syntax mode with new keywordsPatrick Walton-6/+6
2011-08-05(Almost) Always unify a function tail expr with the function result typeTim Chevalier-6/+42
typeck::check_fn had an exception for the case where the tail expr was compatible with type nil -- in that case, it doesn't unify the tail expr's type with the enclosing function's result type. This seems wrong to me. There are several test cases in Issue #719 that illustrate why. If the tail expr has type T, for some type variable T that isn't resolved when this check happens, then T never gets unified with anything, which is incorrect -- T should be unified with the result type of the enclosing function. (The bug was occurring because an unconstrained type variable is compatible with type nil.) Instead, I removed the check for type nil and added a check that the function isn't an iterator -- if it's an iterator, I don't check the tail expr's type against the function result type, as that wouldn't make sense. However, this broke two test cases, and after discussion with brson, I understood that the purpose of the check was to allow semicolons to be omitted in some cases. The whole thing seems rather ad hoc. But I came up with a hacky compromise solution: instead of checking whether the tailexpr type is *compatible* with nil, we now just check whether it *is* nil. This also necessitates calling resolve_type_vars_if_possible before the check happens, which worries me. But, this fixes the bug from Issue #719 without requiring changes to any test cases. Closes #719 but I didn't try every variation -- so reopen the bug if one of the variations still doesn't work.
2011-08-04Prohibit assignment to upvars in lambdas. Closes #805.Michael Sullivan-5/+58
2011-08-04Revert "rustc: Don't emit memset for non-structural types" due to crashesPatrick Walton-13/+2
This reverts commit 3d5a777fe19ab210aedf473678687a98023ff586.
2011-08-04rustc: Don't emit memset for non-structural typesPatrick Walton-2/+13
2011-08-04Add a cleanup for copying closures. Closes #804.Michael Sullivan-0/+10
2011-08-04Don't force resolution of type variables until there is no enclosing ↵Michael Sullivan-8/+14
function scope. Closes #803.
2011-08-04stdlib: Pass getopt matches by aliasPatrick Walton-8/+8
2011-08-04rustc: bzero in drop_slotPatrick Walton-1/+1
2011-08-04Enable creation of backwarding vtables (issue #702), but don't startLindsey Kuper-160/+232
using them yet. Also, refactor process_fwding_mthd into separate functions to handle backwarding and forwarding, and refactor create_vtbl to be more digestible.
2011-08-04rustc: bzero in zero_alloca. Shaves off a second or three.Patrick Walton-1/+1
2011-08-04Use lambdas in gather_locals in typeck.Michael Sullivan-57/+36
2011-08-04Use lambdas in the freevars pass.Michael Sullivan-64/+50
2011-08-04Merge branch 'master' of github.com:graydon/rustEric Holk-71/+163
2011-08-04rustc: Use memmove in copy_ty. 45% LLVM codegen speed improvement.Patrick Walton-2/+7
2011-08-04Handle alt on a _|_ - typed valueTim Chevalier-1/+4
Return the result of the discriminant from trans_alt, rather than nil, in the _|_ case. This was breaking the enclosed test case (alt-bot-2) when optimization was disabled. Closes #769
2011-08-04Add a fast path in ty::occurs_check_failsTim Chevalier-1/+5
Use type_contains_vars in occurs_check_fails to avoid doing any work most of the time. This fixes a performance regression. (No one else noticed yet that typechecking just got 4x slower, right? Well, now it isn't anymore. :-})
2011-08-04Implement the occurs checkTim Chevalier-14/+87
In the writeback phase, the typechecker now checks that it isn't replacing a type variable T with a type that contains T. It also does an occurs check in do_autoderef in order to avoid getting into an infinite chain of derefs. I'm a bit worried that there are more places where the occurs check needs to happen where I'm not doing it now, though. Closes #768
2011-08-04trans_args no longer needs llobj argument.Lindsey Kuper-3/+2
2011-08-04rustc: Actually emit shapesPatrick Walton-51/+59
2011-08-04Merge branch 'master' of github.com:graydon/rustEric Holk-0/+0