Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 5 pull requests #62659

Merged
merged 13 commits into from
Jul 13, 2019
Merged

Rollup of 5 pull requests #62659

merged 13 commits into from
Jul 13, 2019

Commits on Jul 10, 2019

  1. Add an AtomicCell abstraction

    Zoxc committed Jul 10, 2019
    Configuration menu
    Copy the full SHA
    498bdc9 View commit details
    Browse the repository at this point in the history

Commits on Jul 11, 2019

  1. Configuration menu
    Copy the full SHA
    e1c7747 View commit details
    Browse the repository at this point in the history

Commits on Jul 12, 2019

  1. Replace struct_tail and struct_lockstep_tails with variants handl…

    …ing normalization.
    
    The old struct tail functions did not deal with `<T as Trait>::A` and `impl
    Trait`, at least not explicitly. (We didn't notice this bug before because it
    is only exposed when the tail (post deep normalization) is not `Sized`, so it
    was a rare case to deal with.)
    
    For post type-checking (i.e. during codegen), there is now
    `struct_tail_erasing_lifetimes` and `struct_lockstep_tails_erasing_lifetimes`,
    which each take an additional `ParamEnv` argument to drive normalization.
    
    For pre type-checking cases where normalization is not needed, there is
    `struct_tail_without_normalization`. (Currently, the only instance of this is
    `Expectation::rvalue_hint`.)
    
    All of these new entrypoints work by calling out to common helper routines.
    The helpers are parameterized over a closure that handles the normalization.
    pnkfelix committed Jul 12, 2019
    Configuration menu
    Copy the full SHA
    8f171c4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e4b8af5 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3c8279a View commit details
    Browse the repository at this point in the history
  4. rustbuild: Improve assert about building tools once

    In developing rust-lang#61557 I noticed that there were two parts of our tools
    that were rebuilt twice on CI. One was rustfmt fixed in rust-lang#61557, but
    another was Cargo. The actual fix for Cargo's double compile was
    rust-lang/cargo#7010 and took some time to propagate here. In an effort
    to continue to assert that Cargo is itself not compiled twice, I updated
    the assertion in rustbuild at the time of working on rust-lang#61557 but couldn't
    land it because the fix wouldn't be ready until the next bootstrap.
    
    The next bootstrap is now here, so the fix can now land! This does not
    change the behavior of rustbuild but it is intended to catch the
    previous iteration of compiling cargo twice. The main update here was to
    consider more files than those in `$target/release/deps` but also
    consider those in `$target/release`. That's where, for example,
    `libcargo.rlib` shows up and it's the file we learn about, and that's
    what we want to deduplicate.
    alexcrichton committed Jul 12, 2019
    Configuration menu
    Copy the full SHA
    278e5fd View commit details
    Browse the repository at this point in the history

Commits on Jul 13, 2019

  1. Configuration menu
    Copy the full SHA
    313ba7c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    199931c View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#62577 - Zoxc:atomic-cell, r=matthewjasper

    Add an AtomicCell abstraction
    
    Split out from rust-lang#61923.
    Centril authored Jul 13, 2019
    Configuration menu
    Copy the full SHA
    5e1891c View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#62585 - pnkfelix:issue-60431-make-struct-ta…

    …il-normalize-when-possible, r=eddyb
    
    Make struct_tail normalize when possible
    
    As noted in commit message: this replaces the existing methods to extract the struct tail(s) with new entry points that make the handling of normalization explicit.
    
    Most of the places that call `struct_tail` are during codegen, post type-checking, and therefore they can get away with using `tcx.normalize_erasing_regions` (this is the entry point `struct_tail_erasing_lifetimes`)
    
    For other cases that may arise, one can use the core method, which is parameterized over the normalization `Ty -> Ty` closure (`struct_tail_with_normalize`).
    
    Or one can use the trivial entry point that does not normalization (`struct_tail_without_normalization`)
    
    ----
    
    I spent a little while trying to make a test that exposed the bug via `impl Trait` rather than a projection, but I failed to find something that tripped up the current nightly `rustc`.
     * I have *not* spent any time trying to make tests that trip up the other places where `struct_tail` was previously being called. While I do think the task of making such tests could be worthwhile, I am simply running out of time. (Its also possible that the layout code is always the first point called, and thus it may be pointless to try to come up with such tests.)
    
    I also spent a little time discussing with @eddyb where this code should live. They suggested moving `struct_tail` and its sibling `struct_lockstep_tails` to the `LayoutCx`.  But in the interest of time, I have left that refactoring (which may be questionable at this point) to a follow-up task.
    
    ----
    
    Fix rust-lang#60431
    Centril authored Jul 13, 2019
    Configuration menu
    Copy the full SHA
    833dada View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#62604 - estebank:unemitted-err-ice, r=pnkfelix

    Handle errors during error recovery gracefully
    
    Fix rust-lang#62546.
    Centril authored Jul 13, 2019
    Configuration menu
    Copy the full SHA
    4fe6e63 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#62636 - alexcrichton:assert-build-cargo-onc…

    …e, r=Mark-Simulacrum
    
    rustbuild: Improve assert about building tools once
    
    In developing rust-lang#61557 I noticed that there were two parts of our tools
    that were rebuilt twice on CI. One was rustfmt fixed in rust-lang#61557, but
    another was Cargo. The actual fix for Cargo's double compile was
    rust-lang/cargo#7010 and took some time to propagate here. In an effort
    to continue to assert that Cargo is itself not compiled twice, I updated
    the assertion in rustbuild at the time of working on rust-lang#61557 but couldn't
    land it because the fix wouldn't be ready until the next bootstrap.
    
    The next bootstrap is now here, so the fix can now land! This does not
    change the behavior of rustbuild but it is intended to catch the
    previous iteration of compiling cargo twice. The main update here was to
    consider more files than those in `$target/release/deps` but also
    consider those in `$target/release`. That's where, for example,
    `libcargo.rlib` shows up and it's the file we learn about, and that's
    what we want to deduplicate.
    Centril authored Jul 13, 2019
    Configuration menu
    Copy the full SHA
    bafddd4 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#62651 - matthewjasper:rustc-macro-hygiene, …

    …r=petrochenkov
    
    Make some rustc macros more hygienic
    Centril authored Jul 13, 2019
    Configuration menu
    Copy the full SHA
    791ceb6 View commit details
    Browse the repository at this point in the history