1. 03 11月, 2018 6 次提交
    • S
      Rename `BoundTyIndex` to `BoundVar` · 3dd303aa
      scalexm 提交于
      3dd303aa
    • S
      Shift both late bound regions and bound types · d0447550
      scalexm 提交于
      d0447550
    • S
      Move `BoundTy` to `ty::TyKind` · 1003b7f8
      scalexm 提交于
      1003b7f8
    • B
      Auto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum · 757d6cc9
      bors 提交于
      Bump cargo-vendor version
      
      Currently we pin `cargo-vendor` to 0.1.4, which doesn't set the `User-Agent` HTTP header. crates.io is going to require that header in the near future, so this PR bumps the pinned version of the crate to the latest one (which correctly sets the header).
      
      r? @Mark-Simulacrum
      cc @sgrif
      757d6cc9
    • B
      Auto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis · 3fc70e8d
      bors 提交于
      Take 2: Implement object-safety and dynamic dispatch for arbitrary_self_types
      
      This replaces #50173. Over the months that that PR was open, we made a lot of changes to the way this was going to be implemented, and the long, meandering comment thread and commit history would have been confusing to people reading it in the future. So I decided to package everything up with new, straighforward commits and open a new PR.
      
      Here are the main points. Please read the commit messages for details.
      
      - To simplify codegen, we only support receivers that have the ABI of a pointer. That means they are builtin pointer types, or newtypes thereof.
      - We introduce a new trait: `DispatchFromDyn<T>`, similar to `CoerceUnsized<T>`. `DispatchFromDyn` has extra requirements that `CoerceUnsized` does not: when you implement `DispatchFromDyn` for a struct, there cannot be any extra fields besides the field being coerced and `PhantomData` fields. This ensures that the struct's ABI is the same as a pointer.
      - For a method's receiver (e.g. `self: Rc<Self>`) to be object-safe, it needs to have the following property:
          - let `DynReceiver` be the receiver when `Self = dyn Trait`
          - let `ConcreteReceiver` be the receiver when `Self = T`, where `T` is some unknown `Sized` type that implements `Trait`, and is the erased type of the trait object.
          - `ConcreteReceiver` must implement `DispatchFromDyn<DynReceiver>`
      
      In the case of `Rc<Self>`, this requires `Rc<T>: DispatchFromDyn<Rc<dyn Trait>>`
      
      These rules are explained more thoroughly in the doc comment on `receiver_is_dispatchable` in object_safety.rs.
      
      r? @nikomatsakis and @EddyB
      
      cc @arielb1 @cramertj @withoutboats
      
      Special thanks to @nikomatsakis for getting me un-stuck when implementing the object-safety checks, and @EddyB for helping with the codegen parts.
      
      EDIT 2018-11-01: updated because CoerceSized has been replaced with DispatchFromDyn
      3fc70e8d
    • B
      Auto merge of #55087 - levex:e0669-improve-span, r=nagisa · 8b096314
      bors 提交于
      rustc: improve E0669 span
      
      E0669 refers to an operand that cannot be coerced into a single LLVM
      value, unfortunately right now this uses the Span for the entire inline
      assembly statement, which is less than ideal.
      
      This commit preserves the Span from HIR, which lets us emit the error
      using the Span for the operand itself in MIR.
      
      r? @nagisa
      cc/ @parched
      8b096314
  2. 02 11月, 2018 31 次提交
  3. 01 11月, 2018 3 次提交