Commits on Mar 2, 2018
  1. Auto merge of #48653 - Manishearth:rollup2, r=Manishearth

    bors committed Mar 2, 2018
    Another rollup
Commits on Mar 1, 2018
  1. Auto merge of #47861 - sgrif:sg-rebase-chalkify-universe-refactorings…

    bors committed Mar 1, 2018
    …, r=nikomatsakis
    Rebased refactorings for Chalk
    The code is Niko's, I just handled the rebase.
    r? @nikomatsakis
  2. Rollup merge of #48570 - Amanieu:aarch64_features, r=alexcrichton

    kennytm authored and Manishearth committed Mar 1, 2018
    Add AArch64 features to whitelist
  3. Rollup merge of #48626 - teiesti:fix-readme, r=frewsxcv

    Manishearth committed Mar 1, 2018
    Fix link to rustc guide in
    This is a follow-up to #48479 and fixes a minor bug with the link to the rustc guide in the README.
    r? @nikomatsakis
    cc @mark-i-m
  4. Rollup merge of #48610 - ishitatsuyuki:ishitatsuyuki-patch-1, r=nikom…

    Manishearth committed Mar 1, 2018
    Add regression test for #48551
    [Issue link](#48551)
  5. Rollup merge of #48585 - stjepang:stabilize-localkey-try_with, r=alex…

    Manishearth committed Mar 1, 2018
    Stabilize LocalKey::try_with
    The `LocalKey::try_with` method is now stabilized.
    `LocalKey::state` and `LocalKeyState` marked as deprecated. Although, is there any reason to keep them - should we perhaps remove them completely?
    Closes #27716
    r? @alexcrichton
  6. Rollup merge of #48572 - alexcrichton:noexcept-msvc2, r=eddyb

    Manishearth committed Mar 1, 2018
    rustc: Tweak funclet cleanups of ffi functions
    This commit is targeted at addressing #48251 by specifically fixing a case where
    a longjmp over Rust frames on MSVC runs cleanups, accidentally running the
    "abort the program" cleanup as well. Added in #46833 `extern` ABI functions in
    Rust will abort the process if Rust panics, and currently this is modeled as a
    normal cleanup like all other destructors.
    Unfortunately it turns out that `longjmp` on MSVC is implemented with SEH, the
    same mechanism used to implement panics in Rust. This means that `longjmp` over
    Rust frames will run Rust cleanups (even though we don't necessarily want it
    to). Notably this means that if you `longjmp` over a Rust stack frame then that
    probably means you'll abort the program because one of the cleanups will abort
    the process.
    After some discussion on IRC it turns out that `longjmp` doesn't run cleanups
    for *caught* exceptions, it only runs cleanups for cleanup pads. Using this
    information this commit tweaks the codegen for an `extern` function to
    a catch-all clause for exceptions instead of a cleanup block. This catch-all is
    equivalent to the C++ code:
        try {
        } catch (...) {
    and in fact our codegen here is designed to match exactly what clang emits for
    that C++ code!
    With this tweak a longjmp over Rust code will no longer abort the process. A
    longjmp will continue to "accidentally" run Rust cleanups (destructors) on MSVC.
    Other non-MSVC platforms will not rust destructors with a longjmp, so we'll
    probably still recommend "don't have destructors on the stack", but in any case
    this is a more surgical fix than #48567 and should help us stick to standard
    personality functions a bit longer.
  7. Rollup merge of #48522 - etaoins:fix-find-width-of-character-at-span-…

    Manishearth committed Mar 1, 2018
    …bounds-check, r=estebank
    Fix find_width_of_character_at_span bounds check
    Commit 0bd9667 added bounds checking of our current target byte position to prevent infinite loops. Unfortunately it was comparing the file-relative `target` versus the global `file_start_pos` and `file_end_pos`.
    The result is failing to detect multibyte characters unless their file-relative offset fit within their global offset. This causes other parts of the compiler to generate spans pointing to the middle of a
    multibyte character which will ultimately panic in `bytepos_to_file_charpos`.
    Fix by comparing the `target` to the total file size when moving forward and doing checked subtraction when moving backwards. This should preserve the intent of the bounds check while removing the offset confusion.
    cc @davidtwco
    Fixes #48508
  8. Rollup merge of #48500 - petrochenkov:parpat, r=nikomatsakis

    Manishearth committed Mar 1, 2018
    Support parentheses in patterns under feature gate
    This is a prerequisite for any other extensions to pattern syntax - `|` with multiple patterns, type ascription, `..PAT` in slice patterns.
    Closes rust-lang/rfcs#554
  9. Rollup merge of #48446 - mark-i-m:e0245, r=mark-i-m

    Manishearth committed Mar 1, 2018
    Remove E0245; improve E0404
    Fix #36337
    Somehow this is currently breaking --explain, but I don't understand how.
    r? @estebank
  10. Rollup merge of #48405 - kennytm:autotoolstate-follow-up, r=Mark-Simu…

    Manishearth committed Mar 1, 2018
    Auto-toolstate management follow-up.
    Tracking comment: #45861 (comment)
    * Fixed rust-lang-nursery/rust-toolstate#1, a proper link to the PR will be included.
    * Fixed rust-lang-nursery/rust-toolstate#2, a comment will be posted to the PR if the toolstate changed
    * Toolstate regression will be rejected at the last week of the 6-week cycle (currently entirely date-based).
    * Implemented, moved doc tests of Nomicon, Reference, Rust-by-Example and The Book to the "tools" job and thus allowed to fail like other external tools.
  11. Bump ena

    sgrif committed Feb 28, 2018
  12. Fix breakage in rustdoc

    sgrif committed Feb 27, 2018
  13. Fix bad rebase

    sgrif committed Feb 26, 2018
  14. Re-add some removed uses of `Kind`

    sgrif committed Jan 29, 2018
    Additional uses of this item were added to these files in #45701 and #46479
  15. Remove dead code

    sgrif committed Jan 29, 2018
    These modules were replaced with re-exports from ena
  16. change skolemizations to use universe index

    sgrif committed Jan 29, 2018
    These changes were meant to be in
    2b18d8f (rebased from
    12a2305), but I messed up the rebase a
    bit as the file had been moved.
  17. fix tests in `librustc_driver`

    nikomatsakis authored and sgrif committed Oct 31, 2017
  18. fix tidy error

    nikomatsakis authored and sgrif committed Oct 31, 2017
  19. remove unnecessary clause propagating divergence

    nikomatsakis authored and sgrif committed Jul 16, 2017
    This should not be needed: the new variable will be related to the old
    ones, so if they are constrained, so is the new variable; if they are
    not, and hence default to diverging, so will the new variable.
  20. obtain `UnificationTable` and `snapshot_vec` from `ena` instead

    nikomatsakis authored and sgrif committed Jul 16, 2017
    The ena version has an improved interface. I suspect
    `librustc_data_structures` should start migrating out to in
  21. kill supporting code from type-variable defaults

    nikomatsakis authored and sgrif committed Jul 16, 2017
    This was all unused anyway.
  22. make `Default` Copy and Clone

    nikomatsakis authored and sgrif committed Jul 15, 2017
  23. introduce `UniverseIndex` into `ParamEnv`

    nikomatsakis authored and sgrif committed Jul 15, 2017
    Always using root environment for now.
  24. add some comments to `Obligation`

    nikomatsakis authored and sgrif committed Jul 15, 2017
  25. introduce `Universe` struct

    nikomatsakis authored and sgrif committed Jul 15, 2017
  26. Auto merge of #46785 - leodasvacas:type-check-defaults-at-declaration…

    bors committed Mar 1, 2018
    …, r=nikomatsakis
    [Underspecified semantics] Type check defaults at declaration.
    Fixes  #46669. See the test for code that compiles on stable but will no longer compile. This falls under a "Underspecified language semantics" fix. **Needs crater**.
    On type and trait declarations, we currently allow anything that name checks as a type parameter default. That allows the user to write a default that can never be applied, or even a default that may conditionally be applied depending on the type of another parameter. Mostly this just defers the error to use sites, but also allows clever hacks such as `Foo<T, U = <T as Iterator>::Item>` where `U` will be able to apply it's default only when `T: Iterator`. Maybe that means this bug is a feature, but it's a fiddly behaviour that seems undesirable.
    This PR validates defaults at declaration sites by ensuring all predicates on the parameter are valid for the default. With the exception of `Self: Sized` which we don't want to check to allow things like `trait Add<RHS = Self>`.
  27. Add ignore-pretty for

    etaoins committed Mar 1, 2018
    The out-of-line module #37195