1. 19 8月, 2019 7 次提交
  2. 18 8月, 2019 19 次提交
    • B
      Auto merge of #63635 - oli-obk:default-slice-dangles, r=eddyb · ea52be48
      bors 提交于
      Do not generate allocations for zero sized allocations
      
      Alternative to https://github.com/rust-lang/rust/issues/62487
      
      r? @EddyB
      
      There are other places where we could do this, too, but that would cause `static FOO: () = ();` to not have a unique address
      ea52be48
    • G
      Better error message for break in async blocks. · 1e02bc62
      Giles Cope 提交于
      1e02bc62
    • B
      Auto merge of #63269 - Aaron1011:feature/proc-macro-data, r=eddyb,petrochenkov · 71e28829
      bors 提交于
      Serialize additional data for procedural macros
      
      Split off from #62855
      
      This PR serializes the declaration `Span` and attributes for all
      procedural macros. This allows Rustdoc to properly render doc comments
      and source links when performing inlinig procedural macros across crates
      71e28829
    • B
      Auto merge of #62948 - matklad:failable-file-loading, r=petrochenkov · ef1ecbef
      bors 提交于
      Normalize newlines when loading files
      
      Fixes #62865
      ef1ecbef
    • B
      Auto merge of #61708 - dlrobertson:or-patterns-0, r=centril · fc8765d6
      bors 提交于
      Initial implementation of or-patterns
      
      An incomplete implementation of or-patterns (e.g. `Some(0 | 1)` as a pattern). This patch set aims to implement initial parsing of `or-patterns`.
      
      Related to: #54883
      
      CC @alexreg @varkor
      r? @Centril
      fc8765d6
    • B
      Auto merge of #63671 - Centril:rollup-zufavt5, r=Centril · bd1da18b
      bors 提交于
      Rollup of 5 pull requests
      
      Successful merges:
      
       - #62451 (Add APIs for uninitialized Box, Rc, and Arc. (Plus get_mut_unchecked))
       - #63487 (Remove meaningless comments in src/test)
       - #63657 (Crank up invalid value lint)
       - #63667 (resolve: Properly integrate derives and `macro_rules` scopes)
       - #63669 (fix typos in mir/interpret)
      
      Failed merges:
      
      r? @ghost
      bd1da18b
    • M
      Rollup merge of #63669 - Dante-Broggi:patch-1, r=jonas-schievink · 4ec97034
      Mazdak Farrokhzad 提交于
      fix typos in mir/interpret
      4ec97034
    • M
      Rollup merge of #63667 - petrochenkov:deriveholders, r=matthewjasper · b60f245b
      Mazdak Farrokhzad 提交于
      resolve: Properly integrate derives and `macro_rules` scopes
      
      So,
      ```rust
      #[derive(A, B)]
      struct S;
      
      m!();
      ```
      turns into something like
      ```rust
      struct S;
      
      A_placeholder!( struct S; );
      
      B_placeholder!( struct S; );
      
      m!();
      ```
      during expansion.
      
      And for `m!()` its "`macro_rules` scope" (aka "legacy scope") should point to the `B_placeholder` call rather than to the derive container `#[derive(A, B)]`.
      
      `fn build_reduced_graph` now makes sure the legacy scope points to the right thing.
      (It's still a mystery for me why this worked before https://github.com/rust-lang/rust/pull/63535.)
      
      Unfortunately, placeholders from derives are currently treated separately from placeholders from other macros and need to be passed as `extra_placeholders` rather than a part of the AST fragment.
      That's fixable, but I wanted to keep this PR more minimal to close the regression faster.
      
      Fixes https://github.com/rust-lang/rust/issues/63651
      r? @matthewjasper
      b60f245b
    • M
      Rollup merge of #63657 - RalfJung:invalid_value, r=Centril · a00b4f14
      Mazdak Farrokhzad 提交于
      Crank up invalid value lint
      
      * Warn against uninit `bool` and `char`.
      * Warn against 0-init `NonNull` and friends
      * Detect transmute-from-0 as zero-initialization ([seen in the wild](https://github.com/glium/glium/issues/1775#issuecomment-522144636))
      a00b4f14
    • M
      Rollup merge of #63487 - sd234678:remove-meaningless-comments-in-src/test-2, r=Centril · a3964341
      Mazdak Farrokhzad 提交于
      Remove meaningless comments in src/test
      
      Moved from #63411
      a3964341
    • M
      Rollup merge of #62451 - SimonSapin:new_uninit, r=RalfJung · a3b6e8ef
      Mazdak Farrokhzad 提交于
      Add APIs for uninitialized Box, Rc, and Arc. (Plus get_mut_unchecked)
      
      Assigning `MaybeUninit::<Foo>::uninit()` to a local variable is usually free, even when `size_of::<Foo>()` is large. However, passing it for example to `Arc::new` [causes at least one copy](https://youtu.be/F1AquroPfcI?t=4116) (from the stack to the newly allocated heap memory) even though there is no meaningful data. It is theoretically possible that a Sufficiently Advanced Compiler could optimize this copy away, but this is [reportedly unlikely to happen soon in LLVM](https://youtu.be/F1AquroPfcI?t=5431).
      
      This PR proposes two sets of features:
      
      * Constructors for containers (`Box`, `Rc`, `Arc`) of `MaybeUninit<T>` or `[MaybeUninit<T>]` that do not initialized the data, and unsafe conversions to the known-initialized types (without `MaybeUninit`). The constructors are guaranteed not to make unnecessary copies.
      
      * On `Rc` and `Arc`, an unsafe `get_mut_unchecked` method that provides `&mut T` access without checking the reference count. `Arc::get_mut` involves multiple atomic operations whose cost can be non-trivial. `Rc::get_mut` is less costly, but we add `Rc::get_mut_unchecked` anyway for symmetry with `Arc`.
      
        These can be useful independently, but they will presumably be typical when the new constructors of `Rc` and `Arc` are used.
      
        An alternative with a safe API would be to introduce `UniqueRc` and `UniqueArc` types that have the same memory layout as `Rc` and `Arc` (and so zero-cost conversion to them) but are guaranteed to have only one reference. But introducing entire new types feels “heavier” than new constructors on existing types, and initialization of `MaybeUninit<T>` typically requires unsafe code anyway.
      
      Summary of new APIs (all unstable in this PR):
      
      ```rust
      impl<T> Box<T> { pub fn new_uninit() -> Box<MaybeUninit<T>> {…} }
      impl<T> Box<MaybeUninit<T>> { pub unsafe fn assume_init(self) -> Box<T> {…} }
      impl<T> Box<[T]> { pub fn new_uninit_slice(len: usize) -> Box<[MaybeUninit<T>]> {…} }
      impl<T> Box<[MaybeUninit<T>]> { pub unsafe fn assume_init(self) -> Box<[T]> {…} }
      
      impl<T> Rc<T> { pub fn new_uninit() -> Rc<MaybeUninit<T>> {…} }
      impl<T> Rc<MaybeUninit<T>> { pub unsafe fn assume_init(self) -> Rc<T> {…} }
      impl<T> Rc<[T]> { pub fn new_uninit_slice(len: usize) -> Rc<[MaybeUninit<T>]> {…} }
      impl<T> Rc<[MaybeUninit<T>]> { pub unsafe fn assume_init(self) -> Rc<[T]> {…} }
      
      impl<T> Arc<T> { pub fn new_uninit() -> Arc<MaybeUninit<T>> {…} }
      impl<T> Arc<MaybeUninit<T>> { pub unsafe fn assume_init(self) -> Arc<T> {…} }
      impl<T> Arc<[T]> { pub fn new_uninit_slice(len: usize) -> Arc<[MaybeUninit<T>]> {…} }
      impl<T> Arc<[MaybeUninit<T>]> { pub unsafe fn assume_init(self) -> Arc<[T]> {…} }
      
      impl<T: ?Sized> Rc<T> { pub unsafe fn get_mut_unchecked(this: &mut Self) -> &mut T {…} }
      impl<T: ?Sized> Arc<T> { pub unsafe fn get_mut_unchecked(this: &mut Self) -> &mut T {…} }
      ```
      a3b6e8ef
    • R
      test in a way that works even with musl · 3288be51
      Ralf Jung 提交于
      3288be51
    • D
      size has a zero · d64f06ce
      Dante-Broggi 提交于
      d64f06ce
    • S
      Doc nit · 9bd70834
      Simon Sapin 提交于
      Co-Authored-By: NRalf Jung <post@ralfj.de>
      9bd70834
    • D
      fix typos · a7c34f1c
      Dante-Broggi 提交于
      a7c34f1c
    • V
      resolve/expand: Rename some things for clarity · 1064d41c
      Vadim Petrochenkov 提交于
      1064d41c
    • B
      Auto merge of #63658 - RalfJung:miri-op, r=oli-obk · 2111aed0
      bors 提交于
      Refactor Miri ops (unary, binary) to have more types
      
      This is the part of https://github.com/rust-lang/rust/pull/63448 that is just a refactoring. It helps that PR by making it easier to perform machine arithmetic.
      
      r? @oli-obk @EddyB
      2111aed0
    • V
      d479ff2f
    • A
      Serialize additional data for procedural macros · 64f867ae
      Aaron Hill 提交于
      Split off from #62855
      
      This PR deerializes the declaration `Span` and attributes for all
      procedural macros from their underlying function definitions.
      This allows Rustdoc to properly render doc comments
      and source links when inlining procedural macros across crates
      64f867ae
  3. 17 8月, 2019 14 次提交