Commit Graph

3570 Commits

Author SHA1 Message Date
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
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
Brian Anderson
c2c497ff53 rustc: Configure out #[test] functions when not testing 2012-01-05 17:31:57 -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
e1a0d0f03d fix pretty printer to correctly insert parens for disamb 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
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
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
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
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
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
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
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
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
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
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
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
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