Commit Graph

83858 Commits

Author SHA1 Message Date
Nicholas Nethercote
266e2d3d69 Merge indexed_set.rs into bitvec.rs, and rename it bit_set.rs.
Currently we have two files implementing bitsets (and 2D bit matrices).
This commit combines them into one, taking the best features from each.

This involves renaming a lot of things. The high level changes are as
follows.
- bitvec.rs              --> bit_set.rs
- indexed_set.rs         --> (removed)
- BitArray + IdxSet      --> BitSet (merged, see below)
- BitVector              --> GrowableBitSet
- {,Sparse,Hybrid}IdxSet --> {,Sparse,Hybrid}BitSet
- BitMatrix              --> BitMatrix
- SparseBitMatrix        --> SparseBitMatrix

The changes within the bitset types themselves are as follows.

```
OLD             OLD             NEW
BitArray<C>     IdxSet<T>       BitSet<T>
--------        ------          ------
grow            -               grow
new             -               (remove)
new_empty       new_empty       new_empty
new_filled      new_filled      new_filled
-               to_hybrid       to_hybrid
clear           clear           clear
set_up_to       set_up_to       set_up_to
clear_above     -               clear_above
count           -               count
contains(T)     contains(&T)    contains(T)
contains_all    -               superset
is_empty        -               is_empty
insert(T)       add(&T)         insert(T)
insert_all      -               insert_all()
remove(T)       remove(&T)      remove(T)
words           words           words
words_mut       words_mut       words_mut
-               overwrite       overwrite
merge           union           union
-               subtract        subtract
-               intersect       intersect
iter            iter            iter
```

In general, when choosing names I went with:
- names that are more obvious (e.g. `BitSet` over `IdxSet`).
- names that are more like the Rust libraries (e.g. `T` over `C`,
  `insert` over `add`);
- names that are more set-like (e.g. `union` over `merge`, `superset`
  over `contains_all`, `domain_size` over `num_bits`).

Also, using `T` for index arguments seems more sensible than `&T` --
even though the latter is standard in Rust collection types -- because
indices are always copyable. It also results in fewer `&` and `*`
sigils in practice.
2018-09-18 07:08:09 +10:00
bors
354a29a5f1 Auto merge of #54277 - petrochenkov:afterder, r=alexcrichton
Temporarily prohibit proc macro attributes placed after derives

... and also proc macro attributes used together with `#[test]`/`#[bench]`.

Addresses item 6 from https://github.com/rust-lang/rust/pull/50911#issuecomment-411605393.

The end goal is straightforward predictable left-to-right expansion order for attributes.
Right now derives are expanded last regardless of their relative ordering with macro attributes and right now it's simpler to temporarily prohibit macro attributes placed after derives than changing the expansion order.
I'm not sure whether the new beta is already released or not, but if it's released, then this patch needs to be backported, so the solution needs to be minimal.

How to fix broken code (derives):
- Move macro attributes above derives. This won't change expansion order, they are expanded before derives anyway.

Using attribute macros on same items with `#[test]` and `#[bench]` is prohibited for similar expansion order reasons, but this one is going to be reverted much sooner than restrictions on derives.

How to fix broken code (test/bench):
- Enable `#![feature(plugin)]` (don't ask why).

r? @ghost
2018-09-17 18:13:26 +00:00
Vitaly _Vi Shukela
d0790c490a
Whitespace fix again. 2018-09-17 20:26:05 +03:00
Santiago Pastorino
e9029cec7b
Inspect parents paths when checking for moves 2018-09-17 13:38:04 -03:00
Alva Snædís
79da7a0a2f libsyntax: add optional help message for deprecated features 2018-09-17 16:09:23 +00:00
Ralf Jung
56c1519203 miri: correctly compute expected alignment for field 2018-09-17 18:05:17 +02:00
bors
186fe09143 Auto merge of #54293 - flip1995:clippyup, r=Manishearth
Update Clippy

Fix Clippy test-fail due to #53910

r? @Manishearth @SimonSapin
2018-09-17 15:39:00 +00:00
flip1995
059ab7715c
Update Clippy 2018-09-17 15:37:19 +02:00
Vitaly _Vi Shukela
15982fe369
Better trick for allowing trailing comma at forward! 2018-09-17 16:33:37 +03:00
memoryruins
30556d592e Suggest array indexing when tuple indexing on an array. 2018-09-17 09:09:45 -04:00
Michael Woerister
73b3c28a16 Switch linker for aarch64-pc-windows-msvc from LLD to MSVC, since that seems to work better. 2018-09-17 14:41:09 +02:00
Felix S. Klock II
82e1750414 Add -Z dont-buffer-diagnostics, a way to force NLL to immediately emit its diagnostics.
This is mainly intended for `rustc` developers who want to see a
diagnostic in its original context in the control flow.  Two uses
cases for that are:

 * `-Z treat-err-as-bug` which then allows extraction of a stack-trace to the origin of the error
   (a case that is so important that we make that flag imply this one, effectively).

 * `RUST_LOG=... rustc`, in which case it is often useful to see the logging statements that
   occurred immediately prior to the point where the diagnostic was signalled.

Drive-by: Added some documentation pointing future devs at
HandlerFlags, and documented the fields of `HandlerFlags` itself.
2018-09-17 14:30:01 +02:00
Alva Snædís
e4e4039c5b libsyntax: fix casing in error message 2018-09-17 12:12:37 +00:00
Felix S. Klock II
3a07d3dbd6 On nightly with NLL, suggest #![feature(bind_by_move_pattern_guards)] when it might fix the code. 2018-09-17 13:46:50 +02:00
Felix S. Klock II
c50884c615 Tests for feature(bind_by_move_pattern_guards).
Apparently copyright notices are no longer necessary apparently.
(See #43498 and #53654.)
2018-09-17 13:46:50 +02:00
Felix S. Klock II
7d844e871c Add feature(bind_by_move_pattern_guards).
Note it requires MIR-borrowck to be enabled to actually do anything.

Note also that it implicitly turns off our AST-based check for
mutation in guards.
2018-09-17 13:46:50 +02:00
Collins Abitekaniza
5ae40be851 refactor Builder::cargo, clean deps for cmd!=test 2018-09-17 14:34:42 +03:00
Vitaly _Vi Shukela
0269e66295
Fixed some remaining whitespace issues.
(Not sure if it is correct although).
2018-09-17 12:52:08 +03:00
bors
f1aefb48d2 Auto merge of #54249 - RalfJung:miri, r=eddyb
Update miri
2018-09-17 08:59:11 +00:00
Ralf Jung
8d908b5b24 update miri 2018-09-17 09:20:03 +02:00
bors
ed9439768e Auto merge of #54260 - maxdeviant:public-scope-fields, r=petrochenkov
Make rustc::middle::region::Scope's fields public

This PR makes the following changes to `rustc::middle::region::Scope`:

- [x] Makes `region::Scope`'s fields public
- [x] Removes the `impl Scope` block with constructors (as per [this comment](https://github.com/rust-lang/rust/pull/54032#discussion_r216618208))
- [x] Updates call sites throughout the compiler

Closes #54122.
2018-09-17 06:34:29 +00:00
csmoe
2fb6585f33 add test for float/integer 2018-09-17 14:26:58 +08:00
csmoe
9d6c4f09c4 merge into/literal suggestion for DRY 2018-09-17 14:26:58 +08:00
bors
0b0d2edf79 Auto merge of #54254 - RalfJung:miri-dangling, r=eddyb
miri engine: keep around some information for dead allocations

We use it to test if a dangling ptr is aligned and non-NULL. This makes some code pass that should pass (writing a ZST to a properly aligned dangling pointer), and makes some code fail that should fail (writing a ZST to a pointer obtained via pointer arithmetic from a real location, but ouf-of-bounds -- that pointer could be NULL, so we cannot allow writing to it).

CTFE does not allow these operations; tests are added to miri with https://github.com/solson/miri/pull/453.
2018-09-17 03:58:41 +00:00
bors
0c6478998e Auto merge of #54247 - Munksgaard:better-error-message-in-no_lookup_host_duplicates, r=alexcrichton
Improve output if no_lookup_host_duplicates test fails

If the test fails, output the offending addresses and a helpful error message.
Also slightly improve legibility of the preceding line that puts the addresses
into a HashMap.
2018-09-17 01:36:58 +00:00
Vitaly _Vi Shukela
2b77760944
Fill in suggestions Applicability according to @estebank
Also fix some formatting along the way.
2018-09-17 03:20:08 +03:00
Vitaly _Vi Shukela
c61f4a7144
Fix tidy's too long lines. 2018-09-17 02:51:50 +03:00
Vitaly _Vi Shukela
0ad1c0e369
Change diagnostic_builder's forward! macro to enforce trailing argument comma 2018-09-17 02:50:00 +03:00
Vitaly _Vi Shukela
6ebb9161ea
Fix style according to review comments. 2018-09-17 02:49:27 +03:00
bors
5aac93c8fb Auto merge of #53910 - IsaacWoods:unify_cvoid, r=SimonSapin
Move std::os::raw::c_void into libcore and re-export in libstd

Implements the first part of [RFC 2521](https://github.com/rust-lang/rfcs/pull/2521).

cc #53856
2018-09-16 23:13:30 +00:00
varkor
cb594cf373 Treat dyn as a keyword in the 2018 edition 2018-09-16 23:34:42 +01:00
Jorge Aparicio
828289610b remove (more) CAS API from Atomic* types where not natively supported
closes #54276
2018-09-16 23:04:11 +02:00
bors
cb6d2dfa89 Auto merge of #53461 - petrochenkov:pmu, r=alexcrichton
resolve: Do not error on access to proc macros imported with `#[macro_use]`

This error is artificial, but previously, when `#[macro_use] extern crate x;` was stable, but non-derive proc macros were not, it worked like kind of a feature gate. Now both features are stable, so the error is no longer necessary.

This PR simplifies how `#[macro_use] extern crate x;` works - it takes all items from macro namespace of `x`'s root and puts them into macro prelude from which they all can now be accessed.
2018-09-16 20:28:21 +00:00
Vitaly _Vi Shukela
f395072c4d
Fixup inaccurate rebase 2018-09-16 22:13:41 +03:00
Vitaly _Vi Shukela
3be24c6647
trailing whitespace fix 2018-09-16 21:43:07 +03:00
Vitaly _Vi Shukela
959fc6116a
Deprecate *_suggestion* that are without explicit applicability 2018-09-16 21:43:06 +03:00
Vitaly _Vi Shukela
4b05128114
Attach Applicability to multipart_suggestion and span_suggestions 2018-09-16 21:43:06 +03:00
Vitaly _Vi Shukela
2f5cb6dbdc
Add multipart_suggestion_with_applicability 2018-09-16 21:43:06 +03:00
Vitaly _Vi Shukela
b6fea3255c
Remove usages of span_suggestion without Applicability
Use Applicability::Unspecified for all of them instead.
2018-09-16 21:42:46 +03:00
Vadim Petrochenkov
e411bb33f8 resolve: Do not error on access to proc macros imported with #[macro_use] 2018-09-16 21:13:41 +03:00
bors
8a2dec6e58 Auto merge of #53804 - RalfJung:ptr-invalid, r=nagisa
fix some uses of pointer intrinsics with invalid pointers

[Found by miri](https://github.com/solson/miri/pull/446):

* `Vec::into_iter` calls `ptr::read` (and the underlying `copy_nonoverlapping`) with an unaligned pointer to a ZST. [According to LLVM devs](https://bugs.llvm.org/show_bug.cgi?id=38583), this is UB because it contradicts the metadata we are attaching to that pointer.
* `HashMap` creation calls `ptr:.write_bytes` on a NULL pointer with a count of 0. This is likely not currently UB *currently*, but it violates the rules we are setting in https://github.com/rust-lang/rust/pull/53783, and we might want to exploit those rules later (e.g. with more `nonnull` attributes for LLVM).

    Probably what `HashMap` really should do is use `NonNull::dangling()` instead of 0 for the empty case, but that would require a more careful analysis of the code.

It seems like ideally, we should do a review of usage of such intrinsics all over libstd to ensure that they use valid pointers even when the size is 0. Is it worth opening an issue for that?
2018-09-16 18:03:39 +00:00
Vadim Petrochenkov
229df02c0b Temporarily prohibit proc macro attributes placed after derives
... and also proc macro attributes used together with test/bench.
2018-09-16 19:51:41 +03:00
bors
d3cba9b4b4 Auto merge of #54270 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - #53941 (rustdoc: Sort implementors)
 - #54181 (Suggest && and || instead of 'and' and 'or')
 - #54209 (Partially revert 674a5db "Fix undesirable fallout [from macro modularization]")
 - #54213 (De-overlap the lifetimes of `flow_inits` and `flow_{un,ever_}inits`.)
 - #54244 (Add a small search box to seach Rust's standary library)

Failed merges:

r? @ghost
2018-09-16 15:42:02 +00:00
csmoe
d31a2a0c60 trim type numeric literal suffix 2018-09-16 23:13:17 +08:00
csmoe
17a28f7063 add test for numeric literal cast 2018-09-16 21:22:47 +08:00
csmoe
0ff0669b79 replace old literal in expr 2018-09-16 21:12:23 +08:00
Ralf Jung
357c5dacee use mem::zeroed to make up ZST values 2018-09-16 14:26:27 +02:00
csmoe
19840793e5 lint to change numeric literal instead of into 2018-09-16 20:06:31 +08:00
Guillaume Gomez
8b1e5e1f01
Rollup merge of #54244 - kzys:search-box, r=GuillaumeGomez
Add a small search box to seach Rust's standary library

This change partially addresses #14572. No CSS doesn't look fancy
but at least it is functional.
2018-09-16 12:25:46 +02:00
Guillaume Gomez
937abc9add
Rollup merge of #54213 - nnethercote:keccak-flow_inits-memory, r=nikomatsakis
De-overlap the lifetimes of `flow_inits` and `flow_{un,ever_}inits`.

This reduces `max-rss` for an `nll-check` build by 27% for `keccak`, and
by 8% for `inflate`.

r? @nikomatsakis
2018-09-16 12:25:45 +02:00