Commit graph

21345 commits

Author SHA1 Message Date
Mark Rousskov
5af06768a9 Remove crate_visibility_modifier from 2018 edition 2018-09-09 02:28:13 +02:00
bors
0198a1ea45 Auto merge of #53909 - mikhail-m1:53643, r=nikomatsakis
Skip a shared borrow of a immutable local variables

issue #53643

r? @nikomatsakis
2018-09-08 19:57:14 +00:00
Pramod Bisht
21ba03e2b9 Fixed 53359: E0432 unresolved import on the same line is now emiting one diagnostic
Addressed estebank's comments for 53359
2018-09-08 15:11:04 +00:00
bors
b24330fb7d Auto merge of #53705 - ms2300:tmp, r=oli-obk
#53576 Renaming TyAnon -> TyOpaque

Fixes #53576
2018-09-08 14:16:37 +00:00
bors
05cb29e96f Auto merge of #54051 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

Successful merges:

 - #53315 (use `NonZeroU32` in `newtype_index!`macro, change syntax)
 - #53932 ([NLL] Remove base_place)
 - #53942 (Rewrite `precompute_borrows_out_of_scope` for fewer hash table lookups.)
 - #53973 (Have rust-lldb look for the rust-enabled lldb)
 - #53981 (Implement initializer() for FileDesc)
 - #53987 (rustbuild: allow configuring llvm version suffix)
 - #53993 (rustc_resolve: don't record uniform_paths canaries as reexports.)
 - #54007 (crates that provide a `panic_handler` are exempt from the `unused_extern_crates` lint)
 - #54040 (update books for next release)
 - #54050 (Update `petgraph` dependency to 0.4.13 to fix build with nightly)
2018-09-08 11:53:21 +00:00
Vadim Petrochenkov
2dce3779bb resolve: More precise spans for ambiguous resolution errors
Add labels to ambiguous resolution errors
2018-09-08 14:15:11 +03:00
Vadim Petrochenkov
9beb5c3ef3 Add checks for expected macro output in restricted shadowing tests 2018-09-08 14:15:11 +03:00
Vadim Petrochenkov
e00993a1ab Add test cases for possible restricted shadowing configurations
Whitelist `#[rustc_transparent_macro]` so it's not interpreted as a potential attribute macro
2018-09-08 14:15:11 +03:00
Vadim Petrochenkov
c057d579ab resolve: Relax shadowing restriction on macro-expanded macros
... for both legacy and modern macros.
Fix previously introduced regressions, add tests.
2018-09-08 14:15:11 +03:00
Vadim Petrochenkov
f34ac26114 resolve: Model shadowing restriction for macro_rules after modern macros
This is a regression for legacy macros that will be fixed in the next commit
2018-09-08 14:15:10 +03:00
Vadim Petrochenkov
83a51deef5 resolve: Model resolve_legacy_scope after resolve_lexical_macro_path_segment 2018-09-08 14:15:10 +03:00
kennytm
1a86a9379e
Rollup merge of #54007 - japaric:gh53964, r=cramertj
crates that provide a `panic_handler` are exempt from the `unused_extern_crates` lint

fixes the *first* false positive reported in #53964
2018-09-08 18:26:59 +08:00
kennytm
407da0a8a2
Rollup merge of #53993 - eddyb:issue-53691, r=petrochenkov
rustc_resolve: don't record uniform_paths canaries as reexports.

Fixes #53691, fixes #53484.
2018-09-08 18:26:44 +08:00
kennytm
7569d9266e
Rollup merge of #53932 - matthewjasper:remove-base-path, r=nikomatsakis
[NLL] Remove base_place

This function was supposed to make `Box` less special. But

* I think that the consensus is that MIR borrowck is going to fully special case `Box`
* It wasn't implemented correctly, it's looking at the type of the wrong `Place`, resulting in weird behaviour:

```rust
#![feature(nll)]
type A = Box<i32>; // If this is changed to another type then this will compile.

pub fn foo(x: Box<(String, A)>) {
    let a = x.0; // This will compile if these lines are swapped
    let b = x.1;
}
```

r? @nikomatsakis
2018-09-08 18:26:29 +08:00
bors
ff59ab127a Auto merge of #51366 - japaric:stable-panic-impl, r=Mark-Simulacrum
stabilize #[panic_handler]

closes #44489

### Update(2018-09-07)

This was proposed for stabilization in https://github.com/rust-lang/rust/issues/44489#issuecomment-398965881 and its FCP with disposition to merge / accept is nearly over. The summary of what's being stabilized can be found in https://github.com/rust-lang/rust/issues/44489#issuecomment-416645946

Documentation PRs:

- Reference. https://github.com/rust-lang-nursery/reference/pull/362
- Nomicon. https://github.com/rust-lang-nursery/nomicon/pull/75

---

`#[panic_implementation]` was implemented recently in #50338. `#[panic_implementation]` is basically the old `panic_fmt` language item but in a less error prone (\*) shape. There are still some issues and questions to sort out around this feature (cf. #44489) but this PR is meant to start a discussion about those issues / questions with the language team.

(\*) `panic_fmt` was not type checked; changes in its function signature caused serious, silent binary size regressions like the one observed in #43054

Some unresolved questions from #44489:

> Should the Display of PanicInfo format the panic information as "panicked at 'reason',
> src/main.rs:27:4", as "'reason', src/main.rs:27:4", or simply as "reason".

The current implementation formats `PanicInfo` as the first alternative, which is how panic messages are formatted by the `std` panic handler. The `Display` implementation is more than a convenience: `PanicInfo.message` is unstable so it's not possible to replicate the `Display` implementation on stable.

> Is this design compatible, or can it be extended to work, with unwinding implementations for
> no-std environments?

I believe @whitequark made more progress with unwinding in no-std since their last comment in #44489. Perhaps they can give us an update?

---

Another unresolved question is where this feature should be documented. The feature currently doesn't have any documentation.

cc @rust-lang/lang
cc @jackpot51 @alevy @phil-opp
2018-09-08 09:23:45 +00:00
bors
06da917b01 Auto merge of #51885 - GuillaumeGomez:trait-impl-show-docs, r=Mark-Simulacrum,QuietMisdreavus
Trait impl show docs

Fixes #51834.

<img width="1440" alt="screen shot 2018-06-29 at 00 14 33" src="https://user-images.githubusercontent.com/3050060/42063323-6e6e8cc8-7b31-11e8-88ef-4dd2229df76c.png">

(You can see both commit changes in the screenshot 😄)

r? @QuietMisdreavus
2018-09-08 04:14:54 +00:00
Niko Matsakis
bb8c4c0db9 print less info to stabilize tests 2018-09-07 17:24:46 -04:00
Niko Matsakis
43e758798c avoid propagating outlives obligations on locals if we can 2018-09-07 17:08:22 -04:00
Niko Matsakis
db169e53e5 move annotate onto a method of UniversalRegions
This allows it to print out the "late-bound regions" from the closure
context more easily. Besides, all the state that is being printed it
is private to the `UniversalRegions`.
2018-09-07 17:08:21 -04:00
Eduard-Mihai Burtescu
e0e7cf303b rustc_resolve: only prepend CrateRoot to a non-keyword segment. 2018-09-07 23:23:51 +03:00
bors
fc81e36242 Auto merge of #53327 - wesleywiser:wip_optimize_nll, r=nikomatsakis
[nll] teach SCC about `'static`

r? @nikomatsakis

I think this is right? I am seeing better performance on the `html5ever` benchmark but I'd like a perf run to quantify the exact speedup. There's a few ui tests failing due to changes in the error messages. The main issue seems to be that returns aren't being detected correctly?

`mir_check_cast_unsize.rs` before:

```
error: unsatisfied lifetime constraints
  --> mir_check_cast_unsize.rs:17:46
   |
17 |   fn bar<'a>(x: &'a u32) -> &'static dyn Debug {
   |  ________--____________________________________^
   | |        |
   | |        lifetime `'a` defined here
18 | |     //~^ ERROR unsatisfied lifetime constraints
19 | |     x
20 | |     //~^ WARNING not reporting region error due to nll
21 | | }
   | |_^ return requires that `'a` must outlive `'static`
```

`mir_check_cast_unsize.rs` after:

```
error: unsatisfied lifetime constraints
  --> mir_check_cast_unsize.rs:19:5
   |
17 | fn bar<'a>(x: &'a u32) -> &'static dyn Debug {
   |        -- lifetime `'a` defined here
18 |     //~^ ERROR unsatisfied lifetime constraints
19 |     x
   |     ^ cast requires that `'a` must outlive `'static`
```
2018-09-07 17:56:23 +00:00
bors
24ef47bccf Auto merge of #53893 - petrochenkov:cfgexpr, r=pnkfelix
Validate syntax of `cfg` attributes

Fixes https://github.com/rust-lang/rust/issues/53298
2018-09-07 15:14:52 +00:00
bors
5a3292f163 Auto merge of #54021 - kennytm:rollup, r=kennytm
Rollup of 17 pull requests

Successful merges:

 - #53299 (Updated core/macros.rs to note it works in a no_std environment.)
 - #53376 (Cross reference io::copy and fs::copy in docs.)
 - #53455 (Individual docs for {from,to}_*_bytes)
 - #53550 (librustc_lint: In recursion warning, change 'recurring' to 'recursing')
 - #53860 (Migrate (some) of run-pass/ to ui)
 - #53874 (Implement Unpin for Box, Rc, and Arc)
 - #53895 (tidy: Cleanups and clippy warning fixes)
 - #53946 (Clarify `ManuallyDrop` docs)
 - #53948 (Minimized clippy test from when NLL disabled two-phase borrows)
 - #53959 (Add .git extension to submodule paths missing it)
 - #53966 (A few cleanups and minor improvements to mir/dataflow)
 - #53967 (propagate build.python into cmake)
 - #53979 (Remove `#[repr(transparent)]` from atomics)
 - #53991 (Add unchecked_shl/shr check for intrinsics to fix miri's test suit)
 - #53992 (migrate run-pass/borrowck to ui/run-pass)
 - #53994 (migrate run-pass/*/ to ui/run-pass)
 - #54023 (update clippy submodule)
2018-09-07 12:48:20 +00:00
Jorge Aparicio
358fc5b621 stabilize #[panic_handler] 2018-09-07 13:27:30 +02:00
kennytm
ba57ef116f
Rollup merge of #53994 - pnkfelix:issue-53764-migrate-run-pass-dirs-to-ui, r=alexcrichton
migrate run-pass/*/ to ui/run-pass

I think this is all that remains of #53764
2018-09-07 18:14:05 +08:00
kennytm
12b382648e
Rollup merge of #53992 - pnkfelix:issue-53764-migrate-run-pass-borrowck-to-ui, r=nikomatsakis
migrate run-pass/borrowck to ui/run-pass

Part of #53764
2018-09-07 18:14:02 +08:00
kennytm
dcca8e86b1
Rollup merge of #53991 - TimDiekmann:fix-unchecked-intrinsics, r=oli-obk
Add unchecked_shl/shr check for intrinsics to fix miri's test suit

r? @RalfJung

cc @oli-obk

#53697 broke miri's test suite as described in [this comment](https://github.com/rust-lang/rust/pull/53697#issuecomment-419034668). This PR adds test for the `unchecked_shr/shl` for the intrinsics.
2018-09-07 18:13:59 +08:00
kennytm
d70e055b66
Rollup merge of #53948 - pnkfelix:issue-52934-minimize-clippy-test, r=wesleywiser
Minimized clippy test from when NLL disabled two-phase borrows

(Of course anyone even skimming the test will realize that this is an *expansion* of a previously posted [minimization](https://github.com/rust-lang/rust/issues/52934#issuecomment-418144787).)

Fix #52934.
2018-09-07 18:13:47 +08:00
bors
7366752a61 Auto merge of #53830 - davidtwco:issue-53228, r=nikomatsakis
Add help message for missing IndexMut impl with NLL

Fixes #53228.

r? @nikomatsakis
2018-09-07 09:57:27 +00:00
kennytm
3792dbd013
Rollup merge of #53860 - pnkfelix:issue-53764-migrate-run-pass-to-ui, r=nikomatsakis
Migrate (some) of run-pass/ to ui

This is a step towards addressing #53764. Much still remains.

I went through a large portion of the `*.rs` files that were directly stored into `src/test/run-pass/` and moved them into various subdirectories of a newly created `src/test/ui/run-pass/`.

(yes, it would have perhaps been nice to meld it more directly with directories already in `src/test/ui/`; but the sad truth is that opens up the reality of filename collisions, and one of my short term goals for resolving #53764 is to keep the *filenames* invariant, even as their parents directories and contents are mildly revised...)
2018-09-07 15:26:42 +08:00
kennytm
1805f3c2fb
Rollup merge of #53550 - brson:recurring, r=estebank
librustc_lint: In recursion warning, change 'recurring' to 'recursing'

The existing wording seems incorrect.

Aside: This warning, 'function cannot return without recursing' is not perfectly clear - it implies that the function _can_ return, it's just got to recurse. But really the fn cannot return period. Clearer wording: 'function recurses infinitely; it cannot return'; or 'function is infinitely self-recursive; it cannot return, and this is probably an error'. I like that.
2018-09-07 15:26:40 +08:00
Wesley Wiser
b1211e8703 Fix tests 2018-09-06 22:57:05 -04:00
bors
ad7b22ef29 Auto merge of #54005 - eddyb:uniform-paths-self-resolve, r=petrochenkov
rustc_resolve: allow `use crate_name;` under `uniform_paths`.

Specifically, `use crate_name;` and `use crate_name::{self, ...};` are now allowed, whereas previously there would produce a (false positive) ambiguity error, as the ambiguity detection code was seeing the `crate_name` import as a locally-available definition to conflict with the crate.

r? @petrochenkov cc @aturon @joshtriplett @Centril
2018-09-06 23:29:56 +00:00
David Wood
0a8cf67e61
Added note referencing issue which added error. 2018-09-07 00:37:44 +02:00
Guillaume Gomez
d65c8636d9 Fix hover on impls 2018-09-06 23:32:30 +02:00
Jakub Kozlowski
4b7f2eb947 Fixup whitespace 2018-09-06 22:18:39 +01:00
bors
a8c11d216b Auto merge of #53575 - matthewjasper:unsized-is-an-error, r=estebank
Don't reduce E0161 to a warning in NLL migrate mode

This error has been on stable for a while, and allowing such code cause the compile to later ICE (since we can't codegen it). Errors `box UNSIZED EXPR` with unsized locals because it's not compatible with the current evaluation order (create the box before evaluating the expressions).

cc #53469 (fixes the ICE in this case)
cc @qnighy
2018-09-06 21:02:35 +00:00
Jorge Aparicio
6c4f3f512e update UI test 2018-09-06 23:01:35 +02:00
Mikhail Modin
527a29a5c6 Skip a shared borrow of a immutable local variables
issue #53643
2018-09-06 21:46:52 +01:00
Jorge Aparicio
9b764c3190 crates that provide a panic_handler are exempt from unused_extern_crates
fixes the *first* false positive reported in #53964
2018-09-06 21:24:33 +02:00
Eduard-Mihai Burtescu
31fce914b2 rustc_resolve: allow use crate_name; under uniform_paths. 2018-09-06 22:07:56 +03:00
Jakub Kozlowski
4088a385a7 Allow named lifetimes in async functions.
- Fixes #53174
2018-09-06 19:02:51 +01:00
Eduard-Mihai Burtescu
b9e7574bf2 rustc_codegen_llvm: don't assume offsets are always aligned. 2018-09-06 20:56:20 +03:00
ms2300
f4d4faaeed Fixing tests from anon -> opaque 2018-09-06 11:43:31 -06:00
bors
c318691407 Auto merge of #52626 - brunocodutra:issue-52475, r=oli-obk
Fix issue #52475: Make loop detector only consider reachable memory

As [suggested](https://github.com/rust-lang/rust/pull/51702#discussion_r197585664) by @oli-obk `alloc_id`s should be ignored by traversing all `Allocation`s in interpreter memory at a given moment in time, beginning by `ByRef` locals in the stack.

- [x] Generalize the implementation of `Hash` for `EvalSnapshot` to traverse `Allocation`s
- [x] Generalize the implementation of `PartialEq` for `EvalSnapshot` to traverse `Allocation`s
- [x] Commit regression tests

Fixes #52626
Fixes https://github.com/rust-lang/rust/issues/52849
2018-09-06 17:35:40 +00:00
Felix S. Klock II
4973094feb Allow illegal_floating_point_literal_pattern. These will need to be updated at some point.
Discussion can be found on rust-lang/rust#41620.
2018-09-06 14:55:24 +02:00
Felix S. Klock II
8e72955526 Allow unions_with_drop_fields for unions with members with destructors
(or generics that *might* have dtors)
2018-09-06 14:55:24 +02:00
Felix S. Klock II
84a02e17da Allow various name convention lints. 2018-09-06 14:55:21 +02:00
Felix S. Klock II
f3b766d7ad Add // run-pass to collection of tests. 2018-09-06 14:41:12 +02:00
Felix S. Klock II
76ceeddb2b Migrated remaining src/test/run-pass/ subdirectories to src/test/ui/run-pass/. 2018-09-06 14:36:26 +02:00