Jake Goulding
bffd802a3f
Fix small typos in std::rand documentation
2014-12-20 17:13:13 -05:00
bors
1c2df5cc3c
auto merge of #19640 : aliblong/rust/power_of_two_reform, r=Gankro
...
The `is_power_of_two()` method of the `UnsignedInt` trait currently returns `true` for `self == 0`. Zero is not a power of two, assuming an integral exponent `k >= 0`. I've therefore moved this functionality to the new method `is_power_of_two_or_zero()` and reformed `is_power_of_two()` to return false for `self == 0`.
To illustrate the usefulness of the existence of both functions, consider `HashMap`. Its capacity must be zero or a power of two; conversely, it also requires a (non-zero) power of two for key and val alignment.
Also, added a small amount of documentation regarding #18604 .
2014-12-20 01:12:19 +00:00
Aaron Liblong
f6328b60da
Reform power_of_two methods for perf increase & semantic change to consider 0 not a power of 2.
...
Vec panics when attempting to reserve capacity > int::MAX (uint::MAX / 2).
2014-12-19 18:21:24 -05:00
bors
cbe9fb45bc
auto merge of #19463 : kali/rust/master, r=alexcrichton
...
parse_ty() no longer takes a boolean parameter. quote_ty! implementation has not yet been modified accordingly.
As a matter of fact, quote_ty! was not covered by tests. One test (called qquotes) references it, but it has been ignored for nearly one year and now need heavy refactoring.
quote_token.rs seemed like a good place to test quote_ty!, many other quote_*! macros were asserted there.
2014-12-19 20:22:17 +00:00
bors
95c2ed31ae
auto merge of #19867 : japaric/rust/deriving-copy, r=acrichto
...
r? @alexcrichton
2014-12-19 16:02:31 +00:00
Jorge Aparicio
f975b10310
windows: remove unused import
2014-12-19 10:51:01 -05:00
Jorge Aparicio
4c6e76b7c8
libtime: use #[deriving(Copy)]
2014-12-19 10:51:01 -05:00
Jorge Aparicio
ce92437769
libtest: use #[deriving(Copy)]
2014-12-19 10:51:01 -05:00
Jorge Aparicio
64234b3541
libterm: use #[deriving(Copy)]
2014-12-19 10:51:01 -05:00
Jorge Aparicio
86f8c127dd
libsyntax: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
a77e8a63d5
libstd: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
2df30a47e2
libserialize: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
1d25271e05
librustrt: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
4c007568bf
librustdoc: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
fa0383f38d
librustc_typeck: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
5e2bca9e86
librustc_trans: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
463475b7fa
librustc_llvm: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
db45be2616
librustc_driver: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
392ea799b8
librustc_borrowck: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
e64a0072d6
librustc: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Jorge Aparicio
f2ef2cda52
libregex: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
fd4a5d9ef1
librbml: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
a18d090c3c
librand: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
e0a88a78da
liblog: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
c407785ac0
libgetopts: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
4c62c76ef9
libfmt_macros: use #[deriving(Copy)]
2014-12-19 10:43:24 -05:00
Jorge Aparicio
30cefcbdfd
libcore: use #[deriving(Copy)]
2014-12-19 10:43:23 -05:00
Jorge Aparicio
c32a48293a
libcollections: use #[deriving(Copy)]
2014-12-19 10:43:23 -05:00
Mathieu Poumeyrol
8920181052
ack parser.parse_ty change in quote_ty! (+ test)
2014-12-19 15:25:02 +01:00
bors
bd90b936d7
auto merge of #19884 : nikomatsakis/rust/issue-19730-perfect-forwarding, r=pnkfelix
...
Rewrite how the HRTB algorithm matches impls against obligations. Instead of impls providing higher-ranked trait-references, impls now once again only have early-bound regions. The skolemization checks are thus moved out into trait matching itself. This allows to implement "perfect forwarding" impls like those described in #19730 . This PR builds on a previous PR that was already reviewed by @pnkfelix.
r? @pnkfelix
Fixes #19730
2014-12-19 13:22:10 +00:00
Niko Matsakis
ebf1e4f23a
Three random test cases that seem to produce more errors now. I've
...
not dug deeply into what is going on here, although the errors ARE
somewhat surprising.
2014-12-19 03:29:59 -05:00
Niko Matsakis
a04ce71172
Modify the Bytes
type so that it remains cloneable even
...
though it includes a `fn()`. This is really a more general
problem but I wanted to ensures that `bytes` in particular
remains working due to #12677 .
2014-12-19 03:29:59 -05:00
Niko Matsakis
89922e52b0
Correct comment on Binder.
2014-12-19 03:29:59 -05:00
Niko Matsakis
1085012cd2
Kill some warnings about shadowed lifetimes
2014-12-19 03:29:59 -05:00
Niko Matsakis
d4f8a5abc5
Work around #19982 by rewriting test impls to not use anonymous
...
lifetimes. This currently causes an ICE; it should (ideally) work, but
failing that at least give a structured error. For the purposes of
this PR, though, workaround is fine.
2014-12-19 03:29:59 -05:00
Niko Matsakis
aa20e2ff36
Document new algorithm at a high-level.
2014-12-19 03:29:31 -05:00
Niko Matsakis
0b88c5d392
Remove text on method matching, which is now out of date.
2014-12-19 03:29:31 -05:00
Niko Matsakis
dab6e70e03
Convert gigantic comment away from //!
form. It is annoying to
...
read (`//!` is intrusive) and annoying to edit (must maintain a prefix
on every line). Since the only purpose of a `doc.rs` file is to have a
bunch of text, using `/*!` and `*/` without indentations seems
appropriate.
2014-12-19 03:29:31 -05:00
Niko Matsakis
f45c0ef51e
Implement "perfect forwarding" for HR impls ( #19730 ).
2014-12-19 03:29:31 -05:00
Niko Matsakis
c2ca1a4b62
Make all predicates higher-ranked, not just trait references.
2014-12-19 03:29:30 -05:00
Niko Matsakis
4f34524fcb
Move leak_check
into its own method, and ensure that all higher-ranked code is in
...
`higher_ranked.rs`.
2014-12-19 03:29:30 -05:00
Niko Matsakis
1205fd88df
Centralize on using Binder
to introduce new binding levels, rather than having FnSig carry an implicit binding level. This means that we be more typesafe in general, since things that instantiate bound regions can drop the Binder to reflect that.
2014-12-19 03:29:30 -05:00
Niko Matsakis
ed4952ef39
Add (currently unused) helper routine for skolemizing bound regions.
2014-12-19 03:29:30 -05:00
Niko Matsakis
416e62924e
Rename the code that replaces unbound variables to "freshen" rather than "skolemize" -- strictly speaking, this is not skolemization, because it is not discharging quantifiers. Also, the trait selection code will still be doing true skolemization, so it would be a confusing overlap of names.
2014-12-19 03:29:30 -05:00
Niko Matsakis
3cf0fbeee9
Create distinct types for a PolyTraitRef (with bindings) and a normal TraitRef.
2014-12-19 03:29:30 -05:00
Niko Matsakis
b3dcb85404
Fix a bug in the opt-in-copy work: it was failing to liberate the regions bound in the impl before searching for Copy
implements for all fields, leading to problems in the "copyability check". Basically the copyability check would wind up looking for an impl of for<'tcx> Foo<&'tcx T>
. The impl that exists however is impl<T> Copy for Foo<T>
and the current rules do not consider that a match (something I would like to revise in a later PR).
2014-12-19 03:29:30 -05:00
Niko Matsakis
1b24602ca0
Extract leak check into a distinct subroutine.
2014-12-19 03:29:30 -05:00
Niko Matsakis
885f7ee12e
Extract skolemize_regions() helper function.
2014-12-19 03:29:30 -05:00
Niko Matsakis
ff35eeb80a
Recycle skolemization counts and add some comments.
2014-12-19 03:29:29 -05:00
Niko Matsakis
7be059ffcd
Propagate expected type more widely so that we can rewrite the
...
issue-14039 test in a more natural way. Previously the "type we will
cast to" was hidden unless it was an integer.
2014-12-19 03:29:29 -05:00