Commit graph

65101 commits

Author SHA1 Message Date
Felix S. Klock II
23ab50455f Allocator integration in RawVec.
Includes methods exposing underlying allocator and the dellocation
routine.

Includes test illustrating a tiny `Alloc` that just bounds the total
bytes allocated.

Alpha-renamed `Allocator` to `Alloc` (and `HeapAllocator` to `HeapAlloc`).
2017-06-15 23:48:30 +02:00
Felix S. Klock II
65d02b26c5 Add impl of Alloc for the global rust heap.
Alpha-renamed `HeapAllocator` to `HeapAlloc`.

`<HeapAlloc as Alloc>::alloc_zeroed` is hooked up to `heap::allocate_zeroed`.

`HeapAlloc::realloc` falls back on alloc+copy+realloc on align mismatch.
2017-06-15 23:48:30 +02:00
Felix S. Klock II
1d3bc4e90f Changed Layout::from_size_align to return Option.
Added `unwrap` calls in all the places where I can infer that the
conditions are met to avoid panic (or when the calling method itself
says it will panic in such a case).
2017-06-15 23:48:30 +02:00
Felix S. Klock II
066fafe206 Add API for Alloc trait.
Includes `alloc_zeroed` method that `RawVec` has come to depend on.

Exposed private `Layout::from_size_align` ctor to be `pub`, and added
explicit conditions for when it will panic (namely, when `align` is
not power-of-two, or if rounding up `size` to a multiple of `align`
overflows). Normalized all `Layout` construction to go through
`Layout::from_size_align`.

Addressed review feedback regarding `struct Layout` and zero-sized
layouts.

Restrict specification for `dealloc`, adding additional constraint
that the given alignment has to match that used to allocate the block.
(This is a maximally conservative constraint on the alignment. An open
question to resolve (before stabilization) is whether we can return to
a looser constraint such as the one previously specified.)

Split `fn realloc_in_place` into separate `fn grow_in_place` and `fn
shrink_in_place` methods, which have default impls that check against
usable_size for reuse. Make `realloc` default impl try `grow_in_place`
or `shrink_in_place` as appropriate before fallback on
alloc+copy+dealloc.

Drive-by: When reviewing calls to `padding_needed_for`, discovered
what I think was an over-conservative choice for its argument
alignment.  Namely, in `fn extend`, we automatically realign the whole
resulting layout to satisfy both old (self) and new alignments. When
the old alignment exceeds the new, this means we would insert
unnecessary padding. So I changed the code to pass in `next.align`
instead of `new_align` to `padding_needed_for`.

Replaced ref to `realloc_in_place` with `grow_in_place`/`shrink_in_place`.

Revised docs replacing my idiosyncratic style of `fn foo` with just
`foo` when referring to the function or method `foo`.

(Alpha-renamed `Allocator` to `Alloc`.)

Post-rebased, added `Debug` derive for `allocator::Excess` to satisfy
`missing_debug_implementations`.
2017-06-15 23:48:12 +02:00
Stepan Koltsov
0c26b5998d Fix condvar.wait(distant future) return immediately on OSX
Fixes issue #37440: `pthread_cond_timedwait` on macOS Sierra seems
to overflow `ts_sec` parameter and returns immediately. To work
around this problem patch rounds timeout down to approximately 1000
years.

Patch also fixes overflow when converting `u64` to `time_t`.
2017-06-15 21:20:02 +01:00
Stepan Koltsov
ac96fd7787 Avoid allocations in Debug for os_str
Fixes #38879
2017-06-15 20:42:37 +01:00
Stepan Koltsov
ea149b8571 Utf8Lossy type with chunks iterator and impl Display and Debug 2017-06-15 20:42:35 +01:00
Esteban Küber
8074a88787 Position span label correctly when it isn't last 2017-06-15 11:21:19 -07:00
Simonas Kazlauskas
406eddf5e1 Add a no-system-llvm compilecheck header 2017-06-15 19:11:55 +03:00
Esteban Küber
ad260ffc88 Review comments
- generate error instead of warning
- remove `RewindPoint` and just keep a copy of `Parser` to rewind state.
- `dont_parse_generics: bool` -> `parse_generics: bool`
- remove `eat_lt`
- move error handling code to separate method
2017-06-15 08:45:24 -07:00
Alex Ozdemir
a82890e67b Clearer Error Message for Duplicate Definition
Clearer use of the error message and span labels to communicate
duplicaiton defitions/imports.

New error format:

```
error[E0428]: the name `Foo` is defined twice
 --> example.rs:2:1
  |
1 | trait Foo { }
  | ------------- previous definition of the trait `Foo` here
2 | struct Foo { }
  | ^^^^^^^^^^^^^^ `Foo` redefined here
  = note: `Foo` must be defined only once in the type namespace of this module

error: aborting due to previous error
```
2017-06-15 08:21:17 -07:00
bors
258ae6dd9b Auto merge of #42648 - murarth:merge-alloc-collections, r=alexcrichton
Merge crate `collections` into `alloc`

This is a necessary step in order to merge #42565
2017-06-15 12:37:54 +00:00
Guillaume Gomez
f720e972cf Add E0618 2017-06-15 14:00:58 +02:00
Ximin Luo
13b1a80505 Only run check-linkchecker when actually building docs
Otherwise the build fails, when running tests but not building docs, e.g.:
https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=ppc64el&ver=1.17.0%2Bdfsg2-3&stamp=1497403375&raw=0
2017-06-15 13:25:15 +02:00
Ximin Luo
62c245281c Ensure that disable-doc builds don't depend on doc targets 2017-06-15 13:24:08 +02:00
bors
16c27bf713 Auto merge of #42623 - VBChunguk:fix-older-urls, r=steveklabnik
Update older URLs pointing to the first edition of the Book

Fixes #42589.
2017-06-15 09:52:11 +00:00
Guillaume Gomez
b6e9ed1e40 Use new macro instead 2017-06-15 10:33:46 +02:00
bors
119066ff2b Auto merge of #42625 - michaelwoerister:dep-node-debug, r=nikomatsakis
incr.comp.: Make DepNode's std::fmt::Debug implementation useful again.

With #42537 a regular `DepNode` only contains an opaque hash as its identifier. In most cases, this hash is actually a `DefPathHash` and we can reconstruct the `DefId` it came from via a table lookup --- and then use that to print something intelligible for debug outputs. For cases where we cannot reconstruct information from the DepNode's hash, this PR will cache a string representation of the `DepNode` in a side-table. This string is later used for debug outputs.

r? @nikomatsakis
2017-06-15 06:52:42 +00:00
Taylor Cramer
c98ca953b0 Switch CrateNum queries to DefId 2017-06-14 22:49:07 -07:00
Esteban Küber
028b5f94e3 Report error for assignment in if condition
For code like `if x = 3 {}`, output:

```
error[E0308]: mismatched types
  --> $DIR/issue-17283.rs:25:8
   |
25 |     if x = x {
   |        ^^^^^
   |        |
   |        help: did you mean to compare equality? `x == x`
   |        expected bool, found ()
   |
   = note: expected type `bool`
              found type `()`
```
2017-06-14 22:09:32 -07:00
bors
0189cec5d4 Auto merge of #42665 - aidanhs:aphs-simplify-init-repos, r=Mark-Simulacrum
Use --depth to speed up pristine submodule cloning

In addition, remove all the unused cache stuff

r? @Mark-Simulacrum
2017-06-15 02:17:07 +00:00
Wonwoo Choi
65288f4026 Remove struct_field_attributes from the Unstable Book 2017-06-15 11:16:54 +09:00
Aidan Hobson Sayers
d0c1e6480c Use --depth to speed up pristine submodule cloning
In addition, remove all the unused cache stuff
2017-06-15 00:31:39 +01:00
est31
130b67c296 Remove some more stubs 2017-06-15 01:02:52 +02:00
Mark Simulacrum
2619636a1a Correct note as to location of section. 2017-06-14 14:38:51 -06:00
Ariel Ben-Yehuda
7b9519a5d4 suppress trait errors that are implied by other errors
Instead of suppressing only trait errors that are "exact duplicates",
display only the "most high-level" error when there are multiple trait
errors with the same span that imply each-other.

e.g. when there are both `[closure]: Fn` and `[closure]: FnOnce`, omit
displaying the `[closure]: FnOnce` bound.
2017-06-14 23:33:47 +03:00
steveklabnik
15ace49d2e update book with redirect fixes
Fixes #42632
2017-06-14 15:48:43 -04:00
Simonas Kazlauskas
ba6cf1d80a Re-implement float min/max in rust
See #42423
2017-06-14 21:58:17 +03:00
Wonwoo Choi
79f173ad21 Remove struct_field_attributes feature gate 2017-06-15 02:24:05 +09:00
Wonwoo Choi
3cb7825986 Update older URLs pointing to the first edition of the Book
`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.
2017-06-15 00:04:00 +09:00
bors
554c685b0b Auto merge of #42523 - clarcharr:refactor_ops, r=brson
Refactor ops.rs

This refactors ops.rs into several different modules internally, as the file has gotten quite big. None of these modules are actually exported, but this should make maintaining it much easier. I've avoided the ambition of exporting the modules because they can more easily be rearranged after this commit goes through, even though it'd be cool to potentially export the modules in the future.

I've separated the creation of each file into a separate commit so that this is easier to read.

Redone version of #42269 with the movement of `RangeArgument` moved.
2017-06-14 11:17:31 +00:00
bors
dfa7e21e4e Auto merge of #42433 - marco-c:profiling, r=alexcrichton
Build instruction profiler runtime as part of compiler-rt

r? @alexcrichton

This is #38608 with some fixes.

Still missing:
- [x] testing with profiler enabled on some builders (on which ones? Should I add the option to some of the already existing configurations, or create a new configuration?);
- [x] enabling distribution (on which builders?);
- [x] documentation.
2017-06-14 08:46:14 +00:00
Taylor Cramer
48356987c1 On-demandify extern_crate 2017-06-14 00:13:35 -07:00
Taylor Cramer
b0f05d4bc5 On-demandify is_allocator and is_panic_runtime 2017-06-14 00:13:35 -07:00
Taylor Cramer
328c6c81bf on-demand dylib dependency formats 2017-06-14 00:13:33 -07:00
Taylor Cramer
532a08b947 Add CrateNum-taking ability to the provide macro 2017-06-14 00:12:59 -07:00
Murarth
eadda7665e Merge crate collections into alloc 2017-06-13 23:37:34 -07:00
Taylor Cramer
9f710530a7 On-demand is_const_fn 2017-06-13 23:10:59 -07:00
est31
e69f9088a3 Don't require that stubs exist for features in the unstable book
Also, remove stubs.
2017-06-14 04:59:28 +02:00
est31
c2d59067fb Autogenerate stubs and the summary of the unstable book 2017-06-14 04:59:27 +02:00
est31
d810898751 Librarify tidy
Convert tidy into a library so that the data it creates
can be used by external tools.
2017-06-14 04:59:07 +02:00
Havvy
edd3cd84fe Remove sometimes in std::io::Read doc
We use it immediately in the next sentence, and the word is filler.
2017-06-13 18:49:34 -07:00
bors
e40ef964fe Auto merge of #42644 - frewsxcv:rollup, r=frewsxcv
Rollup of 6 pull requests

- Successful merges: #42408, #42428, #42496, #42597, #42636, #42638
- Failed merges: #42612
2017-06-14 00:40:10 +00:00
Nick Cameron
9a471606c0 Remove CSV format of save-analysis data 2017-06-14 10:45:59 +12:00
Marco A L Barbosa
9da77b3ec5 Disable wasm32 image 2017-06-13 19:14:15 -03:00
Corey Farwell
9242f22666 Rollup merge of #42638 - arthurpaimarnold:lexer_rule_for_octal, r=petrochenkov
Possible mistake in lexer rule for octal integer

Original rule allowed for digits 0-8, but octal is 0-7.

The compiler correctly prevents you from placing an 8 in an octal, so I'm assuming this is caught on a later stage. Still, shouldn't the lexer already catch this?
2017-06-13 17:15:04 -04:00
Corey Farwell
d60b291c8f Rollup merge of #42636 - GuillaumeGomez:new-error-codes-next2, r=eddyb
Add E0617

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus
2017-06-13 17:15:03 -04:00
Corey Farwell
664ab45796 Rollup merge of #42597 - mark-buer:park_timeout_example_fix, r=alexcrichton
Capture elapsed duration in Thread::park_timeout example

`beginning_park.elapsed()` might return a larger value within the loop as compared to that checked in the loop conditional.
Since `Duration` arithmetic is checked, hitting such an edge case will cause a panic.
2017-06-13 17:15:02 -04:00
Corey Farwell
7463cf5faf Rollup merge of #42496 - Razaekel:feature/integer_max-min, r=BurntSushi
Add max and min to Ord

Pursuant to issue #25663, this PR adds max and min methods with default implementations to std::cmp::Ord. It also modifies std::cmp::max|min to internally alias to Ord::max|min, so that any overrides of the default implementations are automatically used by std::cmp::max|min.

Closes #25663
2017-06-13 17:15:00 -04:00
Corey Farwell
78d5d37235 Rollup merge of #42428 - scottmcm:str-get-overflow, r=sfackler
Add overflow checking for `str::get` with inclusive ranges

Fixes https://github.com/rust-lang/rust/issues/42401

Two commits here:

1. The first makes `str::index` just call `SliceIndex<str>::index`.  It's intended to have no behavior change, except where the two methods were inconsistent.
2. The second actually adds the overflow checking to `get(_mut)` (and tests for it)
2017-06-13 17:14:59 -04:00