Permalink
Commits on Nov 20, 2018
  1. Auto merge of #55678 - Aaronepower:master, r=Mark-Simulacrum

    bors committed Nov 20, 2018
  2. Update releases to add rename dependencies feature

    Aaronepower committed Nov 20, 2018
  3. Auto merge of #56081 - alexcrichton:update-manifest, r=nrc

    bors committed Nov 20, 2018
    Add temporary renames to manifests for rustfmt/clippy
    
    This will be part of our strategy for shipping renamed versions of these
    components for the Rust 2018 edition.
    
    Closes #55967
  4. Auto merge of #55983 - oli-obk:static_, r=Mark-Simulacrum

    bors committed Nov 20, 2018
    Fix stability hole with `static _`
    
    The `underscore_const_names` only gated const items with `_` as the name.
    
    `static _: () = ();` works on beta without feature gates right now, this PR fixes that.
  5. Auto merge of #56049 - newpavlov:revert_51601, r=sfackler

    bors committed Nov 20, 2018
    Revert #51601
    
    Closes: #55985
    
    Specialization of `StepBy<Range(Inclusive)>` results in an incorrectly behaving code when `step_by` is combined with `skip` or `nth`.
    
    If this will get merged we probably should reopen issues previously closed by #51601 (if there was any).
Commits on Nov 19, 2018
  1. Add temporary renames to manifests for rustfmt/clippy

    alexcrichton committed Nov 19, 2018
    This will be part of our strategy for shipping renamed versions of these
    components for the Rust 2018 edition.
    
    Closes #55967
  2. Auto merge of #55971 - SergioBenitez:skip-non-semantic, r=alexcrichton

    bors committed Nov 19, 2018
    Ignore non-semantic tokens for 'probably_eq' streams.
    
    Improves the situation in #43081 by skipping typically non-semantic tokens when checking for 'probably_eq'.
    
    r? @alexcrichton
  3. Auto merge of #56060 - nrc:save-path-fallback, r=zackmdavis

    bors committed Nov 19, 2018
    save-analysis: fallback to using path id
    
    r? @eddyb
  4. Auto merge of #56051 - pietroalbini:rollup, r=pietroalbini

    bors committed Nov 19, 2018
    Rollup of 25 pull requests
    
    Successful merges:
    
     - #55562 (Add powerpc- and powerpc64-unknown-linux-musl targets)
     - #55564 (test/linkage-visibility: Ignore on musl targets)
     - #55827 (A few tweaks to iterations/collecting)
     - #55834 (Forward the ABI of the non-zero sized fields of an union if they have the same ABI)
     - #55857 (remove unused dependency)
     - #55862 (in which the E0618 "expected function" diagnostic gets a makeover)
     - #55867 (do not panic just because cargo failed)
     - #55894 (miri enum discriminant handling: Fix treatment of pointers, better error when it is undef)
     - #55916 (Make miri value visitor useful for mutation)
     - #55919 (core/tests/num: Simplify `test_int_from_str_overflow()` test code)
     - #55923 (reword #[test] attribute error on fn items)
     - #55949 (ty: return impl Iterator from Predicate::walk_tys)
     - #55952 (Update to Clang 7 on CI.)
     - #55953 (#53488 Refactoring UpvarId)
     - #55962 (rustdoc: properly calculate spans for intra-doc link resolution errors)
     - #55963 (Stress test for MPSC)
     - #55968 (Clean up some non-mod-rs stuff.)
     - #55970 (Miri backtrace improvements)
     - #56007 (CTFE: dynamically make sure we do not call non-const-fn)
     - #56011 (Replace data.clone() by Arc::clone(&data) in mutex doc.)
     - #56012 (avoid shared ref in UnsafeCell::get)
     - #56016 (Add VecDeque::resize_with)
     - #56027 (docs: Add missing backtick in object_safety.rs docs)
     - #56043 (remove "approx env bounds" if we already know from trait)
     - #56059 (Increase `Duration` approximate equal threshold to 1us)
  5. Rollup merge of #56059 - alexcrichton:fix-tests, r=sfackler

    kennytm committed Nov 19, 2018
    Increase `Duration` approximate equal threshold to 1us
    
    Previously this threshold when testing was 100ns, but the Windows
    documentation states:
    
    > which is a high resolution (<1us) time stamp
    
    which presumably means that we could have up to 1us resolution, which
    means that 100ns doesn't capture "equivalent" time intervals due to
    various bits of rounding here and there.
    
    It's hoped that this..
    
    Closes #56034
  6. Rollup merge of #56043 - nikomatsakis:issue-55756-via-outlives, r=eddyb

    pietroalbini authored and kennytm committed Nov 18, 2018
    remove "approx env bounds" if we already know from trait
    
    Alternative to #55988 that fixes #55756 -- smaller fix that I cannot see having (correctness) repercussions beyond the test at hand, and hence better for backporting. (Famous last words, I know.)
    
    r? @eddyb
  7. Rollup merge of #56027 - Xanewok:docs-backtick, r=QuietMisdreavus

    pietroalbini authored and kennytm committed Nov 18, 2018
    docs: Add missing backtick in object_safety.rs docs
    
    Closes #56019.
    
    r? @bjorn3
  8. Rollup merge of #56016 - scottmcm:vecdeque-resize-with, r=joshtriplett

    pietroalbini authored and kennytm committed Nov 18, 2018
    Add VecDeque::resize_with
    
    This already exists on `Vec`; I'm just adding it to `VecDeque`.
    
    I wanted to resize a `VecDeque<Vec<T>>` when I didn't know `T: Clone`, so I couldn't use `.resize(n, Vec::new())`.  With this I could do `.resize_with(n, Vec::new)` instead, which doesn't need `T: Clone`.
    
    Tracking issue: #41758
  9. Rollup merge of #56012 - RalfJung:unsafe-cell, r=nikomatsakis

    pietroalbini authored and kennytm committed Nov 18, 2018
    avoid shared ref in UnsafeCell::get
    
    Avoid taking a shared reference in `UnsafeCell::get`. This *should* be taking a raw reference (see rust-lang/rfcs#2582), but that operation is not currently available, so I propose we exploit `repr(transparent)` instead and cast the pointer around.
    
    This is required to make `UnsafeCell::get` pass the [stacked borrows implementation](https://www.ralfj.de/blog/2018/11/16/stacked-borrows-implementation.html) in miri (currently, `UnsafeCell::get` is on a whitelist, but that is of course not very satisfying). It shouldn't affect normal execution/codegen. Would be great if we could get this landed and shrink miri's whitelist!
    
    Cc @nikomatsakis
  10. Rollup merge of #56011 - CBenoit:master, r=QuietMisdreavus

    pietroalbini authored and kennytm committed Nov 18, 2018
    Replace data.clone() by Arc::clone(&data) in mutex doc.
    
    Arc::clone(&from) is considered as more idiomatic because it conveys more explicitly the meaning of the code.
    Since this clone is visible in the official documentation, I thought it could be better to use the more idiomatic version.
  11. Rollup merge of #56007 - RalfJung:non-const-call, r=oli-obk

    pietroalbini authored and kennytm committed Nov 18, 2018
    CTFE: dynamically make sure we do not call non-const-fn
    
    I'd love to have a test case for this, but I don't know how.
    
    I am also really surprised by this test case that changed behavior: Why did it even start execution if it already determined that it shouldn't?!?
    
    r? @oli-obk
  12. Rollup merge of #55970 - RalfJung:miri-backtrace, r=@oli-obk

    pietroalbini authored and kennytm committed Nov 18, 2018
    Miri backtrace improvements
    
    Nicer pretty-printing of the `RUST_CTFE_BACKTRACE`-backtraces:
    ```
      0: backtrace::backtrace::libunwind::trace::hc410fcb66fe85b11
               at /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/backtrace/libunwind.rs:53
         backtrace::backtrace::trace::h2106294a22648407
               at /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/backtrace/mod.rs:42
      1: backtrace::capture::Backtrace::new_unresolved::h5d8d98b993d092ba
               at /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:88
      2: <rustc::mir::interpret::error::EvalError<'tcx> as core::convert::From<rustc::mir::interpret::error::EvalErrorKind<'tcx, u64>>>::from::h6355269b2a661412
               at librustc/mir/interpret/error.rs:236
      3: <T as core::convert::Into<U>>::into::h70fcb917509539bd
               at /home/r/src/rust/rustc.2/src/libcore/convert.rs:455
      4: <rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, miri::Evaluator<'tcx>> as miri::fn_call::EvalContextExt<'tcx, 'mir>>::emulate_foreign_item::h9cde0e3ce7455a4a
               at src/fn_call.rs:292
      5: <rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, miri::Evaluator<'tcx>> as miri::fn_call::EvalContextExt<'tcx, 'mir>>::find_fn::h83f89524b9d1a49a
               at src/fn_call.rs:74
      6: <miri::Evaluator<'tcx> as rustc_mir::interpret::machine::Machine<'a, 'mir, 'tcx>>::find_fn::hf9980473c4775f0c
               at src/lib.rs:345
         rustc_mir::interpret::terminator::<impl rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, M>>::eval_fn_call::h401dec4a687f96e9
               at /home/r/src/rust/rustc.2/src/librustc_mir/interpret/terminator.rs:285
    ```
    Indentation is now consistent with `RUST_BACKTRACE`, and the frame number is not repeated when there are multiple symbols for a frame.
    
    Also preserve the `ty::Instance` for the internal backtrace (showing which frames in the user code where on the interpreter stack when the error happened), used by miri to avoid printing spans for libstd internals:
    ```
    error[E0080]: constant evaluation error: the evaluated program panicked
       --> /home/r/src/rust/rustc.2/src/libstd/panicking.rs:525:9
        |
    525 |         __rust_start_panic(obj as usize)
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked
        |
        = note: inside call to `std::panicking::rust_panic` at /home/r/src/rust/rustc.2/src/libstd/panicking.rs:496:5
        = note: inside call to `std::panicking::rust_panic_with_hook` at /home/r/src/rust/rustc.2/src/libstd/panicking.rs:390:5
        = note: inside call to `std::panicking::continue_panic_fmt` at /home/r/src/rust/rustc.2/src/libstd/panicking.rs:345:5
    note: inside call to `std::rt::begin_panic_fmt` at <::std::macros::panic macros>:8:1
       --> tests/compile-fail/panic.rs:4:5
        |
    4   |     assert_eq!(5, 6);
        |     ^^^^^^^^^^^^^^^^^
        = note: inside call to `main` at /home/r/src/rust/rustc.2/src/libstd/rt.rs:74:34
        = note: inside call to closure at /home/r/src/rust/rustc.2/src/libstd/rt.rs:59:75
        = note: inside call to closure at /home/r/src/rust/rustc.2/src/libstd/sys_common/backtrace.rs:136:5
        = note: inside call to `std::sys_common::backtrace::__rust_begin_short_backtrace::<[closure@DefId(1/1:1913 ~ std[78f0]::rt[0]::lang_start_internal[0]::{{closure}}[0]::{{closure}}[0]) 0:&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe], i32>` at /home/r/src/rust/rustc.2/src/libstd/rt.rs:59:13
        = note: inside call to closure at /home/r/src/rust/rustc.2/src/libstd/panicking.rs:310:40
        = note: inside call to `std::panicking::try::do_call::<[closure@DefId(1/1:1912 ~ std[78f0]::rt[0]::lang_start_internal[0]::{{closure}}[0]) 0:&&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe], i32>` at /home/r/src/rust/rustc.2/src/libstd/panicking.rs:306:5
        = note: inside call to `std::panicking::try::<i32, [closure@DefId(1/1:1912 ~ std[78f0]::rt[0]::lang_start_internal[0]::{{closure}}[0]) 0:&&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe]>` at /home/r/src/rust/rustc.2/src/libstd/panic.rs:398:9
        = note: inside call to `std::panic::catch_unwind::<[closure@DefId(1/1:1912 ~ std[78f0]::rt[0]::lang_start_internal[0]::{{closure}}[0]) 0:&&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe], i32>` at /home/r/src/rust/rustc.2/src/libstd/rt.rs:58:25
        = note: inside call to `std::rt::lang_start_internal` at /home/r/src/rust/rustc.2/src/libstd/rt.rs:74:5
        = note: inside call to `std::rt::lang_start::<()>`
    ```
    Also notice that we show filenames and line numbers here now.
    
    r? @oli-obk
  13. Rollup merge of #55968 - ehuss:non-mod-rs-tests, r=petrochenkov

    pietroalbini authored and kennytm committed Nov 18, 2018
    Clean up some non-mod-rs stuff.
    
    This includes the following:
    - Remove unused `non_modrs_mods` from `ParseSess` which as only used for feature gate diagnostics.
    - Remove the vestiges of the feature gate tests in `test/ui`, they were only partially removed during stabilization.
    - Fix the run-pass test, it was accidentally removed during stabilization.
    - Add a ui test to verify error behavior for missing inline-nested mods.
    - Add some tests for `#[path]` for inline-nested mods (both mod and non-mod-rs).
    - Enable the diagnostic tests on windows, they should be fixed by #49478.
    
    cc @cramertj
  14. Rollup merge of #55963 - stepancheg:mpsc-take-2, r=alexcrichton

    pietroalbini authored and kennytm committed Nov 18, 2018
    Stress test for MPSC
    
    `concurrent_recv_timeout_and_upgrade` reproduces a problem 100%
    times on my MacBook with command:
    
    ```
    ./x.py test --stage 0 ./src/test/run-pass/mpsc_stress.rs
    ```
    
    Thus it is commented out.
    
    Other tests cases were useful for catching another test cases
    which may arise during the fix.
    
    This diff is a part of my previous rewrite attempt: #42883
    
    CC #39364
  15. Rollup merge of #55962 - QuietMisdreavus:tricky-spans, r=GuillaumeGomez

    pietroalbini authored and kennytm committed Nov 18, 2018
    rustdoc: properly calculate spans for intra-doc link resolution errors
    
    Fixes #55723
    
    When rustdoc is reporting a resolution error for intra-doc links, it needs to convert a span from one relative to the *markdown* (as the links are only found on the final markdown text) to one relative to the *source code* (as the error reporting is meant to show where the line is in the source, so the user can fix it). However, a calculation for how much "offset" to apply had a subtle error: it trimmed the whole line when attempting to account for leading indentation. This caused it to add in *trailing* whitespace into this calculation, which created an incorrect span.
    
    In a lot of situations, this isn't a problem - the span will be shifted in the code slightly, but the warning will still be displayed and mostly legible. However, there is one important situation where this can cause an ICE: multi-byte codepoints. If a shifted span now has a starting point in the middle of a multi-byte codepoint, libsyntax will panic when trying to track what source item it corresponds to. This flew under our radar because trailing whitespace and multi-byte codepoints are both situations that we don't run into in the compiler repo.
    
    (There is one more situation where this can error, that will be much harder to fix: block-style doc comments. Lines in a block-style doc comment have a zero-or-more (usually one) character offset per line, causing this calculation to be way off. I'm punting that to another issue, though...)
  16. Rollup merge of #55953 - blitzerr:master, r=nikomatsakis

    pietroalbini authored and kennytm committed Nov 18, 2018
    #53488 Refactoring UpvarId
  17. Rollup merge of #55952 - michaelwoerister:newer-clang, r=alexcrichton

    pietroalbini authored and kennytm committed Nov 18, 2018
    Update to Clang 7 on CI.
    
    Handles Linux and macOS. Windows seems to already have been updated.
    
    r? @Mark-Simulacrum
    cc @rust-lang/infra
  18. Rollup merge of #55949 - ljedrz:return_impl_Iterator_from_Predicate_w…

    pietroalbini authored and kennytm committed Nov 18, 2018
    …alk_tys, r=oli-obk
    
    ty: return impl Iterator from Predicate::walk_tys
    
    Fixes the lazyboye `FIXME` by returning a custom `Iterator` as intended by the original author of the function.
    
    It is indeed a bit convoluted, so I'm ok with not changing this if perf results are not favourable enough. Also happy to adjust any names if need be.
  19. save-analysis: fallback to using path id

    nrc committed Nov 19, 2018
  20. Increase `Duration` approximate equal threshold to 1us

    alexcrichton committed Nov 19, 2018
    Previously this threshold when testing was 100ns, but the Windows
    documentation states:
    
    > which is a high resolution (<1us) time stamp
    
    which presumably means that we could have up to 1us resolution, which
    means that 100ns doesn't capture "equivalent" time intervals due to
    various bits of rounding here and there.
    
    It's hoped that this..
    
    Closes #56034
  21. Auto merge of #56042 - petrochenkov:nuni, r=petrochenkov

    bors committed Nov 19, 2018
    [nightly] resolve: Implement uniform paths 2.0
    
    Forward-port of #55884 to nightly.
    
    r? @ghost
Commits on Nov 18, 2018
  1. Rollup merge of #55923 - Zeegomo:master, r=estebank

    pietroalbini committed Nov 18, 2018
    reword #[test] attribute error on fn items
    
    fix of [#55787](#55787)
    Reworded error message from "#[test] attribute is only allowed on fn items" to "#[test] attribute is only allowed on non associated functions"
  2. Rollup merge of #55919 - Turbo87:num-tests, r=dtolnay

    pietroalbini committed Nov 18, 2018
    core/tests/num: Simplify `test_int_from_str_overflow()` test code
    
    This commit changes the test code to compare against easier-to-read, static values instead of relying on the result of `wrapping_add()` which may or may not result in the value that we expect.
  3. Rollup merge of #55916 - RalfJung:mut-visitor, r=oli-obk

    pietroalbini committed Nov 18, 2018
    Make miri value visitor usfeful for mutation
    
    ~~This is based on top of #55716, [click here](RalfJung/rust@escape-to-raw...RalfJung:mut-visitor) for just the new commits.~~
    
    r? @oli-obk
  4. Rollup merge of #55894 - RalfJung:validation-enums, r=oli-obk

    pietroalbini committed Nov 18, 2018
    miri enum discriminant handling: Fix treatment of pointers, better error when it is undef
    
    r? @oli-obk
  5. Rollup merge of #55867 - RalfJung:dont-panic, r=Mark-Simulacrum

    pietroalbini committed Nov 18, 2018
    do not panic just because cargo failed
    
    Currently, a rustc ICE during bootstrap shows *two* backtraces with `RUST_BACKTRACE`. Fix that by making bootstrap just exit when cargo fails. This matches what we do [when building a tool fails](https://github.com/rust-lang/rust/blob/master/src/bootstrap/tool.rs#L189) and [when other stuff (not called through `stream_cargo`, like `cargo test`) fails](https://github.com/rust-lang/rust/blob/master/src/build_helper/lib.rs#L43).
    
    Fixes #53379
  6. Rollup merge of #55862 - zackmdavis:but_will_they_come_when_you_call_…

    pietroalbini committed Nov 18, 2018
    …them, r=estebank
    
    in which the E0618 "expected function" diagnostic gets a makeover
    
    A woman of wisdom once told me, "Better late than never." (Can't reopen the previously-closed pull request from six months ago [due to GitHub limitations](#51098 (comment)).)
    
    Now the main span focuses on the erroneous not-a-function callee, while showing the entire call expression is relegated to a secondary span. In the case where the erroneous callee is itself a call, we
    point out the definition, and, if the call expression spans multiple lines, tentatively suggest a semicolon (because we suspect that the "outer" call is actually supposed to be a tuple).
    
    ![not_a_fn_1](https://user-images.githubusercontent.com/1076988/48309935-96755000-e538-11e8-9390-02a048abb0c2.png)
    
    ![not_a_fn_2](https://user-images.githubusercontent.com/1076988/48309936-98d7aa00-e538-11e8-8b9b-257bc77d6261.png)
    
    The new `bug!` assertion is, in fact, safe (`confirm_builtin_call` is only called by `check_call`, which is only called with a first arg of kind `ExprKind::Call` in `check_expr_kind`).
    
    Resolves #51055.
    
    r? @estebank
  7. Rollup merge of #55857 - andjo403:rmdep, r=Mark-Simulacrum

    pietroalbini committed Nov 18, 2018
    remove unused dependency
  8. Rollup merge of #55834 - ogoffart:union-abi, r=eddyb

    pietroalbini committed Nov 18, 2018
    Forward the ABI of the non-zero sized fields of an union if they have the same ABI
    
    This is supposed to fix the performence regression of using MaybeUninit in
    #54668
  9. Rollup merge of #55827 - ljedrz:various_stashed, r=alexcrichton

    pietroalbini committed Nov 18, 2018
    A few tweaks to iterations/collecting
    
    - simplify and speed up `dot::GraphWalk::nodes` for `cfg::CFG`
    - `reserve` the capacity for `edges` in `DepGraph::query`
    - collect directly to a `HirVec` in `LoweringContext::lower_attrs`
    - fix overallocation in `OnDiskCache::serialize`
    - preallocate the `new_partitioning` vector in `merge_codegen_units`
    - simplify `impl FromHex for str`
    - improve the creation of `self_arg_names` in `impl MethodDef`