Commit Graph

80869 Commits

Author SHA1 Message Date
kennytm
c74ff6cbd4
Rollup merge of #52502 - RalfJung:rotate, r=scottmcm
fix unsafety: don't call ptr_rotate for ZST

`rotate::ptr_rotate` has a comment saying
```
/// # Safety
///
/// The specified range must be valid for reading and writing.
/// The type `T` must have non-zero size.
```
So we better make sure we don't call it on ZST...

Cc @scottmcm (author of https://github.com/rust-lang/rust/pull/41670)
2018-07-21 04:08:05 +08:00
ljedrz
e3d14c4c56 Refactor a few push loops to iterators in librustc 2018-07-20 21:57:12 +02:00
Matthew Jasper
a06b2433fc Update tests for new NLL mutability errors 2018-07-20 20:01:15 +01:00
Matthew Jasper
13b5f69848 Improve NLL mutability errors
* Better explain why the place is immutable
* Distinguish &T and *const T
* Use better spans when a mutable borrow is for a closure capture
2018-07-20 20:01:11 +01:00
Matthew Jasper
db568e426a Move mutability error reporting to its own file 2018-07-20 20:01:11 +01:00
Matthew Jasper
c3dbdfee06 MIR changes to improve NLL cannot mutate errors
Alway use unique instead of mutable borrows immutable upvars.
Mark variables that are references for a match guard
2018-07-20 20:01:11 +01:00
Manish Goregaokar
d63e9257b9 Update clippy 2018-07-20 20:58:06 +02:00
Esteban Küber
9112e1a4cd fix rebase 2018-07-20 11:04:23 -07:00
bors
878dd0b5e1 Auto merge of #52354 - QuietMisdreavus:rustdoc-lints, r=GuillaumeGomez
stabilize lint handling in rustdoc

When https://github.com/rust-lang/rust/pull/51732 added CLI flags to manipulate lints in rustdoc, they were added as unstable flags. This made sense as they were new additions, but since they mirrored the flags that rustc has, it's worth considering them to not need an unstable period.

Stabilizing them also provides the opportunity for a critical fix: allowing Cargo to pass `--cap-lints allow` when documenting dependencies, the same as when it compiles them.

r? @rust-lang/rustdoc
2018-07-20 18:02:05 +00:00
Oliver Schneider
c7d39e0c51 Remove unused method 2018-07-20 18:43:25 +02:00
Esteban Küber
052159be53 fix incorrect position of chars in fmt str 2018-07-20 09:15:22 -07:00
Oliver Schneider
7cab813ad9 Only methods are fn-like, not other associated items 2018-07-20 17:19:58 +02:00
bors
509cbf3e8e Auto merge of #52498 - oli-obk:const_prop, r=nikomatsakis
Const propagate casts

fixes #49760

So... This fixes the original issue about the missing warnings.

But our test suite contains fun things like

```rust
fn foo() {}
assert_eq!(foo as i16, foo as usize as i16);
```

Which, will result in

> a raw memory access tried to access part of a pointer value as raw bytes

on both sides of the assertion. Because well... that's exactly what's going on! We're ripping out 16 bits of a pointer.
2018-07-20 13:22:36 +00:00
dylan_DPC
dbb756ded7 tidy up 2018-07-20 18:40:52 +05:30
dylan_DPC
4e3339efda move NllLivenessMap and LocalWithRegion to liveness_map 2018-07-20 17:51:34 +05:30
bors
3bea4d1fc6 Auto merge of #52476 - wesleywiser:categorize_queries, r=nikomatsakis
Categorize queries for later self-profiling

Change the define_queries! macro per feedback on #51657.

Big thanks to @mark-i-m for the help getting the macro changes correct!

I'm pulling this commit out of the other PR because it's hard to keep up-to-date as queries are added or changed.

r? @nikomatsakis
2018-07-20 11:10:58 +00:00
Vadim Petrochenkov
382285a01d Revert some use of PtrKey to fix parallel_queries build 2018-07-20 12:45:07 +03:00
Vadim Petrochenkov
e7aeb2b1c7 resolve: Add more comments to in-module resolution 2018-07-20 12:22:25 +03:00
Vadim Petrochenkov
32453db332 resolve: Fully prohibit shadowing of in-scope names by globs in macro paths 2018-07-20 12:22:24 +03:00
Vadim Petrochenkov
2eb83ee527 data_structures: Add a reference wrapper for pointer-indexed maps/sets
Use `ptr::eq` for comparing pointers
2018-07-20 12:22:24 +03:00
Vadim Petrochenkov
414a86e759 resolve: Add some comments to in-module resolution 2018-07-20 12:22:24 +03:00
Vadim Petrochenkov
c2533b64a3 resolve: Remove SingleImports in favor of a simple set 2018-07-20 12:22:24 +03:00
Vadim Petrochenkov
22143491bc resolve: Rename global_macros to macro_prelude
Rename `shadows_glob` to `shadowed_glob`
2018-07-20 12:22:24 +03:00
Vadim Petrochenkov
c44f72430c resolve: Remove unused parameter from resolve_ident_in_module 2018-07-20 12:22:24 +03:00
bors
4260c8b1e4 Auto merge of #52467 - alexcrichton:lints-and-macros, r=Manishearth
Squash all lints tied to foreign macros by default

This PR is a continuation of https://github.com/rust-lang/rust/pull/49755 (thanks for the initial jump-start @Dylan-DPC!) and is targeted at solving https://github.com/rust-lang/rust/issues/48855. This change updates the lint infrastructure to, by default, ignore all lints emitted for code that originates in a foreign macro. For example if `println!("...")` injects some idiomatic warnings these are all ignored by default. The rationale here is that for almost all lints there's no action that can be taken if the code originates from a foreign lint.

Closes #48855
Closes #52483
Closes #52479
2018-07-20 08:54:14 +00:00
ljedrz
576cfc510a Remove duplicate E0396 tests 2018-07-20 09:47:55 +02:00
bors
a5097f3d68 Auto merge of #52445 - alexcrichton:wasm-import-module, r=eddyb
rustc: Stabilize #[wasm_import_module] as #[link(...)]

This commit stabilizes the `#[wasm_import_module]` attribute as
`#[link(wasm_import_module = "...")]`. Tracked by #52090 this new directive in
the `#[link]` attribute is used to configured the module name that the imports
are listed with. The WebAssembly specification indicates two utf-8 names are
associated with all imported items, one for the module the item comes from and
one for the item itself. The item itself is configurable in Rust via its
identifier or `#[link_name = "..."]`, but the module name was previously not
configurable and defaulted to `"env"`. This commit ensures that this is also
configurable.

Closes #52090
2018-07-20 06:40:10 +00:00
Esteban Küber
85da68cb6d Rebase and fix text changed by master 2018-07-19 23:21:00 -07:00
Esteban Küber
f4306ffbfc Use correct spans for format string errors
When encountering format string errors in a raw string, or regular
string literal with embedded newlines, account for the positional
change to use correct spans.

:drive by fix: 🚗
2018-07-19 23:18:07 -07:00
Esteban Küber
154dee2dcc rework println 2018-07-19 23:18:07 -07:00
Esteban Küber
a47653214f Fix hir tree test 2018-07-19 23:18:07 -07:00
Esteban Küber
e613bfb701 Same change as println for eprintln 2018-07-19 23:18:07 -07:00
Esteban Küber
fbce952193 review comments: modify note wording and change println
- Don't print the newline on its own to avoid the possibility of
  printing it out of order due to `stdout` locking.
- Modify wording of `concat!()` with non-literals to not mislead into
  believing that only `&str` literals are accepted.
- Add test for `concat!()` with non-literals.
2018-07-19 23:18:07 -07:00
Esteban Küber
f53c145ef1 Improve suggestion for missing fmt str in println
Avoid using `concat!(fmt, "\n")` to improve the diagnostics being
emitted when the first `println!()` argument isn't a formatting string
literal.
2018-07-19 23:18:07 -07:00
Nicholas Nethercote
798209e78b Speed up SparseBitMatrix.
Using a `BTreeMap` to represent rows in the bit matrix is really slow.
This patch changes things so that each row is represented by a
`BitVector`. This is a less sparse representation, but a much faster
one.

As a result, `SparseBitSet` and `SparseChunk` can be removed.

Other minor changes in this patch.

- It renames `BitVector::insert()` as `merge()`, which matches the
  terminology in the other classes in bitvec.rs.

- It removes `SparseBitMatrix::is_subset()`, which is unused.

- It reinstates `RegionValueElements::num_elements()`, which #52190 had
  removed.

- It removes a low-value `debug!` call in `SparseBitMatrix::add()`.
2018-07-20 15:15:06 +10:00
Niko Matsakis
67685dee3f always get number of live variables from the map 2018-07-20 00:46:06 -04:00
Eduard-Mihai Burtescu
99eac011c6 proc_macro: avoid exposing internal details in formatting impls. 2018-07-20 06:27:16 +03:00
Eduard-Mihai Burtescu
bc2b21cc4e proc_macro: move some implementation details to a rustc module. 2018-07-20 06:26:33 +03:00
bors
bc14d71622 Auto merge of #52349 - RalfJung:once, r=alexcrichton
sync::Once use release-acquire access modes

Nothing here makes a case distinction like "this happened before OR after that". All we need is to get happens-before edges whenever we see that the state/signal has been changed. Release-acquire is good enough for that.
2018-07-20 02:52:19 +00:00
Eduard-Mihai Burtescu
e5e29d1a19 proc_macro: don't expose compiler-internal FileName in public API. 2018-07-20 00:15:11 +03:00
Eduard-Mihai Burtescu
56aaa53278 proc_macro: clean up the implementation of quasi-quoting. 2018-07-20 00:15:11 +03:00
Eduard-Mihai Burtescu
d10d0b3e9e proc_macro: don't try to reflect literals in quasi-quoting. 2018-07-20 00:15:11 +03:00
Eduard-Mihai Burtescu
c0adb05d34 proc_macro: don't use DiagnosticBuilder for building up Diagnostics. 2018-07-20 00:15:11 +03:00
bors
c7cba3d33f Auto merge of #52024 - oli-obk:existential_parse, r=nikomatsakis
Implement existential types

(not for associated types yet)

r? @nikomatsakis

cc @Centril @varkor @alexreg
2018-07-19 21:14:01 +00:00
bors
11864c4e6c Auto merge of #51854 - davidtwco:rfc-2008-rustdoc, r=QuietMisdreavus
RFC 2008 non-exhaustive enums/structs: Rustdoc

Part of #44109. Not sure how those who maintain rustdoc primarily would prefer this addition look or where it should be placed, happy to make any changes required.

r? @QuietMisdreavus (not sure if this is the right person, just guessing)
2018-07-19 19:03:03 +00:00
dylan_DPC
9910dee677 tidy fixes 2018-07-20 00:22:57 +05:30
dylan_DPC
2255786212 left out one field during merge 2018-07-19 23:36:26 +05:30
dylan_DPC
1951a30702 convert LocalWithRegion to Local 2018-07-19 23:18:08 +05:30
dylan_DPC
0819ba9bea mir/mod.rs / visit.rs reverted back to using Local 2018-07-19 23:18:07 +05:30
dylan_DPC
0d847ec1ab add LocalWithRegion NllLivenessMap 2018-07-19 23:18:03 +05:30