Commit Graph

80766 Commits

Author SHA1 Message Date
bors 68c39b9fec Auto merge of #52275 - alexcrichton:no-macro-use, r=nrc
rustc: Lint against `#[macro_use]` in 2018 idioms

This commit adds a lint to the compiler to warn against the `#[macro_use]`
directive as part of the `rust_2018_idioms` lint. This lint is turned off by
default and is only enabled when the `use_extern_macros` feature is also
enabled.

The lint here isn't fully fleshed out as it's just a simple warning rather than
suggestions of how to actually import the macro, but hopefully it's a good base
to start from!

cc #52043
2018-07-13 03:40:33 +00:00
Nicholas Nethercote f2b0b6700c Fix bitslice printing.
In multiple ways:

- Two calls to `bits_to_string()` passed in byte lengths rather than bit
  lengths, which meant only 1/8th of the `BitSlice` was printed.

- `bit_str`'s purpose is entirely mysterious. I removed it and changed
  its callers to print the indices in the obvious way.

- `bits_to_string`'s inner loop was totally wrong, such that it printed
  entirely bogus results.

- `bits_to_string` now also adds a '|' between words, which makes the
  output easier to read, e.g.:
  `[ff-ff-ff-ff-ff-ff-ff-ff|ff-ff-ff-ff-ff-ff-ff-07]`.
2018-07-13 13:05:22 +10:00
kennytm 6e0dd9ec03
Include is_empty() in PartialEq and Hash.
When the index is not PartialOrd, always treat the range as empty.
2018-07-13 09:53:37 +08:00
kennytm b6ea93e464
Upgrade implementation of StepBy<RangeInclusive<_>>. 2018-07-13 09:53:37 +08:00
kennytm d299f03e28
Fix some RangeInclusive test cases. 2018-07-13 09:53:37 +08:00
kennytm 0d7e9933d3
Change RangeInclusive to a three-field struct.
Fix #45222.
2018-07-13 09:53:36 +08:00
Nicholas Nethercote f0c67951d0 Make BitSlice's `Word` properly generic.
Currently `Word` is `usize`, and there are various places in the code
that assume this.

This patch mostly just changes `usize` occurrences to `Word`. Most of
the changes were found as compile errors when I changed `Word` to a type
other than `usize`, but there was one non-obvious case in
librustc_mir/dataflow/mod.rs that caused bounds check failures before I
fixed it.
2018-07-13 11:10:20 +10:00
bors e92e9ce0d8 Auto merge of #52046 - cramertj:fix-generator-mir, r=eddyb
Ensure StorageDead is created even if variable initialization fails

Rebase and slight cleanup of https://github.com/rust-lang/rust/pull/51109
Fixes https://github.com/rust-lang/rust/issues/49232

r? @eddyb
2018-07-13 00:38:17 +00:00
Nicholas Nethercote 05742ffb43 Inline and remove `DataflowAnalysis::num_bits_overall()`.
It has a single callsite, and duplicates some code from that callsite.
The code is more concise and clearer this way.
2018-07-13 10:34:21 +10:00
Vadim Petrochenkov edffb2fcf0 proc_macro: Fix crate root detection 2018-07-13 01:59:41 +03:00
Sean McArthur 4f4e91a69d task: remove wrong comments about non-existent LocalWake trait 2018-07-12 15:43:57 -07:00
Alex Crichton 0b969a9d68 rustc: Lint against `#[macro_use]` in 2018 idioms
This commit adds a lint to the compiler to warn against the `#[macro_use]`
directive as part of the `rust_2018_idioms` lint. This lint is turned off by
default and is only enabled when the `use_extern_macros` feature is also
enabled.

The lint here isn't fully fleshed out as it's just a simple warning rather than
suggestions of how to actually import the macro, but hopefully it's a good base
to start from!

cc #52043
2018-07-12 14:10:39 -07:00
bors 64f7de9216 Auto merge of #51339 - sdroege:exact-chunks-remainder, r=alexcrichton
Add ExactChunks::remainder and ExactChunks::into_remainder

These allow to get the leftover items of the slice that are not being
iterated as part of the iterator due to not filling a complete chunk.

The mutable version consumes the slice because otherwise we would either
a) have to borrow the iterator instead of taking the lifetime of
the underlying slice, which is not what *any* of the other iterator
functions is doing, or
b) would allow returning multiple mutable references to the same data

The current behaviour of consuming the iterator is consistent with
IterMut::into_slice for the normal iterator.

----

This is related to https://github.com/rust-lang/rust/issues/47115#issuecomment-392685177 and the following comments.

While there the discussion was first about a way to get the "tail" of the iterator (everything from the slice that is still not iterated yet), this gives kind of unintuitive behaviour and is inconsistent with how the other slice iterators work.

Unintuitive because the `next_back` would have no effect on the tail (or otherwise the tail could not include the remainder items), inconsistent because a) generally the idea of the slice iterators seems to be to only ever return items that were not iterated yet (and don't provide a way to access the same item twice) and b) we would return a "flat" `&[T]` slice but the iterator's shape is `&[[T]]` instead, c) the mutable variant would have to borrow from the iterator instead of the underlying slice (all other iterator functions borrow from the underlying slice!)

As such, I've only implemented functions to get the remainder. This also allows the implementation to be completely safe still (and around slices instead of raw pointers), while getting the tail would either be inefficient or would have to be implemented around raw pointers.

CC @kerollmops
2018-07-12 19:39:04 +00:00
varkor 9ead0d82e1 Update llvm-rebuild-trigger in light of LLVM 7 upgrade 2018-07-12 12:32:35 -07:00
David Wood 9527d6ade7
Moved non_exhaustive message to fields/variants section and onto type. 2018-07-12 20:21:45 +01:00
Taylor Cramer 9c15a6606e Ensure StorageDead is created even if variable initialization fails 2018-07-12 10:13:41 -07:00
ljedrz 72f096b628 Resolve FIXME(#27942) 2018-07-12 18:59:56 +02:00
Mark Rousskov 4c340a28ad Backport 1.27.1 release notes to master 2018-07-12 10:42:00 -06:00
varkor e93de9556a Fix ICE when using a pointer cast as array size 2018-07-12 09:10:39 -07:00
kennytm 6c635b719d
Revert "Auto merge of #51165 - SimonSapin:opt2, r=alexcrichton"
This reverts commit 524ad9b9e0, reversing
changes made to 59c0f5913d.
2018-07-12 23:42:57 +08:00
bors 6cc42a4488 Auto merge of #52256 - tinco:issue_52255, r=sanxiyn
make pretty source comparison check be fatal (fixes #52255)

This is not ready for merging because it reveals (at least) two regressions in the pretty suite. Should I attempt to fix those in this PR also?
2018-07-12 15:12:37 +00:00
Michael Woerister dd3f445ed2 Fix some run-make tests after object file naming has changed. 2018-07-12 14:59:50 +02:00
bors 7db82ccd76 Auto merge of #52303 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

Successful merges:

 - #51816 (bootstrap: write texts to a .tmp file first for atomicity)
 - #51912 (impl Clone for Box<CStr>, Box<OsStr>, Box<Path>)
 - #52164 (use proper footnote syntax for references)
 - #52220 (Deny bare trait objects in `src/bootstrap`)
 - #52276 (rustc: Verify #[proc_macro] is only a word)
 - #52277 (Uncapitalize "If")
 - #52287 (Deny bare trait objects in src/librustc_resolve)
 - #52295 (Deny bare trait objects in src/libsyntax_ext)
 - #52298 (make reference to dirs crate clickable in terminals)

Failed merges:

r? @ghost
2018-07-12 12:50:13 +00:00
kennytm a7c2c68b13
Rollup merge of #52298 - RalfJung:dirs, r=Mark-Simulacrum
make reference to dirs crate clickable in terminals

Currently I have to copy-paste the link; with this change I can just click it right in my terminal window.
2018-07-12 20:25:33 +08:00
kennytm 019dc2a357
Rollup merge of #52295 - ljedrz:dyn_libsyntax_ext, r=petrochenkov
Deny bare trait objects in src/libsyntax_ext

Enforce `#![deny(bare_trait_objects)]` in `src/libsyntax_ext`.
2018-07-12 20:25:32 +08:00
kennytm 9fc126c375
Rollup merge of #52287 - ljedrz:dyn_librustc_resolve, r=petrochenkov
Deny bare trait objects in src/librustc_resolve

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_resolve`.
2018-07-12 20:25:30 +08:00
kennytm eb1728b585
Rollup merge of #52277 - kraai:patch-2, r=kennytm
Uncapitalize "If"
2018-07-12 20:25:29 +08:00
kennytm 63cc55b2ec
Rollup merge of #52276 - alexcrichton:validate-proc-macro-attr, r=petrochenkov
rustc: Verify #[proc_macro] is only a word

... and perform the same verification for #[proc_macro_attribute], currently
neither of these attributes take any arguments.

Closes #52273
2018-07-12 20:25:28 +08:00
kennytm c2c6986733
Rollup merge of #52220 - ljedrz:dyn_bootstrap, r=kennytm
Deny bare trait objects in `src/bootstrap`

Enforce `#![deny(bare_trait_objects)]` in `src/bootstrap`.
2018-07-12 20:25:27 +08:00
kennytm 8fba84fe0a
Rollup merge of #52164 - euclio:references, r=TimNN
use proper footnote syntax for references

The previous syntax was causing rustdoc to interpret them as links.
2018-07-12 20:25:26 +08:00
kennytm b317ab1bc5
Rollup merge of #51912 - mbrubeck:more_box_slice_clone, r=alexcrichton
impl Clone for Box<CStr>, Box<OsStr>, Box<Path>

Implements #51908.
2018-07-12 20:25:25 +08:00
kennytm c87e3feaee
Rollup merge of #51816 - nodakai:conf-py-tmpfile, r=kennytm
bootstrap: write texts to a .tmp file first for atomicity

If you are using a hard-linked file as your config.toml, this change will affect the way other instances of the file is modified.
The original version would modify all other instances whereas the new version will leave others unchanged, reducing the ref count by one.
2018-07-12 20:25:23 +08:00
ljedrz 5058af7003 Deny bare trait objects in the rest of rust 2018-07-12 13:50:22 +02:00
ljedrz 21d9ac1d04 Deny bare trait objects in librustc_target and libtest 2018-07-12 13:26:29 +02:00
ljedrz 0878453119 Deny bare trait objects in src/libserialize 2018-07-12 12:49:29 +02:00
Ralf Jung e9a88eaaf9 make reference to dirs crate clickable in terminals 2018-07-12 12:48:10 +02:00
bors d334027c58 Auto merge of #52230 - alexcrichton:attr-and-derive, r=petrochenkov
rustc: Search all derives for inert attributes

This commit fixes an apparent mistake in librustc_resolve where when the
`proc_macro` feature is enabled (or `rust_2018_preview`) the resolution of
custom attributes for custom derive was tweaked. Previously when an attribute
failed to resolve it was attempted to locate if there is a custom derive also in
scope which declares the attribute, but only the first custom derive directive
was search.

Instead this commit fixes the loop to search all custom derive invocations
looking for any which register the attribute in question.

Closes #52219
2018-07-12 10:16:19 +00:00
ljedrz 08c113abef Deny bare trait objects in src/libsyntax_ext 2018-07-12 11:58:16 +02:00
ljedrz f29ac5a680 Deny bare trait objects in librustc_typeck 2018-07-12 10:57:04 +02:00
Michael Woerister 94b32adb71 Adapt codegen-unit tests to new CGU naming scheme. 2018-07-12 10:44:13 +02:00
ljedrz db7170cf4a Add missing dyn in driver.rs 2018-07-12 10:35:53 +02:00
ljedrz 0d7b2e6e28 Deny bare trait objects in src/librustc_save_analysis 2018-07-12 10:26:22 +02:00
ljedrz 8fecbe3e78 Deny bare trait objects in src/librustc_resolve 2018-07-12 10:15:35 +02:00
Mike Hommey b5c2b79fb2 Don't display default generic parameters in diagnostics that compare types.
Fixes #52097
2018-07-12 17:14:53 +09:00
bors de857bbcf0 Auto merge of #52282 - kennytm:fix-rls-break, r=oli-obk
Patch clippy_lints to use the in-tree clippy as well.

Should fix the most recent RLS build break.
2018-07-12 08:12:18 +00:00
Mike Hommey 5336df7e3c Add UI tests for diagnostics comparing types
They highlight how types are displayed in those cases, and will show
how the current output is altered by the next patch.
2018-07-12 17:06:03 +09:00
ljedrz 58bf387ae3 Deny bare trait objects in librustc_driver 2018-07-12 09:11:39 +02:00
Niko Matsakis 862c0dd851 make `RegionValues` generic over its domain
We used to store one value per RegionVid; we will soon be storing one
value per SCC.
2018-07-12 00:38:40 -04:00
Niko Matsakis 0052ddd8ae introduce a generic SCC computation 2018-07-12 00:38:40 -04:00
Niko Matsakis dab206f8b5 strengthen `Idx` to require `Ord + Hash`
You should always be able to know that any `T` where `T: Idx`
can be used in a `BTreeMap` and a `FxHashMap`.
2018-07-12 00:38:40 -04:00