Jakub Wieczorek
fd52224e78
Remove dead code from librustc
2014-09-24 21:03:55 +02:00
Patrick Walton
78a841810e
librustc: Implement associated types behind a feature gate.
...
The implementation essentially desugars during type collection and AST
type conversion time into the parameter scheme we have now. Only fully
qualified names--e.g. `<T as Foo>::Bar`--are supported.
2014-09-17 16:38:57 -07:00
Aaron Turon
fc525eeb4e
Fallout from renaming
2014-09-16 14:37:48 -07:00
Aaron Turon
d8dfe1957b
Align with _mut conventions
...
As per [RFC
52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md ),
use `_mut` suffixes to mark mutable variants, and `into_iter` for moving
iterators.
[breaking-change]
2014-09-16 11:46:52 -07:00
Niko Matsakis
088c94ae96
trans -- stop tracking vtables precisely, instead recompute as needed.
2014-09-15 15:28:12 -04:00
Niko Matsakis
c5754f3971
Guts of the new trait matching algorithm, not yet in use
2014-09-15 14:58:49 -04:00
Eduard Burtescu
28be695b2c
rustc: fix fallout from the addition of a 'tcx lifetime on tcx.
2014-09-08 15:28:23 +03:00
Niko Matsakis
1b487a8906
Implement generalized object and type parameter bounds ( Fixes #16462 )
2014-08-27 21:46:52 -04:00
Nick Cameron
52ef46251e
Rebasing changes
2014-08-26 16:07:32 +12:00
Luqman Aden
bd15854114
librustc: Don't ICE when trying to subst regions in destructor call.
2014-07-31 11:50:24 -07:00
Patrick Walton
02adaca4dc
librustc: Implement unboxed closures with mutable receivers
2014-07-18 09:01:37 -07:00
Ben Gamari
c6c1a22c56
middle::subst: Better handling of parameter lookup failure
2014-07-15 19:34:41 -04:00
Ben Gamari
bdf5b6c3da
middle: Derive Show impls
...
And change some uses of the `{:?}` format string to `{}`.
2014-07-15 18:54:47 -04:00
Felix S. Klock II
4459fe3e5e
Revise VecPerParamSpace
to use a one Vec rather than three.
...
In my informal measurements, this brings the peak memory usage when
building librustc from 1662M down to 1502M. Since 1662 - 1502 = 160,
this may not recover the entirety of the observed memory regression
(250M) from PR #14604 . (However, according to my local measurements,
the regression when building librustc was more like 209M, so perhaps
this will still recover the lions share of the lost memory.)
2014-07-05 06:29:27 +02:00
Felix S. Klock II
952dded81a
Refactored VecPerParamSpace to hide exposure of Vec
representation.
...
This basically meant changing the interface so that no borrowed `&Vec`
is exposed, by hiding `fn get_vec` and `fn get_mut_vec` and revising
`fn all_vecs`.
Instead, clients should use one of the other methods; `get_slice`,
`pop`, `truncate`, `replace`, `push_all`, or `is_empty_in`, which
should work for any case currently used in rustc.
2014-07-05 06:29:06 +02:00
Alex Crichton
0dfc90ab15
Rename all raw pointers as necessary
2014-06-28 11:53:58 -07:00
Niko Matsakis
9153d8ad6c
Introduce VecPerParamSpace and use it to represent sets of types and
...
parameters
This involves numerous substeps:
1. Treat Self same as any other parameter.
2. No longer compute offsets for method parameters.
3. Store all generic types (both trait/impl and method) with a method,
eliminating odd discrepancies.
4. Stop doing unspeakable things to static methods and instead just use
the natural types, now that we can easily add the type parameters from
trait into the method's polytype.
5. No doubt some more. It was hard to separate these into distinct commits.
Fixes #13564
2014-06-13 13:20:24 -04:00
Niko Matsakis
bc5eb7d98c
Stop passing around Option<&substs> in trans and just pass &substs, making the code more regular
2014-06-06 19:51:23 -04:00
Niko Matsakis
0f03b5608c
Move Def out of syntax crate, where it does not belong
2014-06-06 19:51:23 -04:00
Niko Matsakis
f24a53757e
Move subst data structures into subst.rs, fix capitalization
2014-06-06 19:46:38 -04:00
Richo Healey
1f1b2e42d7
std: Rename strbuf operations to string
...
[breaking-change]
2014-05-27 12:59:31 -07:00
Patrick Walton
36195eb91f
libstd: Remove ~str
from all libstd
modules except fmt
and str
.
2014-05-22 14:42:01 -07:00
Niko Matsakis
7d6f1aa2ac
Factor out foldable better to reduce code duplication. There is now a "double
...
dispatch" pattern that lets you easily write new folders and then apply them to
various structures, reusing the "folding" effort.
2014-05-12 17:46:26 -04:00
Niko Matsakis
ed7c849057
Currently trans uses Vec<ty::t> to represent substitutions instead of a proper
...
ty::substs struct. This is a holdover from the olden days of yore. This patch
removes the last vestiges of that practice. This is part of the work
I was doing on #5527 .
2014-05-09 05:56:44 -04:00
Joseph Crail
809f13ea94
Fix misspellings in comments.
2014-04-21 00:49:39 -04:00
Richo Healey
919889a1d6
Replace all ~"" with "".to_owned()
2014-04-18 17:25:34 -07:00
Kevin Butler
52a53e8ae7
Change error for out of scope type params to be more helpful.
2014-04-17 18:24:52 +01:00
Marvin Löbel
c356e3ba6a
Removed deprecated functions map
and flat_map
for vectors and slices.
2014-03-30 03:47:04 +02:00
Alex Crichton
3fb1ed0e04
rustc: Remove all usage of manual deref()
...
Favor using '*' instead
2014-03-22 08:48:34 -07:00
Huon Wilson
e33676b793
Migrate all users of opt_vec to owned_slice, delete opt_vec.
...
syntax::opt_vec is now entirely unused, and so can go.
2014-03-22 09:54:18 +11:00
Alex Crichton
da3625161d
Removing imports of std::vec_ng::Vec
...
It's now in the prelude.
2014-03-20 09:30:14 -07:00
Daniel Micay
14f656d1a7
rename std::vec_ng -> std::vec
...
Closes #12771
2014-03-20 04:25:32 -04:00
Eduard Burtescu
9b1fee898f
De-@ ty::ctxt usage.
2014-03-17 09:53:06 +02:00
Eduard Burtescu
cdc18b96d6
Remove Rc's borrow method to avoid conflicts with RefCell's borrow in Rc<RefCell<T>>.
2014-03-13 14:21:45 +02:00
Felix S. Klock II
742e458102
Add proper support for early/late distinction for lifetime bindings.
...
Uses newly added Vec::partition method to simplify resolve_lifetime.
2014-03-12 08:05:28 +01:00
Felix S. Klock II
43c07244b3
librustc: Fix up fallout from the automatic conversion.
2014-03-08 21:41:32 +01:00
Patrick Walton
3b6e9d4a7a
librustc: Automatically change uses of ~[T]
to Vec<T>
in rustc.
2014-03-08 21:24:27 +01:00
Eduard Burtescu
fdf985cd14
Substitute type params in default type params using them.
2014-02-02 12:54:22 +02:00
Huon Wilson
f8734df515
rustc: remove use of @[].
2014-02-02 02:59:03 +11:00
Eduard Burtescu
7d967741c3
Implement default type parameters in generics.
2014-01-30 19:28:41 +02:00
Patrick Walton
119c6141f5
librustc: Remove @
pointer patterns from the language
2014-01-13 14:45:21 -08:00
Erik Price
5731ca3078
Make 'self lifetime illegal.
...
Also remove all instances of 'self within the codebase.
This fixes #10889 .
2013-12-11 10:54:06 -08:00
Niko Matsakis
195f1d77bd
Rename and modernize region enum names
2013-11-08 19:47:57 -05:00
Niko Matsakis
1f4faaee40
Generalize AST and ty::Generics to accept multiple lifetimes.
2013-11-08 19:42:46 -05:00
Niko Matsakis
85c51d3b02
Introduce ty_fold mechanism and port our various folders to use
...
it. This should eventually be merged with the Subst trait.
2013-11-08 17:22:38 -05:00
Daniel Micay
6a90e80b62
option: rewrite the API to use composition
2013-10-09 09:17:29 -04:00
Alex Crichton
1b80558be3
rustc: Remove usage of fmt!
2013-09-30 23:21:19 -07:00
Niko Matsakis
dc38e1616a
Generalize the ty::substs
struct so that it can represent
...
multiple lifetime parameters, and not just one. Also add an option
for erasing lifetimes, which makes trans code somewhat simpler
and cleaner.
2013-07-24 16:52:57 -04:00
Patrick Walton
9089cf2ec9
librustc: Forbid &
pointers (other than &'static
) inside @
boxes.
...
This makes custom borrowing implementations for custom smart pointers
sound.
2013-07-18 17:12:46 -07:00
Niko Matsakis
4412df20ae
Add an identifier to TypeParameterDefs and use it to pretty print type parameters
2013-07-10 14:42:53 -04:00