Commit Graph

1533 Commits

Author SHA1 Message Date
Niko Matsakis
c78b1639b4 fix c-stack-cdecl when used w/ i64 2011-10-24 17:03:18 -07:00
Niko Matsakis
8f2d75d53c switch over sqrt from llvm to c-stack-cdecl, exposing a bug in
the supported return types of upcall_c_stack
2011-10-24 16:06:18 -07:00
Niko Matsakis
d69a83b021 add implicit ctx 2011-10-24 16:06:18 -07:00
Niko Matsakis
973a285371 move uses of rust ABI in tests to cdecl or c-stack-cdecl as appr
Note: I found a bug in c-stack-cdecl which codes not permit such
native functions to be used as values.  I added an xfail-test
(c-stack-as-value) documenting it.
2011-10-24 16:06:18 -07:00
Niko Matsakis
fb48817ade work around bug when calling c-stack-cdecl fns from outside crate
In the main test, I call the wrapper instead of the native fn, as intended.
I also added an xfail-test that exercises the broken code path.  Will
file a bug.

Description of the broken code path:

The code path is that when we look up the external identifier we go through
trans_external_path() ->  type_of_ty_param_kinds_and_ty() ->
type_of_fn_from_ty() -> type_of_fn(), and type_of_fn() adds a lot of external
parameters. Problem is, I guess, that we don't pass the native ABI (or even the
fact that it's a native function!), just the types and kinds of the parameters.
2011-10-24 16:06:17 -07:00
Niko Matsakis
02d7a1e781 move sys fns into c-stack-cdecl and get_type_desc() into rusti
there is one test failure, stdtest/sys.rs, which inexplicably
(thus far) fails to compile because it invokes
sys::rustrt::last_os_error() instead of invoking
sys::last_os_error().  If stdtest/sys.rs is updated to invoke
the wrapper, it passes.  Still tracing the source of this error.
2011-10-24 16:06:17 -07:00
Niko Matsakis
d9b23cb022 move comm functions out of rust abi 2011-10-24 16:06:16 -07:00
Brian Anderson
4c95c52016 Remove a test binary that shouldn't exist 2011-10-23 14:23:09 -07:00
Brian Anderson
739b1b5b53 Cycle-collect objects 2011-10-21 17:21:59 -07:00
Brian Anderson
7ab6315f5f Free vectors during cc sweep 2011-10-21 16:07:40 -07:00
Brian Anderson
2d713215a8 Record the internal reference count of environment boxes. Closes #981 2011-10-21 14:05:16 -07:00
Marijn Haverbeke
3b5b93221e Remove some semicolons after block calls
The remaining ones can be removed after the next snapshot. (Or
we can let the next pretty-print pass take care of them.)
2011-10-21 14:24:42 +02:00
Marijn Haverbeke
050170d2af Remove remaining uses of iter and for-each
Issue #1056
2011-10-21 13:34:35 +02:00
Brian Anderson
0b791f5143 Restore broken tests in stdtest::test 2011-10-20 21:00:50 -07:00
Brian Anderson
ebc61e39d7 Remove temporary fn# syntax 2011-10-20 20:34:04 -07:00
Brian Anderson
c10eb221da Get windows working under the bare function regime
Had to ignore some task failure tests due to the current implementation
of spawn which guarantees that there's always something in the spawned
task that needs to be unwound.

Fixed some win-specific build problems.
2011-10-20 18:23:48 -07:00
Brian Anderson
29ad3bdb10 Make fn denote a bare function. Convert fn to fn@ as needed 2011-10-20 18:23:48 -07:00
Brian Anderson
391e12124b Tweak typecheck to enforce covariance on higher-order function arguments 2011-10-20 18:23:48 -07:00
Brian Anderson
8136b92ee8 Give subtype relationships to function types 2011-10-20 18:23:48 -07:00
Brian Anderson
ed985b61d5 Bare functions can coerce to blocks 2011-10-20 18:23:48 -07:00
Brian Anderson
354bfc8292 Bare functions can coerce to shared closures 2011-10-20 18:23:48 -07:00
Brian Anderson
686d6a485f Drop the 2 from the spawn*2 functions
Issue #1022
2011-10-20 18:23:47 -07:00
Brian Anderson
3b54dcfa79 Convert the test runners to typesafe spawn
Issue #1022
2011-10-20 18:23:47 -07:00
Brian Anderson
a4956a7cdd XFAIL task-perf-word-count-generic
This can't be done with bare functions.

Issue #1022
2011-10-20 18:23:47 -07:00
Brian Anderson
ac671c3172 Convert tests to use bare-fn spawn
Issue #1022
2011-10-20 18:23:47 -07:00
Brian Anderson
dcee98b024 Un-xfail-fast some tests
check-fast is more reliable now.
2011-10-20 16:01:24 -07:00
Brian Anderson
28161fcf3c Change run-pass/lots-a-fail.rs from xfail-fast to xfail-win32
All failing tasks leak on windows now
2011-10-20 16:00:13 -07:00
Brian Anderson
880b1ec9f5 Fail nicer when the parser doesn't find an expected string literal
Closes #1028
2011-10-19 18:04:44 -07:00
Matt Brubeck
15d33f7957 Fix parse error in constrained-type-missing-check.rs 2011-10-18 16:42:00 -07:00
Brian Anderson
314c011d71 Immutable and mutable? are covariant on their inner types
Whereas [mutable T] is invariant with respect to T, [T] and [mutable? T]
are covariant with respect to T.
2011-10-18 10:37:04 -07:00
Marijn Haverbeke
71a4a66135 Add a math module to the standard lib
I need some rudimentary stdlib stuff for the tutorial.

Closes #1042
2011-10-18 13:54:35 +02:00
Brian Anderson
0f0fa26c72 Enforce variance rules for mutable types 2011-10-17 20:51:34 -07:00
Brian Anderson
4d9d889dbf Don't allow assignment to mutable-wha? 2011-10-17 16:35:33 -07:00
David Rajchenbach-Teller
454333368c [Lib] int.rs, uint.rs: added max_value, min_value 2011-10-17 11:22:57 -07:00
Brian Anderson
bc4c3df1bf Don't allow the value of generic bare functions to be taken
Issue #1038
2011-10-13 14:39:30 -07:00
Brian Anderson
60cfa91897 Add a test that generic bare functions can be bound
Issue #1022
2011-10-13 12:16:26 -07:00
Marijn Haverbeke
e4c91fdf65 Properly fill single-variant zero-arg tag values.
Closes #1034. Closes #1035.
2011-10-13 15:14:09 +02:00
Niko Matsakis
e8a0e592da reimplement some of the unsafe stuff which got lost
- blocks inherit unsafety
  - remove the --check-unsafe flag
  - add unsafe annotations where needed to get things to compile
2011-10-12 16:33:07 -07:00
Niko Matsakis
5b015288b5 new test 2011-10-12 16:33:07 -07:00
Niko Matsakis
215b1ab000 make compiler emit more than 1 error in the case of unsafe 2011-10-12 16:33:07 -07:00
Niko Matsakis
3b66806624 prohibit ptr deref unless in unsafe code 2011-10-12 16:33:07 -07:00
Niko Matsakis
a56698575c fix error msg 2011-10-12 16:33:07 -07:00
Niko Matsakis
e8a29fbe3c add some new tests 2011-10-12 16:33:07 -07:00
Niko Matsakis
70164739e8 convert a few tests from unsafe fns to fns with unsafe bodies 2011-10-12 16:33:07 -07:00
Niko Matsakis
81533ff737 add pass to check that unsafe fns cannot be used as values 2011-10-12 16:33:06 -07:00
Niko Matsakis
e39db5a100 all tests pass 2011-10-12 16:33:06 -07:00
Niko Matsakis
db16fce77f all tests pass 2011-10-12 16:33:06 -07:00
Niko Matsakis
85da98db4a continue to annotate functions as unsafe where neccessary 2011-10-12 16:33:06 -07:00
Niko Matsakis
d4d7eb069b add unsafe tags into various points in the translation chains
and so forth
2011-10-12 16:33:06 -07:00
Niko Matsakis
8ea1a8eef9 make treatment of unchecked/unsafe blocks more uniform
also repair various errors in the parser related to such blocks.
rename checked_blk to default_blk to reflect the fact that it
inherits its purity from the surrounding context.
2011-10-12 16:32:57 -07:00
Brian Anderson
8366f3caa3 Revert "Test for #954"
This reverts commit 7edb043889.
2011-10-12 15:53:54 -07:00
Brian Anderson
7edb043889 Test for #954 2011-10-12 15:53:15 -07:00
Brian Anderson
40fa88febb Ignore stdtest::os::test_setenv. Fails periodically on mac 2011-10-12 15:27:58 -07:00
Niko Matsakis
24b201fa48 skip test, remove whitespace 2011-10-12 14:39:34 -07:00
Niko Matsakis
cbe8da0655 make treatment of unchecked/unsafe blocks more uniform
also repair various errors in the parser related to such blocks.
rename checked_blk to default_blk to reflect the fact that it
inherits its purity from the surrounding context.
2011-10-12 14:39:24 -07:00
Niko Matsakis
8c1231ae5f fix test to include a main() function 2011-10-12 14:26:47 -07:00
Niko Matsakis
d207bc3a0b it is also legal to call unsafe functions from other unsafe functions 2011-10-12 14:26:47 -07:00
Niko Matsakis
046ca827dd Add unsafe blocks, unsafe functions, and two rudimentary tests
related to them
2011-10-12 14:26:47 -07:00
Brian Anderson
99f876e3a8 Make build_environment and trans_bind_thunk GEP bound arguments the same
These functions both use GEP_tup_like to get at the arguments bound to the
environment, but they were starting from a different 'level' of the
environment-box structure. Frighteningly, this was leading to them having
different opinions of how the bound arguments were aligned in some cases.
2011-10-12 12:11:07 -07:00
David Rajchenbach-Teller
75bda422df [Tests] added float tests 2011-10-12 10:56:05 +02:00
Lindsey Kuper
813c2eb369 Revert "Revert "Add a test case for #898. Closes #898.""
This reverts commit e305ab3851.

Oops again.  Reverting a mistaken revert.
2011-10-11 22:03:23 -04:00
Lindsey Kuper
e305ab3851 Revert "Add a test case for #898. Closes #898."
This reverts commit f480203fdd.

Oops.  This patch requires people to bump their LLVM version.
2011-10-11 22:00:17 -04:00
Brian Anderson
f480203fdd Add a test case for #898. Closes #898.
Seems to have been fixed.
2011-10-11 16:50:50 -07:00
Brian Anderson
8c77d063a9 Add a test for assignment of bare functions
Issue #1022
2011-10-11 13:40:31 -07:00
Brian Anderson
b04f84275a Add a test that bare functions are word-sized
Issue #1022
2011-10-11 13:40:28 -07:00
Brian Anderson
90c2402089 Add a test that uses a hypothetical bare-fn spawn signature
Issue #1022
2011-10-11 12:10:56 -07:00
Brian Anderson
84e98f4f65 Add a test for higher-order bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
145feb3298 Add a test for binding bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
5b0f79b75a Don't allow bind to produce bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
9c46cc58cb Add a temporary syntax for bare functions
Bare functions will be represented as 'fn#' until they're implemented. Then
we'll switch it over to just 'fn'.

Issue #1022
2011-10-11 10:51:09 -07:00
Marijn Haverbeke
33167f7dec Adjust function signatures to allow for vecs being immediate
Some code was relying on vectors being implicitly by-reference (as
non-immediate value). This adds the necessary &&-sigils.

Closes #1021
2011-10-10 16:01:51 +02:00
Marijn Haverbeke
b4bae8fea5 Make vectors and strings immediates again
There's no good reason to force them to be spilled anymore. Some
pieces of trans become more elegant this way, and less stack allocs
and load/stores are needed.

Issue #1021
2011-10-10 15:59:16 +02:00
Marijn Haverbeke
1efe5f0577 Fix up test for last commit 2011-10-07 16:58:27 +02:00
Marijn Haverbeke
f26e770745 Make 1-1 parse again
Issue #954

This is not a very elegant fix -- we should probably do something with
constant folding to handle negative-int alt patterns in the future.
2011-10-07 16:46:44 +02:00
Marijn Haverbeke
7586082bb0 Add tests for programs that are invalid by arg-passing-style
Closes #1008
2011-10-07 10:41:40 +02:00
Marijn Haverbeke
41528dc543 Add pass-by-ref annotation to the tests to make them typecheck
Issue #1008
2011-10-07 10:41:39 +02:00
Brian Anderson
04e89af6db Add std::str::contains 2011-10-06 16:08:44 -07:00
Brian Anderson
82ef8519c3 Fix some path handling in std::fs on win32 2011-10-05 16:21:55 -07:00
Brian Anderson
a8ce543dc9 Add std::os::get_exe_path
Need this to correctly determine sysroot in rustc
2011-10-04 21:35:06 -07:00
Brian Anderson
2124839cd7 Hide unused variable warnings in stdtest::treemap 2011-10-04 21:35:06 -07:00
Brian Anderson
6f5a0c7500 Add std::fs::normalize 2011-10-04 21:22:03 -07:00
Brian Anderson
51ae30287b Add std::fs::split 2011-10-04 20:18:04 -07:00
Brian Anderson
b5bb42acfb XFAIL run-fail/linked-failure4. Deadlocks on mac 2011-10-03 14:46:52 -07:00
Brian Anderson
3a6f3cf275 Move compiletest to src/ and cleanup build rules 2011-10-02 17:28:59 -07:00
Brian Anderson
196cc6de2e Teach compiletest to construct the PATH variable correctly on win32 2011-09-29 22:58:34 -07:00
Marijn Haverbeke
d946e09a72 Move closure construction over to DPS style
Issue #667
2011-09-29 10:36:40 +02:00
Brian Anderson
e1ba559c03 Test cases for #985
Other restrictions on pinned kinds happened to fix this

Closes #985
2011-09-28 15:35:21 -07:00
Brian Anderson
cb4e99b688 Don't allow vectors of pinned kinds
Vectors of pinned kinds can't be safe because most interesting uses of vector
perform copies
2011-09-28 15:35:21 -07:00
Brian Anderson
14bac217b0 Make error patterns in some kind tests more specific 2011-09-28 15:35:21 -07:00
Brian Anderson
657e3ffaf5 xfail-fast run-pass/alt-range.rs 2011-09-28 12:46:29 -07:00
Brian Anderson
381205b747 Revert "Revert "Implement pattern ranges for all numeric types.""
This reverts commit a034f87146.

Conflicts:

	src/comp/middle/check_alt.rs
	src/comp/middle/trans_alt.rs
	src/comp/syntax/ast.rs
	src/comp/syntax/ast_util.rs
	src/comp/syntax/fold.rs
	src/comp/syntax/print/pprust.rs

Conflicts:

	src/comp/middle/trans_alt.rs
2011-09-28 12:46:29 -07:00
Wade Mealing
f375391cb6 Patch to error instead of crashing when parsing unmatched double quotes
Patch to error and fail instead of using all available memory
then crashing to detect the error condition of an unmatched
double quote before the end of a file.

I couldn't get it to show nice error messages, so this may not be
the ideal fix.

A test case for this situation has also been added.
2011-09-27 23:20:31 -07:00
Brian Anderson
a96b16e8c3 Make it again possible to initialize resource locals via assignment
Some special cases allow both 'let a <- my_resource(x)' and
'let a = my_resource(x)' to work as expected despite ostensibly being
copies and moves.
2011-09-27 23:20:27 -07:00
Brian Anderson
459353e107 Prevent copies of resources into various things 2011-09-27 21:50:07 -07:00
Brian Anderson
8217e4bd38 Add xfailed tests that resources can't be copied into various things 2011-09-27 16:03:10 -07:00
Brian Anderson
b8bb663df7 Don't ever raise unique kinds of pinned kinds to shared (again)
So *resource, ~resource, [resource] are all pinned. This is counter to the
design of the kind system, but this way is a much clearer path to type safety.
Once we've established a good baseline with lots of tests, then we can try to
make raising pinned kinds work.
2011-09-27 16:03:10 -07:00
Brian Anderson
1097463d96 Add an xfailed test for bogus deep copying of things containing resources 2011-09-27 14:28:20 -07:00
Brian Anderson
4bffa5e13a Add an xfailed test for bogus vector addition of typarams 2011-09-27 14:24:28 -07:00
Jesse Ruderman
923aa4744e Test for #924 2011-09-27 11:05:16 -07:00
Brian Anderson
b49f4689f5 Add two xfailed tests for invalid copies into vectors 2011-09-26 23:45:51 -07:00
Brian Anderson
1796abc3ef xfail-win32 -> xfail-fast 2011-09-26 23:34:54 -07:00
Brian Anderson
4f2a0117c7 Try to appease windows by xfail-win32'ing a random test 2011-09-26 23:34:12 -07:00
Brian Anderson
df19b7a13a Test for issue #980 2011-09-26 23:24:53 -07:00
Brian Anderson
6b42ad5ea0 Enforce copy restrictions on let initializers 2011-09-26 22:00:15 -07:00
Brian Anderson
07e13fe447 Make some nocopy tests a bit more futureproof
Turn the let assignment initializers into move initializers since
that assignment is going to become illegal
2011-09-26 22:00:15 -07:00
Brian Anderson
3778b6c6a8 Prevent copying of uncopyable things via the copy op 2011-09-26 20:03:30 -07:00
Brian Anderson
755001725a Prevent copying of uncopyable things via compound assignment ops 2011-09-26 20:03:24 -07:00
Brian Anderson
99cbea51a1 Don't allow vectors of pinned kinds to be copied 2011-09-26 19:57:00 -07:00
Brian Anderson
4bee452221 Don't allow copying of unique boxes of pinned kinds
Issue #409
2011-09-26 18:43:49 -07:00
Brian Anderson
2d5e085eb9 Add a test that unique boxes in vectors are copied when the vector is
Issue #409
2011-09-26 17:59:58 -07:00
Patrick Walton
5c973142df rt: Turn on cycle collection at task death; add a test case 2011-09-26 16:59:15 -07:00
Brian Anderson
389852b5c0 Fix tags of unique boxes
Issue #409
2011-09-26 14:44:08 -07:00
Brian Anderson
223f5be166 Unique vectors and boxes of pinned are unique kinds. Closes #977 2011-09-26 13:38:46 -07:00
Patrick Walton
37cf7b92c8 test: Fix more typos in weird-exprs.rs. 2011-09-26 10:26:30 -07:00
Patrick Walton
2348858995 test: wierd-exprs -> weird-exprs 2011-09-26 10:24:46 -07:00
Jesse Ruderman
798b3531a6 Enable hammertime 2011-09-25 21:13:52 -07:00
Jesse Ruderman
73898351d2 Test for #973 2011-09-25 21:01:50 -07:00
Jesse Ruderman
60ec49b121 Test for #942 2011-09-25 20:57:44 -07:00
Jesse Ruderman
56410b2fb6 Remove FIXME test that's covered by run-pass/unreachable-code.rs 2011-09-25 20:56:19 -07:00
Brian Anderson
98db2febd3 Handle ~fail. Closes #968 2011-09-24 23:52:22 -07:00
Brian Anderson
895674b6eb Add a test for assignment of unique boxes of generics
Closes #976

Issue #409
2011-09-24 21:31:28 -07:00
Brian Anderson
4f7ecce7d1 Support non-immediates in trans_uniq::copy_val
Issue #409
2011-09-24 21:28:58 -07:00
Jesse Ruderman
0125532106 Don't iloop (future-proof test against improved reachability computations) 2011-09-24 16:13:32 -07:00
Jesse Ruderman
c29f1af17e Remove irrelevant parts of test 2011-09-24 16:11:50 -07:00
Brian Anderson
9029416e28 Tweak random thing to make windows build succeed. Awesome.
So, a recent commit made syntax-extension-fmt fail under check-fast.
This commit disables lots-a-fail under check-fast and voila! *grumble*
2011-09-24 14:44:42 -07:00
Brian Anderson
e804352de4 Move a previous run-pass test for kind-lowered unique boxes to compile-fail
This test tries to swap unique boxes containing resources, which is not
allowed.

Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
c5877450e6 Tweak the type allocated for unique pointers
Seems to be more correctish...

Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
777a536313 Support non-immediates in unique-box type glue
Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
856acbf66d Vectors containing pinned kinds become pinned
Otherwise they could be copied
2011-09-24 12:36:51 -07:00
Brian Anderson
e5d5682065 Unique pointers containing pinned kinds become pinned
Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
97629727b1 Add tests for swapping unique boxes
Issue #409
2011-09-24 12:36:50 -07:00
Jesse Ruderman
3a7a2943dd Add vec::filter 2011-09-23 19:10:48 -07:00
Brian Anderson
d8f6e9f237 Add let destructuring for unique boxes
Issue #409
2011-09-23 16:12:04 -07:00
Brian Anderson
122f714fde Add missing case for pat_uniq to syntax::visit
Issue #409
2011-09-23 16:03:35 -07:00
Brian Anderson
27972a6def Add two tests for sending unique boxes across channels
Issue #409
2011-09-23 15:32:31 -07:00
Brian Anderson
68512f2d9d Actually use unique boxes in run-fail/unwind-unique 2011-09-23 15:23:44 -07:00
Brian Anderson
18b01d5cfe Create a bunch of test cases for unique boxes by copying box tests
XFAIL the ones that don't work

Issue #409
2011-09-23 15:15:30 -07:00
Brian Anderson
2082f67765 Begin to support pattern matching on unique boxes
Issue #409
2011-09-23 15:15:30 -07:00
Jesse Ruderman
7b1a3bb8e6 Add more unreachable-code tests. Closes #935 2011-09-23 15:01:19 -07:00
Brian Anderson
d10d23f0ad xfail-win32 linked-failure and send-iloop 2011-09-23 12:30:36 -07:00
Marijn Haverbeke
5310cf4f30 xfail-pretty unreachable-code.rs 2011-09-23 11:33:27 +02:00
Marijn Haverbeke
420484579d Better handling of unreachable code in trans
The builder functions in trans_build now look at an 'unreachable' flag
in the block context and don't generate code (returning undefined
placeholder values) when this flag is set. Threading the unreachable
flag through context still requires some care, but this seems a more
sane approach than re-checking for terminated blocks throughout the
compiler.

When creating a block, if you use its closest dominator as parent, the
flag will be automatically passed through. If you can't do that,
because the dominator is a scope block that you're trying to get out
of, you'll have to do something like this to explicitly pass on the
flag:

    if bcx.unreachable { Unreachable(next_cx); }

Closes #949. Closes #946. Closes #942. Closes #895. Closes #894.
Closes #892. Closes #957. Closes #958.
2011-09-23 11:09:57 +02:00
Brian Anderson
93b9574d32 Remove deprecated mutable type constructor from run-pass/issue-511
This was triggering a warning that was making the pretty-print test fail
2011-09-22 23:08:59 -07:00
Brian Anderson
cee7b4caee Add test for issue #511. Closes #511 2011-09-22 22:50:12 -07:00
Brian Anderson
33dd7cc854 Add a test for negative constants. Closes #358 2011-09-22 21:59:09 -07:00
Brian Anderson
0e5f76a718 Fix ty_uniq case in maybe_auto_unbox
Closes #961
Issue #409
2011-09-22 18:14:18 -07:00
Brian Anderson
1a48023a79 Add take glue for unique boxes
Closes #962
Issue #409
2011-09-22 18:05:36 -07:00
Brian Anderson
f628003da6 Adda test for returning unique boxes
Issue #409
2011-09-22 17:00:53 -07:00
Brian Anderson
7a76323459 Allow vectors to contain unique boxes. Closes #952
Issue #409
2011-09-22 17:00:53 -07:00
Brian Anderson
dfa5bd1114 XFAIL task-comm 2011-09-22 16:09:10 -07:00