1. 10 11月, 2016 18 次提交
    • E
      Show one error for duplicated type definitions · 43aed325
      Esteban Küber 提交于
      For the following code:
      
      ```rustc
      struct Bar;
      struct Bar;
      
      fn main () {
      }
      ```
      
      show
      
      ```nocode
      error[E0428]: a type named `Bar` has already been defined in this module
        --> src/test/compile-fail/E0428.rs:12:1
         |
      11 | struct Bar;
         | ----------- previous definition of `Bar` here
      12 | struct Bar;
         | ^^^^^^^^^^^
      
      error: aborting due to previous error
      ```
      
      instead of
      
      ```nocode
      error[E0428]: a type named `Bar` has already been defined in this module
        --> src/test/compile-fail/E0428.rs:12:1
         |
      11 | struct Bar;
         | ----------- previous definition of `Bar` here
      12 | struct Bar;
         | ^^^^^^^^^^^
      
      error[E0428]: a value named `Bar` has already been defined in this module
        --> src/test/compile-fail/E0428.rs:12:1
         |
      11 | struct Bar;
         | ----------- previous definition of `Bar` here
      12 | struct Bar;
         | ^^^^^^^^^^^
      
      error: aborting due to 2 previous errors
      ```
      43aed325
    • B
      Auto merge of #37670 - eddyb:rollup, r=eddyb · da2ce227
      bors 提交于
      Rollup of 15 pull requests
      
      - Successful merges: #36868, #37134, #37229, #37250, #37370, #37428, #37432, #37472, #37524, #37614, #37622, #37627, #37636, #37644, #37654
      - Failed merges: #37463, #37542, #37645
      da2ce227
    • E
      Rollup merge of #37654 - michaelwoerister:test-let-ich, r=nikomatsakis · 60c74b76
      Eduard-Mihai Burtescu 提交于
      ICH: Add tests for let- and match-expressions.
      
      r? @nikomatsakis
      60c74b76
    • E
      Rollup merge of #37644 - nrc:save-derive-span, r=eddyb · a41a87eb
      Eduard-Mihai Burtescu 提交于
      save-analysis: don't choke on stripped doc attributes
      a41a87eb
    • E
      Rollup merge of #37636 - karpinski:issue-34915, r=nikomatsakis · 3292f407
      Eduard-Mihai Burtescu 提交于
      Marking the 'no-stack-check' codegen option as deprecated (Issue #34915)
      
      Attempts to finish resolving issue #34915. Based on pull request #35156, which was closed due to inactivity.
      3292f407
    • E
      Rollup merge of #37627 - GuillaumeGomez:missing_urls_bis, r=frewsxcv · e0894caf
      Eduard-Mihai Burtescu 提交于
      Add missing urls and few local rewrites
      
      r? @steveklabnik
      e0894caf
    • E
      Rollup merge of #37622 - ollie27:cstring, r=alexcrichton · aad4f29f
      Eduard-Mihai Burtescu 提交于
      Slightly optimise CString
      
      Avoid a reallocation in CString::from and CStr::to_owned.
      aad4f29f
    • E
      Rollup merge of #37614 - keeperofdakeys:proc_macro, r=jseyfried · 5ebd7c50
      Eduard-Mihai Burtescu 提交于
      macros 1.1: Allow proc_macro functions to declare attributes to be mark as used
      
      This PR allows proc macro functions to declare attribute names that should be marked as used when attached to the deriving item. There are a few questions for this PR.
      
      - Currently this uses a separate attribute named `#[proc_macro_attributes(..)]`, is this the best choice?
      - In order to make this work, the `check_attribute` function had to be modified to not error on attributes marked as used. This is a pretty large change in semantics, is there a better way to do this?
      - I've got a few clones where I don't know if I need them (like turning `item` into a `TokenStream`), can these be avoided?
      - Is switching to `MultiItemDecorator` the right thing here?
      
      Also fixes https://github.com/rust-lang/rust/issues/37563.
      5ebd7c50
    • E
      Rollup merge of #37524 - alexcrichton:vendor, r=brson · 3d2ffa06
      Eduard-Mihai Burtescu 提交于
      Vendor all rustbuild dependencies in this repo
      
      This commit vendors all crates.io dependencies into the rust-lang/rust repository using the `cargo-vendor` tool. This is done in an effort to make rustbuild distro-ready by ensuring that our source tarballs are self-contained units which don't need extraneous network downloads.
      
      A new `src/vendor` directory is created with all vendored crates, and Cargo, when using rustbuild, is configured to use this directory. Over time we can deduplicate this directory with the actual src tree (e.g. src/librustc_serialize, src/liblibc, src/libgetopts, ...). For now though that's left to a separate commit.
      3d2ffa06
    • E
      Rollup merge of #37472 - joshtriplett:doc-fmt-write-io-write, r=brson · e10e49d8
      Eduard-Mihai Burtescu 提交于
      Document convention for using both fmt::Write and io::Write
      
      Using a trait's methods (like `Write::write_fmt` as used in `writeln!` and other macros) requires importing that trait directly (not just the module containing it).  Both `fmt::Write` and `io::Write` provide compatible `Write::write_fmt` methods, and code can use `writeln!` and other macros on both an object implementing `fmt::Write` (such as a `String`) and an object implementing `io::Write` (such as `Stderr`).  However, importing both `Write` traits produces an error due to the name conflict.
      
      The convention I've seen renames both of them on import, to `FmtWrite` and `IoWrite` respectively.  Document that convention in the Rust documentation for `write!` and `writeln!`, with examples.
      e10e49d8
    • E
      Rollup merge of #37432 - achanda:send_to, r=alexcrichton · d7128822
      Eduard-Mihai Burtescu 提交于
      Clarify that send_to might panic in certain cases
      
      Closes #34202
      
      r? @alexcrichton
      d7128822
    • E
      Rollup merge of #37428 - estebank:generic-type-error-span, r=sanxiyn · bd9969fb
      Eduard-Mihai Burtescu 提交于
      Point to type argument span when used as trait
      
      Given the following code:
      
      ``` rust
      struct Foo<T: Clone>(T);
      
      use std::ops::Add;
      
      impl<T: Clone, Add> Add for Foo<T> {
        type Output = usize;
      
        fn add(self, rhs: Self) -> Self::Output {
          unimplemented!();
        }
      }
      ```
      
      present the following output:
      
      ``` nocode
      error[E0404]: `Add` is not a trait
       --> file3.rs:5:21
        |
      5 | impl<T: Clone, Add> Add for Okok<T> {
        |                ---  ^^^ expected trait, found type parameter
        |                |
        |                type parameter defined here
      ```
      
      Fixes #35987.
      bd9969fb
    • E
      Rollup merge of #37370 - estebank:signature-2-empire-strikes-back, r=nikomatsakis · 7f2853fd
      Eduard-Mihai Burtescu 提交于
      Include type of missing trait methods in error
      
      Provide either a span pointing to the original definition of missing
      trait items, or a message with the inferred definitions.
      
      Fixes #24626. Follow up to PR #36371.
      
      If PR #37369 lands, missing trait items that present a multiline span will be able to show the entirety of the item definition on the error itself, instead of just the first line.
      7f2853fd
    • E
      Rollup merge of #37250 - liigo:rustdoc-unsafe-fns, r=steveklabnik · 6c7b4337
      Eduard-Mihai Burtescu 提交于
      rustdoc: mark unsafe fns in module page with superscript icons
      
      Note: I'v changed the mark style. Now use superscript (U+26A0) (the old one is '[Unsafe]' literal).
      Basically per https://botbot.me/mozilla/rust-docs/2016-10-19/?msg=75112017&page=1
      
      ![unsafe-fn-icon](https://cloud.githubusercontent.com/assets/346530/19633650/7f6e1eea-99e6-11e6-8d09-31aec83e46a5.png)
      
      ![unsafe-fn](https://cloud.githubusercontent.com/assets/346530/19472050/39daded2-9558-11e6-9148-3cb12afd1c9a.png)
      6c7b4337
    • E
      Rollup merge of #37229 - nnethercote:FxHasher, r=nikomatsakis · dc8ac267
      Eduard-Mihai Burtescu 提交于
      Replace FNV with a faster hash function.
      
      Hash table lookups are very hot in rustc profiles and the time taken within `FnvHash` itself is a big part of that. Although FNV is a simple hash, it processes its input one byte at a time. In contrast, Firefox has a homespun hash function that is also simple but works on multiple bytes at a time. So I tried it out and the results are compelling:
      
      ```
      futures-rs-test  4.326s vs  4.212s --> 1.027x faster (variance: 1.001x, 1.007x)
      helloworld       0.233s vs  0.232s --> 1.004x faster (variance: 1.037x, 1.016x)
      html5ever-2016-  5.397s vs  5.210s --> 1.036x faster (variance: 1.009x, 1.006x)
      hyper.0.5.0      5.018s vs  4.905s --> 1.023x faster (variance: 1.007x, 1.006x)
      inflate-0.1.0    4.889s vs  4.872s --> 1.004x faster (variance: 1.012x, 1.007x)
      issue-32062-equ  0.347s vs  0.335s --> 1.035x faster (variance: 1.033x, 1.019x)
      issue-32278-big  1.717s vs  1.622s --> 1.059x faster (variance: 1.027x, 1.028x)
      jld-day15-parse  1.537s vs  1.459s --> 1.054x faster (variance: 1.005x, 1.003x)
      piston-image-0. 11.863s vs 11.482s --> 1.033x faster (variance: 1.060x, 1.002x)
      regex.0.1.30     2.517s vs  2.453s --> 1.026x faster (variance: 1.011x, 1.013x)
      rust-encoding-0  2.080s vs  2.047s --> 1.016x faster (variance: 1.005x, 1.005x)
      syntex-0.42.2   32.268s vs 31.275s --> 1.032x faster (variance: 1.014x, 1.022x)
      syntex-0.42.2-i 17.629s vs 16.559s --> 1.065x faster (variance: 1.013x, 1.021x)
      ```
      
      (That's a stage1 compiler doing debug builds. Results for a stage2 compiler are similar.)
      
      The attached commit is not in a state suitable for landing because I changed the implementation of FnvHasher without changing its name (because that would have required touching many lines in the compiler). Nonetheless, it is a good place to start discussions.
      
      Profiles show very clearly that this new hash function is a lot faster to compute than FNV. The quality of the new hash function is less clear -- it seems to do better in some cases and worse in others (judging by the number of instructions executed in `Hash{Map,Set}::get`).
      
      CC @brson, @arthurprs
      dc8ac267
    • E
      Rollup merge of #37134 - GuillaumeGomez:display_tag, r=steveklabnik · 2321d11b
      Eduard-Mihai Burtescu 提交于
      Print more tags in rustdoc
      
      r? @steveklabnik
      
      cc @frewsxcv
      
      A little screenshot:
      
      <img width="1440" alt="screen shot 2016-10-13 at 01 41 53" src="https://cloud.githubusercontent.com/assets/3050060/19331745/873cd71e-90e6-11e6-88f8-715668366a3f.png">
      2321d11b
    • E
      Rollup merge of #36868 - petrochenkov:adtstab, r=nikomatsakis · f4332092
      Eduard-Mihai Burtescu 提交于
      Partially stabilize RFC 1506 "Clarify relationships between ADTs"
      
      Lifted restrictions on tuple structs/variants are stabilized, i.e. `S{..}` can be used with any structs and empty tuple structs are permitted without feature gate.
      Numeric fields in struct expressions/patterns `S { 0: a, 1: b }` are **NOT** stabilized.
      This was implemented 1.5 months ago in Rust 1.12, but this is a tiny technical change that could probably go even without RFC/stabilization period.
      
      cc https://github.com/rust-lang/rust/issues/35626 https://github.com/rust-lang/rust/pull/36871
      r? @nikomatsakis
      f4332092
    • B
      Auto merge of #36520 - estebank:dataless-enum, r=brson · bca365e6
      bors 提交于
      Reword error when data-less enum variant called as function
      
      Given a file like:
      
      ``` rust
      enum Test {
          Variant,
          Variant2 {a: u32},
      }
      
      fn main(){
          let x = Test::Variant("Hello");
          let y = Test::Variant2("World");
      }
      ```
      
      Both errors now look similar:
      
      ``` bash
      error[E0423]: `Test::Variant2` is the name of a struct or struct variant, but this expression uses it like a function name
        --> file3.rs:10:13
         |
      10 |     let y = Test::Variant2("Hello");
         |             ^^^^^^^^^^^^^^ struct called like a function
         |
         = help: did you mean to write: `Test::Variant2 { /* fields */ }`?
      
      error: `Test::Variant` is the name of a data-less enum, but this expression uses it like a function name
       --> file3.rs:9:13
        |
      9 |     let x = Test::Variant("World");
        |             ^^^^^^^^^^^^^^^^^^^^^^ data-less enum called like a function
        |
        = help: did you mean to write: `Test::Variant`?
      note: defined here
       --> file3.rs:2:5
        |
      2 |     Variant,
        |     ^^^^^^^
      
      error: aborting due to previous error
      ```
      
      Re: #28533
      bca365e6
  2. 09 11月, 2016 21 次提交
  3. 08 11月, 2016 1 次提交
    • A
      rustbuild: Tweak for vendored dependencies · 31a8638e
      Alex Crichton 提交于
      A few changes are included here:
      
      * The `winapi` and `url` dependencies were dropped. The source code for these
        projects is pretty weighty, and we're about to vendor them, so let's not
        commit to that intake just yet. If necessary we can vendor them later but for
        now it shouldn't be necessary.
      
      * The `--frozen` flag is now always passed to Cargo, obviating the need for
        tidy's `cargo_lock` check.
      
      * Tidy was updated to not check the vendor directory
      
      Closes #34687
      31a8638e