Commit Graph

78535 Commits

Author SHA1 Message Date
kennytm
55792a45a0
Rollup merge of #50634 - tbu-:pr_preadwrite_emscripten, r=kennytm
Do not silently truncate offsets for `read_at`/`write_at` on emscripten

Generate an IO error if the offset is out of bounds for the system call.
2018-05-13 16:15:42 +08:00
kennytm
e0b7f42b59
Rollup merge of #50624 - adevore:fs-write-str-example, r=steveklabnik
fs::write: Add example writing a &str

This adds an example to the documentation for `fs::write` that demonstrates the use of the `AsRef<[u8]>` implementation for &str. Experienced users should already recognize the possibility from the type signature, but new users may not recognize the significance.
2018-05-13 16:15:41 +08:00
Nicholas Nethercote
548067e00f Remove StringReader::terminator.
It's silly for a hot function like `bump()` to have such an expensive
bounds check. This patch replaces terminator with `end_src_index`.

Note that the `self.terminator` check in `is_eof()` wasn't necessary
because of the way `StringReader` is initialized.
2018-05-13 17:16:03 +10:00
Nicholas Nethercote
7a090fbe02 Rename some stuff in StringReader.
- `source_text` becomes `src`, matching `FileMap::src`.

- `byte_offset()` becomes `src_index()`, which makes it clearer that
  it's an index into `src`. (Likewise for variables containing
  `byte_offset` in their name.) This function also now returns a `usize`
  instead of a `BytePos`, because every callsite immediately converted
  the `BytePos` to a `usize`.
2018-05-13 17:16:03 +10:00
Nicholas Nethercote
b1aae607c5 Tweak naming and ordering in StringReader::bump().
This patch removes the "old"/"new" names in favour of "foo"/"next_foo",
which matches the field names.

It also moves the setting of `self.{ch,pos,next_pos}` in the common case
to the end, so that the meaning of "foo"/"next_foo" is consistent until
the end.
2018-05-13 17:16:02 +10:00
Nicholas Nethercote
4465b2fbf3 Inline char_at() and record_width.
Because `bump()` is hot.
2018-05-13 17:16:02 +10:00
bors
f9ae5bc1c5 Auto merge of #50622 - eddyb:make-room-for-ghosts, r=nikomatsakis
rustc: leave space for fields of uninhabited types to allow partial initialization.

Fixes #49298 by only collapsing uninhabited enum variants, and only if they only have ZST fields.
Fixes #50442 incidentally (@nox's optimization didn't take into account uninhabited variants).
2018-05-13 06:04:54 +00:00
Sébastien Marie
e0567158dd update libcompiler_builtins
let's OpenBSD to use libcompiler_rt.a from system library. it unbreaks
the build from source on OpenBSD.
2018-05-13 07:14:36 +02:00
bors
6fc409ed09 Auto merge of #50573 - oli-obk:tool_sanity, r=kennytm
Don't require clippy/miri for beta

r? @kennytm

cc @alexcrichton

I'm trying this out locally atm to see if it works as I think it should. Not sure how to test it for real except wait for the next beta.

fixes #50557
2018-05-13 03:44:00 +00:00
bors
844bc65333 Auto merge of #50235 - Zoxc:rayon, r=michaelwoerister
Add a Rayon thread pool

r? @michaelwoerister
2018-05-13 01:18:45 +00:00
John Kåre Alsaker
4afdae633d Update Cargo.lock 2018-05-13 01:28:20 +02:00
John Kåre Alsaker
28a11825de Add parallel abstractions 2018-05-13 01:28:20 +02:00
John Kåre Alsaker
022dff47e3 Add a Rayon thread pool 2018-05-13 01:28:20 +02:00
John Kåre Alsaker
3df199680a Add Sync bounds to the crate store 2018-05-13 01:28:20 +02:00
John Kåre Alsaker
6968f4c8a3 Fix impl PartialOrd for InternedString 2018-05-13 01:28:20 +02:00
bors
6fb34bdfc6 Auto merge of #50536 - leodasvacas:report-fullfilment-errors-in-copy-derive, r=estebank
Better error reporting in Copy derive

In Copy derive, report all fulfillment erros when present and do not report errors for types tainted with `TyErr`. Also report all fields which are not Copy rather than just the first.

Also refactored `fn fully_normalize`, removing the not very useful helper function along with a FIXME to the closed issue #26721 that looks out of context now.

Fixes #50480

r? @estebank
2018-05-12 22:48:16 +00:00
Guillaume Gomez
f0db2cf14e Use fullpath instead of recreating it 2018-05-12 23:44:40 +02:00
leonardo.yvens
56bc4c2490 Fix self referential impl Trait substitutions
A high impact bug because a lot of common traits use a `Self`
substitution by default. Should be backported to beta.

There was a check for this which wasn't catching all cases, it was made
more robust.

Fixes #49376
Fixes #50626

r? @petrochenkov
2018-05-12 16:43:42 -03:00
bors
ff2ac35db9 Auto merge of #50686 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 13 pull requests

Successful merges:

 - #50544 (Cleanup some dependencies)
 - #50545 (Made some functions in time module const)
 - #50550 (use fmt::Result where applicable)
 - #50558 (Remove all reference to DepGraph::work_products)
 - #50602 (Update canonicalize docs)
 - #50607 (Allocate Symbol strings from an arena)
 - #50613 (Migrate the toolstate update bot to rust-highfive)
 - #50624 (fs::write: Add example writing a &str)
 - #50634 (Do not silently truncate offsets for `read_at`/`write_at` on emscripten)
 - #50644 (AppVeyor: Read back trace from crash dump on failure.)
 - #50661 (Ignore non .rs files for tidy libcoretest)
 - #50663 (rustc: Allow an edition's feature on that edition)
 - #50667 (rustc: Only suggest deleting `extern crate` if it works)

Failed merges:
2018-05-12 18:45:00 +00:00
leonardo.yvens
6389f35ef9 Fix rebase 2018-05-12 15:07:15 -03:00
Oliver Middleton
3daded02fa rustdoc: Add support for pub(restricted) 2018-05-12 18:25:09 +01:00
leonardo.yvens
3deb75729e Merge all "Copy not implemented" errors 2018-05-12 14:24:02 -03:00
leonardo.yvens
804bcf7716 Better error reporting in Copy derive
In Copy derive, report all fulfillment erros when present and do not
report errors for types tainted with `TyErr`. Also report all fields
which are not Copy rather than just the first.

Also refactored `fn fully_normalize`, removing the not very useful
helper function along with a FIXME to the closed issue #26721 that's
looks out of context now.
2018-05-12 14:24:01 -03:00
Guillaume Gomez
f2bc09e68b Fix invalid deduplication 2018-05-12 19:16:37 +02:00
Guillaume Gomez
8fab482a68 Fix items counts in search results 2018-05-12 19:16:37 +02:00
Guillaume Gomez
6a4bdda87b Reduce js files size 2018-05-12 19:16:37 +02:00
Guillaume Gomez
72b7c8d291 Remove extra span tags 2018-05-12 19:16:37 +02:00
Guillaume Gomez
9483e9b564 Handle blur on theme buttons nicely 2018-05-12 19:16:37 +02:00
Guillaume Gomez
8c80124fef Add missing description in alias items 2018-05-12 19:16:37 +02:00
Guillaume Gomez
e81b59bba8 Improve alias rendering 2018-05-12 19:16:37 +02:00
Guillaume Gomez
cf9209f872 Improve results 2018-05-12 19:16:37 +02:00
Guillaume Gomez
e2db0a5630 Update js tester tool 2018-05-12 19:15:07 +02:00
Guillaume Gomez
4b14573d50 Add minification process 2018-05-12 19:15:06 +02:00
bors
c0cea750a0 Auto merge of #50684 - nikic:prepare-thinlto, r=nagisa
Set PrepareForThinLTO flag when using ThinLTO

The LLVM PassManager has a PrepareForThinLTO flag, which is intended for use when compilation occurs in conjunction with linking by ThinLTO. The flag has two effects:

 * The NameAnonGlobal pass is run after all other passes, which ensures that all globals have a name.
 * In optimized builds, a number of late passes (mainly related to vectorization and unrolling) are disabled, on the rationale that these a) will increase codesize of the intermediate artifacts and b) will be run by ThinLTO again anyway.

This patch enables the use of PrepareForThinLTO if Thin or ThinLocal linking is used.

The background for this change is the CI failure in #49479, which we assume to be caused by the NameAnonGlobal pass not being run. As this changes which passes LLVM runs, this might have performance (or other) impact, so we want to land this separately.
2018-05-12 16:23:15 +00:00
Alex Crichton
da79ff3cc2 rustc: Only suggest deleting extern crate if it works
This commit updates one of the edition lints to only suggest deleting `extern
crate` if it actually works. Otherwise this can yield some confusing behavior
with rustfix specifically where if you accidentally deny the `rust_2018_idioms`
lint in the 2015 edition it's suggesting features that don't work!
2018-05-12 08:39:05 -06:00
Alex Crichton
2885632706 rustc: Allow an edition's feature on that edition
This commit fixes a hard error where the `#![feature(rust_2018_preview)]`
feature was forbidden to be mentioned when the `--edition 2018` flag was passed.
This instead silently accepts that feature gate despite it not being necessary.
It's intended that this will help ease the transition into the 2018 edition as
users will, for the time being, start off with the `rust_2018_preview` feature
and no longer immediately need to remove it.

Closes #50662
2018-05-12 08:39:05 -06:00
varkor
bd441779ff Display the name of the failed file in tidy/libcoretest 2018-05-12 08:39:05 -06:00
varkor
ae41d6c32f Ignore non .rs files for tidy libcoretest
Previously, any file would be read, which is both unnecessary, and causes issues if irrelevant non-Unicode files were read (e.g. `.DS_STORE`).
2018-05-12 08:39:05 -06:00
kennytm
9d690d40d0 AppVeyor: Dump crash log on failure. 2018-05-12 08:39:05 -06:00
Tobias Bucher
5d015e1366 Do not silently truncate offsets for read_at/write_at on emscripten
Generate an IO error if the offset is out of bounds for the system call.
2018-05-12 08:39:05 -06:00
Aaron DeVore
bf6804b79c fs::write: Add example writing a &str 2018-05-12 08:39:05 -06:00
Oliver Schneider
1788af357a
Make the const_err lint deny-by-default 2018-05-12 16:21:02 +02:00
Mark Simulacrum
575ac946bc
Rollup merge of #50607 - Zoxc:symbol-arena, r=michaelwoerister
Allocate Symbol strings from an arena

This is an alternative to https://github.com/rust-lang/rust/pull/50549

cc @nnethercote

r? @michaelwoerister
2018-05-12 07:32:30 -06:00
Mark Simulacrum
bf832c2a89
Rollup merge of #50602 - Screwtapello:update-canonicalize-docs, r=cramertj
Update canonicalize docs

I was recently working with file-paths in Rust, and I felt let down by the `std::fs::canonicalize` docs, so I figured I should submit a PR with some suggestions.

I was looking for a method to turn a relative path into an absolute path. The `canonicalize` docs didn't mention the words "relative" or "absolute", but they did mention resolving symlinks (which is a kind of canonicalisation and does not imply converting to absolute), so I assumed that's all it did. To remedy this, I've added the word "absolute" to the description of both `std::fs::canonicalize` and `std::path::Path::canonicalize`.

After calling `canonicalize` on Windows, I ran into a bunch of other problems I would not have expected from the function's behaviour on Linux. Specifically, if you call `canonicalize` on a path:

  - it's allowed to be much longer than it otherwise would
  - `.join("a/slash/delimited/path")` gives you a broken path that Windows can't use, where the same operation would have worked perfectly without `canonicalize` (if the path were short enough)
  - the resulting path may confuse other Windows programs if you pass it to them on the command-line, or write it to a config file that they read, etc.

...so I tried to summarize those behaviours too.

If I understand correctly, those behaviours are a side-effect of calling `GetFinalPathNameByHandle`, and the documentation says `canonicalize` might not call that function in future, so maybe those side-effects shouldn't be part of the function's documentation. However, I bet there's a lot of applications deliberately calling `canonicalize` just for the path-length-extension alone, so that particular side-effect is de-facto part of the `canonicalize` interface.
2018-05-12 07:32:29 -06:00
Mark Simulacrum
b9c9fac1a4
Rollup merge of #50558 - whitfin:issue-50500, r=michaelwoerister
Remove all reference to DepGraph::work_products

This is an attempt at fixing #50500. It will remove the `work_products` key from `DepGraphData` completely, in favour of just passing the relevant data around. I went in a little blindly; everything appears to work just fine but I'd appreciate any additional advice people.

I didn't want to remove too much of what was already there, so I kept the structure pretty much the same (aside from some naming tweaks) - if anyone has suggestions on how to streamline it a little better, happy to follow up.

r? @michaelwoerister
2018-05-12 07:32:28 -06:00
Mark Simulacrum
d7f5e1f5d1
Rollup merge of #50550 - llogiq:fmt-result, r=petrochenkov
use fmt::Result where applicable

This is a quite boring PR, but I think the type alias improves readability, so why not use it?
2018-05-12 07:32:27 -06:00
Mark Simulacrum
3603d241d8
Rollup merge of #50545 - rizakrko:const_time, r=oli-obk
Made some functions in time module const

They may be const, or i missed something?
2018-05-12 07:32:25 -06:00
Mark Simulacrum
60f9fc2d13
Rollup merge of #50544 - Eijebong:cleanup_deps, r=alexcrichton
Cleanup some dependencies
2018-05-12 07:32:24 -06:00
Nikita Popov
a70ef4cb49 Set PrepareForThinLTO flag when using ThinLTO
The LLVM PassManager has a PrepareForThinLTO flag, which is intended
when compilation occurs in conjunction with linking by ThinLTO. The
flag has two effects:

 * The NameAnonGlobal pass is run after all other passes, which
   ensures that all globals have a name.
 * In optimized builds, a number of late passes (mainly related to
   vectorization and unrolling) are disabled, on the rationale that
   these a) will increase codesize of the intermediate artifacts
   and b) will be run by ThinLTO again anyway.

This patch enables the use of PrepareForThinLTO if Thin or ThinLocal
linking is used.

The background for this change is the CI failure in #49479, which
we assume to be caused by the NameAnonGlobal pass not being run.
As this changes which passes LLVM runs, this might have performance
(or other) impact, so we want to land this separately.
2018-05-12 14:07:20 +02:00
bors
e6db79f2ca Auto merge of #50352 - porglezomp:btree-no-empty-alloc, r=Gankro
Don't allocate when creating an empty BTree

Following the discussion in #50266, this adds a static instance of `LeafNode` that empty BTrees point to, and then replaces it on `insert`, `append`, and `entry`. This avoids allocating for empty maps.

Fixes #50266

r? @Gankro
2018-05-12 09:42:11 +00:00