Commit graph

6750 commits

Author SHA1 Message Date
Graydon Hoare
fefdb63c4c Begin shift over to using pandoc, markdown and llnextgen for reference manual. Fix man page URL while at it. 2012-01-12 19:10:30 -08:00
Brian Anderson
17d504e0a9 Register snapshots 2012-01-12 17:16:31 -08:00
Tim Chevalier
565ea068ca Add type parameters when checking wildcard patterns
For some reason, wildcard patterns were never getting type parameter
substitutions attached. This would cause an assertion failure when
checking a wildcard pattern that matches against a tag with
polymorphic type (not sure why this didn't come up before). Fixed it.
(The diff and test case may be easier to understand than this note
:P)

Closes #1503.
2012-01-12 16:51:07 -08:00
Brian Anderson
23e0d16b5f build: Build libraries in the bin directory on win32 2012-01-12 13:59:05 -08:00
Niko Matsakis
8818f42b19 make parser disambiguate fn~ at top level correctly 2012-01-12 13:47:38 -08:00
Niko Matsakis
263f4c58a0 add tydescs into shape, rewrite walk_fn_contents() 2012-01-12 13:47:38 -08:00
Niko Matsakis
e55aa6e5ef free uniq data we encounter on the sweep, walk thru them otherwise 2012-01-12 13:47:38 -08:00
Marijn Haverbeke
9d217d9fb0 Register new snapshot (with correct checksum this time) 2012-01-12 21:56:26 +01:00
Marijn Haverbeke
78a9f809b7 Revert "Register new snapshot"
This reverts commit 9faddb6f16.
2012-01-12 20:03:14 +01:00
Marijn Haverbeke
9faddb6f16 Register new snapshot 2012-01-12 19:53:57 +01:00
Marijn Haverbeke
efb9df1ebd Make driver::session::session no longer an object
Rather, it is now a struct where properties like opts are accessed
directly, and the error-reporting methods are part of a static impl
(with the same name as the type).
2012-01-12 18:04:02 +01:00
Marijn Haverbeke
56fe4c2681 Implement passing cast-to-vtable values as bounded params
Closes #1492
2012-01-12 16:57:58 +01:00
Kevin Atkinson
44352df57c Cleanups to previous commits for issue #1393. 2012-01-12 09:55:48 +01:00
Brian Anderson
175196bbb8 libcore: Fix long lines 2012-01-11 22:54:12 -08:00
Roland Tanglao
81c3028699 make rustdocs more terse for bool.rs where it is obvious to programmers as per feedback from graydon 2012-01-11 22:37:25 -08:00
Roland Tanglao
350e87eaae Change doc comments to rustdoc in bool.rs 2012-01-11 22:37:25 -08:00
Brian Anderson
2c70b2fb7e libstd: Remove a bogus link_name attribute 2012-01-11 20:01:55 -08:00
Brian Anderson
35b27aa172 test: Add a test that empty records don't parse
Closes #1200
2012-01-11 19:45:18 -08:00
Brian Anderson
6e1f9ad1f1 rustc: Don't allow empty link_name when nolink attribute is present
Closes #1326
2012-01-11 19:45:18 -08:00
Niko Matsakis
09869cd056 update iface cc code to not walk contents (as with other boxes) 2012-01-11 18:28:09 -08:00
Brian Anderson
70367d757c test: xfail-win32 run-pass/too-much-recursion 2012-01-11 15:10:36 -08:00
Brian Anderson
f921e2e3d1 Revert "build: Build libraries in the bin directory on win32"
This reverts commit c00ec5f9c9.
2012-01-11 14:13:11 -08:00
Brian Anderson
94c389a25b rt: Add RUST_MAX_STACK env var with 8MB default
Closes #1489
2012-01-11 13:57:11 -08:00
Brian Anderson
c00ec5f9c9 build: Build libraries in the bin directory on win32 2012-01-11 13:57:11 -08:00
Marijn Haverbeke
46664c1af2 Properly fix check-fast script 2012-01-11 22:10:43 +01:00
Marijn Haverbeke
8a3d1eeb42 Try to adjust check-fast script to std::io changes 2012-01-11 21:55:55 +01:00
Marijn Haverbeke
4c9c1cd199 Fix dependency bug iface-did-of-impl resolving
By simply not resolving that def id until the typeck pass.

Closes #1494
2012-01-11 21:40:13 +01:00
Marijn Haverbeke
34d7f05292 Major clean-up of std::io
Use ifaces instead of objs, stop wrapping everything in two (or three)
layers of no-value-added indirection, and remove some of the more
pointless/outdated idioms from the code.
2012-01-11 21:00:11 +01:00
Marijn Haverbeke
807592e99f Switch run_program over to ifaces 2012-01-11 20:33:44 +01:00
Marijn Haverbeke
4f76db43e6 Convert std::sha1 and std::rand over to ifaces 2012-01-11 20:33:44 +01:00
Marijn Haverbeke
26610dbbc8 Convert std::deque over to an iface 2012-01-11 20:33:44 +01:00
Marijn Haverbeke
15744210e7 Implement std::map as an iface/impl instead of an obj 2012-01-11 20:33:44 +01:00
Niko Matsakis
c68345e57e add a log_str() function and allow '%?' in fmt strings to use it 2012-01-11 10:32:54 -08:00
Niko Matsakis
f3b867fd04 add section on spawn_connected to tutorial and pull test into file 2012-01-11 09:49:21 -08:00
Marijn Haverbeke
e0cf550527 Register new snapshot 2012-01-11 18:16:26 +01:00
Marijn Haverbeke
f2352f4062 Fix regression in resolving of external impls 2012-01-11 17:12:11 +01:00
Marijn Haverbeke
87253cf3a9 Revert some iface shape code, fix a few more things in it
We can now run the compiler with an iface-based hashtable
implementation.
2012-01-11 11:46:44 +01:00
Marijn Haverbeke
0145b15f0c Pass type with params intact as item_type for method callees
This prevents trans_args from optimizing out nil return types. The
method might be generic, in which case it *will* write to a nil retptr.
2012-01-11 11:11:45 +01:00
Niko Matsakis
441a42c5d2 update shape code to handle iface instances 2012-01-10 19:05:28 -08:00
Graydon Hoare
0e334c6839 Fold and re-evaluate expr in tag discriminant. 2012-01-10 15:59:57 -08:00
Kevin Atkinson
1dc3debdaf Add support for casting enum-like tags to scalar values. 2012-01-10 15:59:57 -08:00
Kevin Atkinson
08abf8d37f Support explicit discriminant numbers on tag variants.
Addresses issue #1393.

For now disallow disr. values unless all variants use nullary
contractors (i.e. "enum-like").

Disr. values are now encoded in the crate metadata, but only when it
will differ from the inferred value based on the order.
2012-01-10 15:59:57 -08:00
Patrick Walton
d0fe6723fc test: Fix test/pretty/tag-blank-lines.rs for the tag -> enum switch 2012-01-10 16:02:49 -08:00
Patrick Walton
ffdb7f97f8 rustc: Accept "enum" in addition to "tag" 2012-01-10 15:32:39 -08:00
Niko Matsakis
1592de0faf replace lambda with fn@ 2012-01-10 13:31:06 -08:00
Niko Matsakis
8b911587df rename sendfn to fn~, lambda to fn@ 2012-01-10 13:31:06 -08:00
Brian Anderson
af086aa8ef rustc: Remove sret attributes from functions
Something about the way we're using it is causing incorrect code generation.

Closes #1343
2012-01-10 13:28:12 -08:00
Patrick Walton
d4a4b82973 rt: Export upcall_s_shared_malloc since the SpiderMonkey bindings need it 2012-01-10 10:44:26 -08:00
Niko Matsakis
110c3ccdca add rust_task_is_unwinding predicate and do not kill if already unwinding 2012-01-09 19:53:32 -08:00
Austin Seipp
070b1c8333 Remove support for 'when' in alt-patterns from parser
Issue #1396
2012-01-09 19:27:06 -08:00
Austin Seipp
a94b1ccacb Change all uses of 'when' in alt-patterns to 'if'
Issue #1396
2012-01-09 19:27:05 -08:00
Brian Anderson
d8a0ef1c84 Merge pull request #1477 from erickt/master
Adding longlong and ulonglong types
2012-01-09 17:13:35 -08:00
Graydon Hoare
8387896dda Remove proto_sugar and 'lambda' as keyword, commit to fn@. 2012-01-09 16:12:48 -08:00
Graydon Hoare
f6ecbe88ca Fix rpath bug. 2012-01-09 16:12:47 -08:00
Erick Tryzelaar
ae76a7db5d libcore: add longlong and ulonglong types. 2012-01-09 15:14:39 -08:00
Brian Anderson
a736669fb6 Register snapshots 2012-01-09 14:58:00 -08:00
Brian Anderson
7e8974305c rt: Set Linux red zone to 20K again
With runtime logging on it smashes the stack
2012-01-09 11:44:36 -08:00
Austin Seipp
9211348989 Make the parser accept 'if' as an alternative to 'when' in alt patterns.
Also fix the pretty printer, making it output 'if' instead of 'when'.

Issue #1396
2012-01-09 10:50:33 -08:00
Brian Anderson
fbad0204e4 Merge pull request #1470 from grahame/grahame
add new read_chars method, fix bug in read_char
2012-01-09 10:35:48 -08:00
Marijn Haverbeke
6b20e8c88b Fix error message case in two cfail test
I had made the error consistent with other errors, but forgot to
also change the tests.
2012-01-09 17:51:39 +01:00
Marijn Haverbeke
9e2b273221 Iface types are not structural
Not sure how they ended up being marked as such.
2012-01-09 16:44:37 +01:00
Marijn Haverbeke
a62bd9abec Work around recursive type check for iface types
They are nominal, and can safely refer to themselves.
2012-01-09 16:25:39 +01:00
Marijn Haverbeke
c13f087454 Properly recognize self as an upvar when closed over
Closes #1463
2012-01-09 16:25:39 +01:00
Niko Matsakis
51364b5708 Fix #1474: check that block args resolved to bare fns do not make use of upvars 2012-01-09 06:50:40 -08:00
Niko Matsakis
8944a390c6 change spawn_connected argument to copy mode 2012-01-09 06:50:39 -08:00
Marijn Haverbeke
1ee9a83de0 Fix bug in iface shape code
Issue #1437
2012-01-09 15:12:18 +01:00
Marijn Haverbeke
f30c5ea686 Remove leftover comm.rs in std
(The actual comm module lives in core.)
2012-01-09 14:53:13 +01:00
Marijn Haverbeke
0945fcf1fb Fix typo in example in libcore docs 2012-01-09 14:44:52 +01:00
Marijn Haverbeke
47cfeba467 Add cases for iface values to rust_shape.h
They appear to log okay now, but I can't promise much beyond that.

@pcwalton If you feel like taking a look, I'd be grateful. Interfaces are
boxes containing a (tydesc, dict, value_of_any_type) tuple, where the leading
tydesc describes the whole tuple.

Issue #1437
2012-01-09 14:44:21 +01:00
Grahame Bowland
ba694775f5 add tests for io::readchars and io::readchar
Additionally reformat so that 'make check' passes.
2012-01-09 20:49:17 +08:00
Marijn Haverbeke
9fa7491676 Don't resolve upvars in fn() { ... } exprs
Closes #1467
2012-01-09 11:32:18 +01:00
Haitao Li
26536e6915 rt: Fix build with clang on non-Mac 2012-01-09 15:34:06 +08:00
Jesse Ruderman
972f6c17fb Fix bustage 2012-01-08 19:34:02 -08:00
Jesse Ruderman
159ad7a63b Update fuzzer 2012-01-08 19:24:24 -08:00
Brian Anderson
c5564c9bae Declare MIT license in crate attributes, not BSD
The Rust License is actually the MIT license, not BSD
2012-01-08 16:22:55 -08:00
Niko Matsakis
9775b480fd add spawn_connected 2012-01-08 15:32:13 -08:00
Niko Matsakis
91cd57e872 correct long line 2012-01-08 15:32:03 -08:00
Niko Matsakis
7a336f1e7c modify last use to take into account cap clause, add new test 2012-01-08 14:57:03 -08:00
Niko Matsakis
106385cb91 make spawned fn copy mode so that bare fns can be used 2012-01-08 14:57:03 -08:00
Marijn Haverbeke
7d3f892f35 First barely-working version of casting to iface
Issue #1437
2012-01-08 23:07:15 +01:00
Marijn Haverbeke
a161371d13 Add fall-through case for non-iface bounds typeck::lookup_method
Closes #1462
2012-01-08 21:59:37 +01:00
Marijn Haverbeke
9a7061dfab Fix some bad code in the dict interner
Issue #1436
2012-01-08 21:57:54 +01:00
Grahame Bowland
bcc25634e6 add new read_chars method, fix bug in read_char
having a read_chars method is convenient and more efficient.

the old read_char method had a bug due to re-use of the 'w' width
variable as a loop counter and so was broken for wide characters,
this patch fixes that.
2012-01-09 00:37:03 +08:00
Brian Anderson
e3afc78fde core: Update task spawning example 2012-01-07 17:11:54 -08:00
Niko Matsakis
5bee80612b fix valgrind error: allocate enough space for all type descs 2012-01-07 08:03:34 -08:00
Niko Matsakis
1e674ffe43 choose a new arbitrary value 2012-01-06 22:40:32 -08:00
Niko Matsakis
2f0eb7ae0c add rust_util.h header file 2012-01-06 22:40:32 -08:00
Niko Matsakis
d4410a9f9b rewrite to use old C++-based mechanism 2012-01-06 22:40:32 -08:00
Niko Matsakis
a1ef79c9d2 update to use new spawn syntax 2012-01-06 22:40:32 -08:00
Niko Matsakis
a366a9eece report unicode decode failures nicely 2012-01-06 22:40:32 -08:00
Niko Matsakis
0595f57186 revert changes to trans_uniq.rs 2012-01-06 22:40:32 -08:00
Niko Matsakis
154f81b0be revert metrics 2012-01-06 22:40:32 -08:00
Niko Matsakis
6237368cc2 plug leak: free shared type descrs recursively, as we ought to 2012-01-06 22:40:32 -08:00
Niko Matsakis
d1b987d292 hack the tydesc that is registered with a malloc to be what cc expects 2012-01-06 22:40:31 -08:00
Niko Matsakis
8506241f3a fix how we walk functions to match new closure fmt 2012-01-06 22:40:31 -08:00
Niko Matsakis
8e89df69de rejigger impl to have an opaque closure ptr rather than
opaque closure
2012-01-06 22:40:31 -08:00
Niko Matsakis
7db640e63d collapse sizeof, alignof into metrics, pass along an instance if avail 2012-01-06 22:40:31 -08:00
Niko Matsakis
4f52e5a5ec make size_of and align_of take an optional value 2012-01-06 22:40:31 -08:00
Niko Matsakis
2074e06278 emit the take glue for closure tydescs 2012-01-06 22:40:31 -08:00
Niko Matsakis
9f84f88276 port over the tests to use the new API 2012-01-06 22:40:31 -08:00
Niko Matsakis
25e81e34ea rewrite task tests 2012-01-06 22:40:31 -08:00
Niko Matsakis
98f5109cde simplify task impl 2012-01-06 22:40:31 -08:00
Niko Matsakis
e88905cd28 remove trailing whitespace 2012-01-06 22:07:29 -08:00
Jesse Ruderman
bf038b9b90 Get these files compiling again 2012-01-06 22:06:32 -08:00
Niko Matsakis
373dbe7741 test exposing memory management failure for #1078 2012-01-06 21:15:27 -08:00
Brian Anderson
4632358cbc Revert "rt: Reduce mac red zone to 6K"
This reverts commit d499e739a1.
2012-01-06 18:16:19 -08:00
Brian Anderson
be565a1a7a cargo: Print rustc's stdout when compilation fails
stdout is where all the useful info is, not stderr.
2012-01-06 18:04:25 -08:00
Brian Anderson
d499e739a1 rt: Reduce mac red zone to 6K 2012-01-06 16:42:26 -08:00
Brian Anderson
396a8bd4e5 rustc: Use std::homedir to locate /home/banderson
Issue #1359
2012-01-06 16:38:29 -08:00
Brian Anderson
4b2f37253a std: Untabify 2012-01-06 16:37:04 -08:00
Brian Anderson
74c825e385 std: Add fs::homedir
Returns the home directory of the user as appropriate for the platform.

Issue #1359
2012-01-06 16:33:17 -08:00
Brian Anderson
2f4c9315af rt: Fail the scheduler immediately on task failure in win32 2012-01-06 16:18:56 -08:00
Tim Chevalier
7c7559edaf Disallow variable names that shadow tags in scope
Now, if you have a tag named "foo", a variable declaration like
"let foo..." is illegal. This change makes it possible to eliminate
the '.' after a nullary tag pattern in an alt (but I'll be doing
that in a future commit) -- as now it's always obvious whether a
name refers to a tag or a new declared variable.

resolve implements this change -- all the other changes are just to
get rid of existing code that declares variables that shadow tag
names.
2012-01-06 14:44:43 -08:00
Tim Chevalier
da519c8587 Eliminate a use of map::get in freevars
map::get is evil -- just say no!
2012-01-06 14:44:43 -08:00
Graydon Hoare
4f3171ea81 Merge pull request #1450 from erickt/master
adding some misc functions and some functions just for [u8]
2012-01-06 13:04:49 -08:00
Marijn Haverbeke
7b00bac540 Add some basic comments to trans_imp.rs 2012-01-06 17:50:55 +01:00
Marijn Haverbeke
822acdd170 Make binding of fns with bounded type parameters work
Interns non-static dicts to heap-allocated equivalents so that they no
longer have stack scope.

Closes #1436
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
d23e2052e0 Support interface casting in the typechecker
Issue #1437
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
cf5c877fc0 Statically allocate static dicts
Issue #1436
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
41a2d8495e Fix pretty-printing of ty params in iface methods 2012-01-06 17:40:05 +01:00
Marijn Haverbeke
7c1f683c6d Fix bug in method type parameter passing
It would occasionally pass the wrong type parameter, when calling
a generic method from a generic impl on a bounded param type.
2012-01-06 17:40:05 +01:00
Erick Tryzelaar
6cfc196d42 libstd: rename c_vec::size to len. 2012-01-06 08:12:18 -08:00
Niko Matsakis
295df68faf add alignment to i386 for good measure, though we do not yet
save SSE regs in i386 (we ought to, though!)
2012-01-06 07:57:56 -08:00
Erick Tryzelaar
3e68803891 libcore: add [u8] helper functions to vec. 2012-01-06 07:47:14 -08:00
Erick Tryzelaar
eade7844a3 libstd: switch map to use libcore's hash functions. 2012-01-06 07:47:14 -08:00
Erick Tryzelaar
7806180557 libcore: add a trivial uint hash function. 2012-01-06 07:47:13 -08:00
Erick Tryzelaar
ae225e2b6c libcore: Add binop functions to u32 and u64 2012-01-06 07:47:13 -08:00
Niko Matsakis
fefae72a53 fix alignment of registers structure 2012-01-06 07:45:06 -08:00
Brian Anderson
b1e2f04eb4 libcore: Use correct link name for lgamma_r on win32 2012-01-05 21:35:03 -08:00
Brian Anderson
b532812572 rustc: Stop exported back::rpath::test
Tests no longer need to be exported
2012-01-05 18:23:30 -08:00
Brian Anderson
51e6df689c rustc: Allow the test runner to run unexported tests 2012-01-05 18:16:56 -08:00
Graydon Hoare
d2218d9c9c Attempt to fix build breakage due to lgammaf_r having two leading underscores on mingw. 2012-01-05 17:54:30 -08:00
Brian Anderson
c2c497ff53 rustc: Configure out #[test] functions when not testing 2012-01-05 17:31:57 -08:00
Graydon Hoare
a2acb052ca Simplify NSIS package script. 2012-01-05 17:03:02 -08:00
Brian Anderson
e746ed6880 rustc: Add cargo's lib directory to search paths 2012-01-05 16:03:31 -08:00
Marijn Haverbeke
54cf0e9c0d Use precise return type to allocate retslot in trans_args
Using type_of_or_i8 did, predictably, allocate an i8 for a type parameter,
which leads to memory corruption and general confusion.

Closes #1443
2012-01-05 22:45:02 +01:00
Niko Matsakis
75f84b2563 make test typecheck 2012-01-05 10:44:38 -08:00
Niko Matsakis
e1a0d0f03d fix pretty printer to correctly insert parens for disamb 2012-01-05 10:44:38 -08:00
Niko Matsakis
810927824c update test on disambig to reflect that some cases are no longer legal 2012-01-05 10:44:38 -08:00
Niko Matsakis
afe792496a correct test to reference right value 2012-01-05 10:44:38 -08:00
Niko Matsakis
f832edc369 require a non-semi expr acting as a stmt to have unit return type 2012-01-05 10:44:38 -08:00
Niko Matsakis
37ba5f3b32 make parser handle parenthesized block-sugar exprs properly 2012-01-05 10:44:38 -08:00
Stefan Plantikow
c8467977c4 Merge branch 'master' into kmath
Conflicts:
	src/libcore/float.rs
2012-01-05 17:20:13 +01:00
Stefan Plantikow
1f10ee365c Moved generic float::min, max to core::math and cleaned up some imports 2012-01-05 17:11:34 +01:00
Marijn Haverbeke
cc929fc9f9 Clean up translating of def_ids in metadata reader
Reduces the amount of closure allocation, and makes the code cleaner.
2012-01-05 17:03:38 +01:00
Stefan Plantikow
494ad4e601 Merge branch 'master' into kmath 2012-01-05 16:25:51 +01:00
Marijn Haverbeke
60ae1590af Switch to new param kind bound syntax
And remove support for the old syntax
2012-01-05 15:50:02 +01:00
Marijn Haverbeke
1f71a0f48d Clean up some FIXMEs related to impls 2012-01-05 14:55:23 +01:00
Marijn Haverbeke
3a20dda7ea Get external interfaces / impls working
Issue #1227
2012-01-05 14:17:31 +01:00
Marijn Haverbeke
38c3bd9057 Register new snapshot 2012-01-05 11:54:28 +01:00
Marijn Haverbeke
516fbed230 Fix bad spans for ast::ty parsing
The span would be pointing after the actual text.
2012-01-05 11:09:19 +01:00
Marijn Haverbeke
6559aa8bfb Write the iface type of an impl in the crate data
Also, move checking of ifaces into the collect phase of typeck
to give further passes some guarantees.

Issue #1227
2012-01-05 11:04:41 +01:00
Marijn Haverbeke
3eb35900c7 Remove ty::bind_params_in_type
It does nothing that substitute_type_params can't do better.
2012-01-05 10:07:33 +01:00
Marijn Haverbeke
02505d8aa1 Express some list primitives in a way that doesn't copy
It was somewhat embarassing that list::len copied its elements.
2012-01-05 09:18:19 +01:00
Josh Matthews
0e98e64bc2 Add more item types to the ast_map so the test suite can build with debug info. 2012-01-05 01:20:51 -05:00
Stefan Plantikow
a16acc0c10 added preliminary support for per-architecture generation of math constants (for porting) 2012-01-05 05:25:20 +01:00
Stefan Plantikow
6284190ef9 Merge branch 'master' into kmath
Conflicts:
	src/libcore/cmath.rs
2012-01-05 02:07:12 +01:00
Niko Matsakis
1dec1c8813 make scanning more efficient by avoiding recomputation 2012-01-04 15:25:17 -08:00
Niko Matsakis
70c808d173 extend tester so that error msgs can be attached to lines 2012-01-04 15:25:17 -08:00
Marijn Haverbeke
3971b520bc Use the right types for methods in trans_impl
This prevents misalignment between function and argument
types in corner cases.
2012-01-04 22:12:48 +01:00
Marijn Haverbeke
71c1c15805 xfail-pretty iface-generic.rs until i have time to debug 2012-01-04 19:58:02 +01:00
Tim Chevalier
1e54684093 Reformat typestate error messages so as not to confuse emacs compilation mode 2012-01-04 10:53:56 -08:00
Marijn Haverbeke
b02a77d6b4 Add test for generic iface methods
Issue #1227
2012-01-04 17:30:36 +01:00
Marijn Haverbeke
94d40be746 Prevent typenames in param bounds from resolving to their own param
I.e. fn foo<T: seq<T>>(...). This leads to weird circularities that seem to
never make any sense, so it seems prudent to forbid it.

Issue #1227
2012-01-04 17:30:36 +01:00
Marijn Haverbeke
42f6608ffd Add visit_ty_params to visit.rs
And use it to make typechecking of bounds less error-prone.
2012-01-04 17:30:36 +01:00
Marijn Haverbeke
e11d207113 Add either::is_left and either::is_right 2012-01-04 17:30:36 +01:00
Marijn Haverbeke
a7e1a35f88 Properly typecheck and compile invocations of generic methods.
Aligning the type parameters of the ifaces, impls, and methods
correctly in typeck is almost brain surgery. Seems to work now for
everything I threw at it, but might still break in other corner cases.

Issue #1227
2012-01-04 17:28:51 +01:00
Lenny222
d1ffe5034b "str": rename "str_from_cstr" to "from_cstr" (analogous to the other "from_*") 2012-01-04 09:33:07 +01:00
Lenny222
dd284eb396 "char": use shorter names "to_lower"/"to_upper", analogous to the same names in "str" 2012-01-04 09:33:04 +01:00
Lenny222
e12b169247 implement str::is_whitespace using char::is_whitespace 2012-01-04 09:32:59 +01:00
Tim Chevalier
439e28b751 Add missing ty_constr cases to trans::type_of_inner and ty::fold_ty.
Closes #970
2012-01-03 15:50:05 -08:00
Niko Matsakis
72a3667eb3 Allow tail expressions even in no_value blocks. Type checker
will guarantee they have unit type.
2012-01-03 13:13:52 -08:00
Niko Matsakis
43a9d50a74 new tests 2012-01-03 13:13:52 -08:00
Niko Matsakis
de383bcfed extend parser so that expressions that do not require semi-colons
to be statements are not considered expressions in the tail position
2012-01-03 13:13:51 -08:00
Niko Matsakis
9e1dc703d2 rewrite to put blk as 2nd arg 2012-01-03 13:13:51 -08:00
Niko Matsakis
e34abbacf6 minimal changes to permit fn blocks in expr 2012-01-03 13:13:51 -08:00
Brian Anderson
513a263e81 Merge pull request #1392 from Lenny222/list
list: add "is_not_empty" requirement to "head" and "tail" (analogous to "vec")
2012-01-03 12:18:53 -08:00
Marijn Haverbeke
4e88d5ae92 Make resolution of dictionaries on bounded params work
Issue #1227
2012-01-03 16:37:41 +01:00
Marijn Haverbeke
5ea3c96938 Wire in resolution of param bounds for method calls
Issue #1227
2012-01-03 16:18:40 +01:00
Marijn Haverbeke
506a6ec38b Make syntax for impls less magical
The trick of interpreting parameters to the iface type as parameters
to the impl was just too magical.

Issue #1227
2012-01-03 15:37:41 +01:00
Marijn Haverbeke
e1dc40b271 More work on translating dictionary-passing
Reached a point where simple uses of interfaces without bounds work.

Issue #1227
2012-01-03 15:36:57 +01:00
Brian Anderson
45b153adfe llvm: Revert unneeded debugging change 2012-01-02 12:18:23 -08:00
Marijn Haverbeke
b162f33396 Fix expected error messages for better printing of ty_ptr 2012-01-02 15:59:04 +01:00
Marijn Haverbeke
cdd806d324 Add a clause ty_ptr to ppaux::ty_to_str
Closes #1383
2012-01-02 15:42:13 +01:00
Marijn Haverbeke
15be2fc73a Add 'copy' bounds to functions that were faultily accepted without
Issue #1390
2012-01-02 15:31:58 +01:00
Marijn Haverbeke
8c14943dea Properly handle expression blocks in kind.rs
It was only noticing them in expr_block form, not as function
bodies.

Closes #1390
2012-01-02 15:23:11 +01:00
Lenny222
86279e8693 typo 2012-01-02 15:16:15 +01:00
Marijn Haverbeke
1741ef75ac Write out vtables for interface implementations
Issue #1227
2012-01-02 15:15:28 +01:00
Marijn Haverbeke
371b61a23d Drop two useless sub-passes from trans
Neither collect_tag_ctors nor the second pass in collect_items needed
to be separate passes.

Also remove obsolete obj_methods table kludge.
2012-01-02 15:15:28 +01:00
Marijn Haverbeke
a4694ce146 Create a trans_impl module 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
3a1710d21e Key tcx.ty_param_bounds on node_ids, not def_ids
This makes it clearer that it's only valid for local nodes.
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
9f2369dc9f Box arrays of parameter bounds 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
270b4273e7 Pass bounds to trans::type_of_fn 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
664a0443ad More resolving and typechecking of bounded type parameters.
Extern interfaces still don't get recognized.

Issue #1227
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
40d5f288c3 Check that type parameter bounds are interface types
Issue #1227
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
bd6646e698 Make last-use pass properly handle closed-over variables
Closes #1399
2012-01-02 10:20:58 +01:00
Brian Anderson
1c125d8829 llvm: Upgrade LLVM with FreeBSD segmented stack support 2012-01-01 20:26:34 -08:00
Jyun-Yan You
4566578fbd link with gcc44+ 2012-01-01 20:18:55 -08:00
Jyun-Yan You
274fc1b59c fix link error 2012-01-01 20:18:55 -08:00
Jyun-Yan You
21eadbe6f1 add missing library, enable segmented stacks for freebsd 2012-01-01 20:18:55 -08:00