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
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
6e1f9ad1f1
rustc: Don't allow empty link_name when nolink attribute is present
...
Closes #1326
2012-01-11 19:45:18 -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
c00ec5f9c9
build: Build libraries in the bin directory on win32
2012-01-11 13:57:11 -08: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
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
Marijn Haverbeke
f2352f4062
Fix regression in resolving of external impls
2012-01-11 17:12:11 +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
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
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
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
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
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
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
Marijn Haverbeke
9fa7491676
Don't resolve upvars in fn() { ... } exprs
...
Closes #1467
2012-01-09 11:32:18 +01: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
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
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
Niko Matsakis
1e674ffe43
choose a new arbitrary value
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
98f5109cde
simplify task impl
2012-01-06 22:40:31 -08:00
Brian Anderson
396a8bd4e5
rustc: Use std::homedir to locate /home/banderson
...
Issue #1359
2012-01-06 16:38:29 -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
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
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