1. 15 1月, 2017 7 次提交
    • B
      Auto merge of #39052 - alexcrichton:fix-rebuild, r=brson · 7a526ca0
      bors 提交于
      rustbuild: Skip the build_helper crate in tests
      
      I've been noticing some spurious recompiles of the final stage on Travis lately
      and in debugging them I found a case where we were a little to eager to update
      a stamp file due to the build_helper library being introduced during the testing
      phase.
      
      Part of the rustbuild system detects when libstd is recompiled and automatically
      cleans out future directories to ensure that dirtyness propagation works. To do
      this rustbuild doesn't know the artifact name of the standard library so it just
      probes everything in the target directory, looking to see if anything changed.
      
      The problem here happened where:
      
      * First, rustbuild would compile everything (a normal build)
      * Next, rustbuild would run all tests
      * During testing, the libbuild_helper library was introduced into the target
        directory, making it look like a change happened because a file is newer
        than the newest was before
      * Detecting a change, the next compilation would then cause rustbuild to clean
        out old artifacts and recompile everything again.
      
      This commit fixes this problem by correcting rustbuild to just not test the
      build_helper crate at all. This crate doesn't have any unit tests, nor is it
      intended to. That way the target directories should stay the same throughout
      testing after a previous build.
      7a526ca0
    • B
      Auto merge of #39045 - redox-os:process_try_wait, r=brson · d274e554
      bors 提交于
      Add try_wait to Redox process
      
      This implements Process::try_wait on Redox
      d274e554
    • B
      Auto merge of #39040 - estebank:relevant-impl-multiline, r=nikomatsakis · 4f0508af
      bors 提交于
      Use multiline Diagnostic for "relevant impl" list
      
      Provide the following output:
      
      ```
      error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied
        --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8
         |
      38 |     f1.foo(1usize);
         |        ^^^ the trait `Foo<usize>` is not implemented for `Bar`
         |
         = help: the following implementations were found:
                   <Bar as Foo<i8>>
                   <Bar as Foo<i16>>
                   <Bar as Foo<i32>>
                   <Bar as Foo<u8>>
                 and 2 others
      
      error: aborting due to previous error
      ```
      
      instead of
      
      ```
      error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied
        --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8
         |
      38 |     f1.foo(1usize);
         |        ^^^ the trait `Foo<usize>` is not implemented for `Bar`
         |
         = help: the following implementations were found:
         = help:   <Bar as Foo<i8>>
         = help:   <Bar as Foo<i16>>
         = help:   <Bar as Foo<i32>>
         = help:   <Bar as Foo<u8>>
         = help: and 2 others
      
      error: aborting due to previous error
      ```
      4f0508af
    • B
      Auto merge of #39026 - alexcrichton:more-less-cross-stage0, r=aturon · bf6d7b66
      bors 提交于
      rustbuild: Actually don't build stage0 target rustc
      
      This was attempted in #38853 but erroneously forgot one more case of where the
      compiler was compiled. This commit fixes that up and adds a test to ensure this
      doesn't sneak back in.
      bf6d7b66
    • B
      Auto merge of #39020 - michaelwoerister:dep-graph-dfs-caching, r=nikomatsakis · ebe9682a
      bors 提交于
      incr.comp.: Add some caching to Predecessors construction.
      
      This speeds up the "serialize dep graph" pass for libsyntax from 45 secs to 15 secs on my machine. Still far from ideal, but things will get better when we change the metadata hashing strategy.
      
      The `CACHING_THRESHOLD` value of 60 has been arrived at experimentally. It seemed to give the best speedup.
      
      r? @nikomatsakis
      ebe9682a
    • B
      Auto merge of #38992 - nagisa:i128-minvallit, r=eddyb · 93e70ecb
      bors 提交于
      Fix two const-eval issues related to i128 negation
      
      First issue here was the fact that we’d only allow negating integers in i64 range in case the
      integer was not infered yes. While this is not the direct cause of the issue, its still good to fix
      it.
      
      The real issue here is the code handling specifically the `min_value` literals. While I128_OVERFLOW
      has the expected value (0x8000_..._0000), match using this value as a pattern is handled
      incorrectly by the stage1 compiler (it seems to be handled correctly, by the stage2 compiler). So
      what we do here is extract this pattern into an explicit `==` until the next snapshot.
      
      Fixes #38987
      93e70ecb
    • B
      Auto merge of #38982 - clarcharr:expect_err, r=aturon · 2f9dedb5
      bors 提交于
      expect_err for Result.
      
      This adds an `expect_err` method to `Result`. Considering how `unwrap_err` already exists, this seems to make sense. Inconsistency noted in Manishearth/rust-clippy#1435.
      2f9dedb5
  2. 14 1月, 2017 19 次提交
    • B
      Auto merge of #38952 - nrc:save-impl-fix, r=eddyb · d4b063de
      bors 提交于
      save-analysis: handle paths in type/trait context more correctly
      
      TBH, this is still not perfect, witness the FIXME, but it is an improvement. In particular it means we get information about trait references in impls.
      d4b063de
    • B
      Auto merge of #38944 - michaelwoerister:incr-generics-partitioning, r=nikomatsakis · ef04fc82
      bors 提交于
      trans: Treat generics like regular functions, not like #[inline] function, during CGU partitioning
      
      This PR makes generics be treated just like regular functions during CGU partitioning:
      
      + the function instantiation is placed in a codegen unit based on the function's DefPath,
      + unless it is marked with `#[inline]`  -- which causes a private copy of the function to be placed in every referencing codegen unit.
      
      This has the following effects:
      + Multi codegen unit builds will become faster because code for generic functions is duplicated less.
      + Multi codegen unit builds might have lower runtime performance, since generics are not available for inlining automatically any more.
      + Single codegen unit builds are not affected one way or the other.
      
      This partitioning scheme is particularly good for incremental compilation as it drastically reduces the number of false positives during codegen unit invalidation.
      
      I'd love to have a benchmark suite for estimating the effect on runtime performance for changes like this one.
      
      r? @nikomatsakis
      
      cc @rust-lang/compiler
      ef04fc82
    • B
      Auto merge of #38935 - redox-os:fix_path_redox, r=brson · b4c02071
      bors 提交于
      Fix is_absolute on Redox
      
      Due to not using prefixes on Redox, yet, it must be added as an exception to Path::is_absolute.
      b4c02071
    • B
      Auto merge of #38927 - petrochenkov:leven, r=jseyfried · 7d82d95a
      bors 提交于
      resolve: Levenshtein-based suggestions for non-import paths
      
      This patch addresses both items from https://github.com/rust-lang/rust/issues/30197#issuecomment-264846000 and therefore implements the largest part of https://github.com/rust-lang/rust/issues/30197.
      
      r? @jseyfried
      7d82d95a
    • B
      Auto merge of #38914 - est31:tidy-gate-tests, r=nikomatsakis · 6fe23719
      bors 提交于
      Make tidy check for lang gate tests
      
      Add gate tests to the checks that tidy performs. Excerpt from the commit message of the main commit:
      
          Require compile-fail tests for new lang features
      
          Its non trivial to test lang feature gates, and people
          forget to add such tests. So we extend the features lint
          of the tidy tool to ensure that all new lang features
          contain a new compile-fail test.
      
          Of course, one could drop this requirement and just
          grep all tests in run-pass for #![feature(abc)] and
          then run this test again, removing the mention,
          requiring that it fails.
      
          But this only tests for the existence of a compilation
          failure. Manual tests ensure that also the correct lines
          spawn the error, and also test the actual error message.
      
          For library features, it makes no sense to require such
          a test, as here code is used that is generic for all
          library features.
      
      The tidy lint extension now checks the compile-fail test suite for occurences of "gate-test-X" where X is a feature. Alternatively, it also accepts file names with the form "feature-gate-X.rs". If a lang feature is found that has no such check, we emit a tidy error.
      
      I've applied the markings to all tests I could find in the test suite. I left a small (20 elements) whitelist of features that right now have no gate test, or where I couldn't find one. Once this PR gets merged, I'd like to close issue #22820 and open a new one on suggestion of @nikomatsakis to track the removal of all elements from that whitelist (already have a draft). Writing such a small test can be a good opportunity for a first contribution, so I won't touch it (let others have the fun xD).
      
      cc @brson , @pnkfelix (they both discussed about this in the issue linked above).
      6fe23719
    • B
      Auto merge of #39021 - alexcrichton:try-debug-travis, r=brson · b13cc05c
      bors 提交于
      travis: Attempt to debug OSX linker segfaults
      
      This commit attempts to debug the segfaults that we've been seeing on OSX on
      Travis. I have no idea what's going on here mostly, but let's try to look at
      core dumps and get backtraces to see what's going on. This commit itself is
      mostly a complete shot in the dark, I'm not sure if this even works...
      
      cc #38878
      b13cc05c
    • B
      Auto merge of #38854 - Mark-Simulacrum:immediate-refactor, r=eddyb · d70cd490
      bors 提交于
      Simplify type_is_immediate and type_is_fat_ptr
      
      r? @EddyB
      d70cd490
    • B
      Auto merge of #39030 - GuillaumeGomez:rollup, r=GuillaumeGomez · 77898817
      bors 提交于
      Rollup of 10 pull requests
      
      - Successful merges: #38362, #38636, #38877, #38946, #38965, #38986, #38994, #38995, #39024, #39027
      - Failed merges:
      77898817
    • B
      Avoid using load/stores on first class aggregates · 43cf5b92
      Björn Steinbrink 提交于
      LLVM usually prefers using memcpys over direct loads/store of first
      class aggregates. The check in type_is_immediate to mark certain small
      structs was originally part of the code to handle such immediates in
      function arguments, and it had a counterpart in load_ty/store_ty to
      actually convert small aggregates to integers.
      
      But since then, the ABI handling has been refactored and takes care of
      converting small aggregates to integers. During that refactoring, the
      code to handle small aggregates in load_ty/store_ty has been removed,
      and so we accidentally started using loads/stores on FCA values.
      
      Since type_is_immediate() is no longer responsible for ABI-related
      conversions, and using a memcpy even for small aggregates is usually
      better than performing a FCA load/store, we can remove that code part
      and only handle simple types as immediates there.
      
      This integrates PR #38906 onto this branch.
      
      Fixes #38906.
      43cf5b92
    • A
      rustbuild: Skip the build_helper crate in tests · 36a926a2
      Alex Crichton 提交于
      I've been noticing some spurious recompiles of the final stage on Travis lately
      and in debugging them I found a case where we were a little to eager to update
      a stamp file due to the build_helper library being introduced during the testing
      phase.
      
      Part of the rustbuild system detects when libstd is recompiled and automatically
      cleans out future directories to ensure that dirtyness propagation works. To do
      this rustbuild doesn't know the artifact name of the standard library so it just
      probes everything in the target directory, looking to see if anything changed.
      
      The problem here happened where:
      
      * First, rustbuild would compile everything (a normal build)
      * Next, rustbuild would run all tests
      * During testing, the libbuild_helper library was introduced into the target
        directory, making it look like a change happened because a file is newer
        than the newest was before
      * Detecting a change, the next compilation would then cause rustbuild to clean
        out old artifacts and recompile everything again.
      
      This commit fixes this problem by correcting rustbuild to just not test the
      build_helper crate at all. This crate doesn't have any unit tests, nor is it
      intended to. That way the target directories should stay the same throughout
      testing after a previous build.
      36a926a2
    • J
      Add try_wait to Redox process · b10e0616
      Jeremy Soller 提交于
      b10e0616
    • J
      Fix is_absolute on Redox · ca2ade1d
      Jeremy Soller 提交于
      ca2ade1d
    • C
      expect_err for Result. · e520b77e
      Clar Charr 提交于
      e520b77e
    • V
      589bd649
    • E
      Use multiline Diagnostic for "relevant impl" list · d04c027e
      Esteban Küber 提交于
      Provide the following output:
      
      ```
      error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied
        --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8
         |
      38 |     f1.foo(1usize);
         |        ^^^ the trait `Foo<usize>` is not implemented for `Bar`
         |
         = help: the following implementations were found:
                   <Bar as Foo<i8>>
                   <Bar as Foo<i16>>
                   <Bar as Foo<i32>>
                   <Bar as Foo<u8>>
                 and 2 others
      
      error: aborting due to previous error
      ```
      
      instead of
      
      ```
      error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied
        --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8
         |
      38 |     f1.foo(1usize);
         |        ^^^ the trait `Foo<usize>` is not implemented for `Bar`
         |
         = help: the following implementations were found:
         = help:   <Bar as Foo<i8>>
         = help:   <Bar as Foo<i16>>
         = help:   <Bar as Foo<i32>>
         = help:   <Bar as Foo<u8>>
         = help: and 2 others
      
      error: aborting due to previous error
      ```
      d04c027e
    • B
      Auto merge of #39036 - aidanhs:aphs-robust-docker, r=alexcrichton · 87809628
      bors 提交于
      Remove strictly-unnecessary flags for docker
      
      cc #39035
      
      In addition to `--tty` I've removed `--interactive` as I don't think there's any reason for it to be there (it only hooks up stdin, which shouldn't be used anyway).
      
      If this looks like it's working over a few days then I'll also alter the libc scripts.
      
      r? @alexcrichton
      87809628
    • S
      update mailmap · 9dedc815
      Steve Klabnik 提交于
      9dedc815
    • A
      Remove strictly-unnecessary flags for docker · 8539ce84
      Aidan Hobson Sayers 提交于
      8539ce84
    • B
      Auto merge of #38890 - petrochenkov:noresolve, r=nrc · 1d5fb06c
      bors 提交于
      resolve: Do not use "resolve"/"resolution" in error messages
      
      Use less jargon-y wording instead.
      `cannot find <struct> <S> in <this scope>` and `cannot find <struct> <S> in <module a::b>` are used for base messages (this also harmonizes nicely with "you can import it into scope" suggestions) and `not found in <this scope>` and `not found in <a::b>` are used for short labels in fall-back case.
      I tweaked some other diagnostics to avoid using "resolve" (see, e.g., `librustc_resolve/macros.rs`), but haven't touched messages for imports.
      
      Closes https://github.com/rust-lang/rust/issues/38750
      r? @nrc
      1d5fb06c
  3. 13 1月, 2017 14 次提交