Commit Graph

85593 Commits

Author SHA1 Message Date
Michael Hewson
192900e7c2 Add CoerceSized impls throughout libstd
This will make receiver types like `Rc<Self>` and `Pin<&mut Self>`
object-safe.
2018-11-01 18:16:22 -04:00
Michael Hewson
9f59da2864 Implement object-safety for arbitrary_self_types: part 2
For now, all of the receivers that we care about are just a newtyped
pointer — i.e. `Box<Self>`, `Rc<Self>`, `Pin<Box<Self>>`, `Pin<&mut
Self>`. This is much simpler to implement in codeine than the more
general case, because the ABI is the same as a pointer. So we add some
checks in typeck/coherence/builtin.rs to make sure that implementors of
CoerceSized are just newtyped pointers. In this commit, we also
implement the codegen bits.
2018-11-01 18:15:20 -04:00
Michael Hewson
d5c2c4a433 Implement the object-safety checks for arbitrary_self_types: part 1
For a trait method to be considered object-safe, the receiver type must
satisfy certain properties: first, we need to be able to get the vtable
to so we can look up the method, and second, we need to convert the
receiver from the version where `Self=dyn Trait`, to the version where
`Self=T`, `T` being some unknown, `Sized` type that implements `Trait`.

To check that the receiver satisfies those properties, we use the
following query:

forall (U) {
if (Self: Unsize<U>) {
Receiver[Self => U]: CoerceSized<Receiver>
}
}

where `Receiver` is the receiver type of the method (e.g. `Rc<Self>`),
and `Receiver[Self => U]` is the receiver type where `Self = U`, e.g.
`Rc<U>`.

forall queries like this aren’t implemented in the trait system yet, so
for now we are using a bit of a hack — see the code for explanation.
2018-11-01 18:15:19 -04:00
Michael Hewson
be80a79a1e Add CoerceSized trait and lang item
This trait is more-or-less the reverse of CoerceUnsized, and will be
used for object-safety checks. Receiver types like `Rc` will have to
implement `CoerceSized` so that methods that use `Rc<Self>` as the
receiver will be considered object-safe.
2018-11-01 18:15:19 -04:00
Michael Hewson
a920036f4f move some code around to avoid query cycles 2018-11-01 18:15:19 -04:00
Michael Hewson
d14af130f6 Make all object-safety methods require a global TyCtxt 2018-11-01 18:15:19 -04:00
Nick Cameron
d0778ac88e publish-toolstate: ping maintainers when a tool builds again
And add @Xanewok as an RLS maintainer
2018-11-02 10:38:05 +13:00
Manish Goregaokar
ecf27d3018 Update clippy 2018-11-01 13:58:07 -07:00
Nikita Popov
d794597698 Remove checks for LLVM < 4.0
While we still have to support LLVM 4.0 for Emscripten, we can
drop checks for LLVM >= 4.0 and < 4.0.
2018-11-01 21:09:02 +01:00
QuietMisdreavus
0fe6aae49a buffer errors from initial tokenization when parsing 2018-11-01 11:57:29 -05:00
bors
451987d86c Auto merge of #55579 - pietroalbini:rollup, r=kennytm
Rollup of 13 pull requests

Successful merges:

 - #55280 (Add libproc_macro to rust-src distribution)
 - #55469 (Regression tests for issue #54477.)
 - #55504 (Use vec![x; n] instead of iter::repeat(x).take(n).collect())
 - #55522 (use String::from() instead of format!() macro to construct Strings.)
 - #55536 (Pass suggestions as impl Iterator instead of Vec)
 - #55542 (syntax: improve a few allocations)
 - #55558 (Tweak `MatcherPos::matches`)
 - #55561 (Fix double_check tests on big-endian targets)
 - #55573 (Make sure the `aws` executable is in $PATH on macOS)
 - #55574 (Use `SmallVec` within `MoveData`.)
 - #55575 (Fix invalid_const_promotion test on some archs)
 - #55578 (Made doc example of `impl Default for …` use `-> Self` instead of explicit self type)
 - #55582 (Remove unused import copy from publish_toolstate.py)
2018-11-01 16:06:15 +00:00
kennytm
f76a8e3b86
Rollup merge of #55578 - regexident:fix/self, r=frewsxcv
Made doc example of `impl Default for …` use `-> Self` instead of explicit self type

There is no need to state the explicit type of `self`.
2018-11-01 22:56:36 +08:00
kennytm
1a25f22c80
Rollup merge of #55561 - smaeul:test-fixes, r=alexcrichton
Fix double_check tests on big-endian targets

Since the enums get optimized down to 1 byte long, the bits set in the `usize` member don't align with the `enum` values on big-endian machines. Avoid this issue by shrinking the integer member to the
same size as the enums.
2018-11-01 22:56:12 +08:00
kennytm
9550bc06dc
Rollup merge of #55582 - yamaguchi1024:publish_toolstate, r=alexcrichton
Remove unused import copy from publish_toolstate.py
2018-11-01 22:55:49 +08:00
kennytm
aa525b3914
Rollup merge of #55573 - kennytm:macos-aws, r=alexcrichton
Make sure the `aws` executable is in $PATH on macOS

Fixes #55571
2018-11-01 22:54:16 +08:00
QuietMisdreavus
8a3b5e99ad silence errors found during doctest pre-parsing 2018-11-01 09:52:28 -05:00
QuietMisdreavus
d6d8c6bd71 add a line between extracted crates and everything else 2018-11-01 09:52:28 -05:00
QuietMisdreavus
f36ed5b58d add env-logger to error-index-generator 2018-11-01 09:52:28 -05:00
Wesley Norris
cd407dfe74 Separates inner attributes from code during doctest parsing. 2018-11-01 09:52:28 -05:00
Wesley Norris
43b65b51e0 Tidy up source file and fix typo. 2018-11-01 09:52:27 -05:00
Wesley Norris
b79fdb8e3c Replaces fn main search and extern crate search with proper parsing. 2018-11-01 09:52:27 -05:00
Pietro Albini
8f4b86d1e7
Rollup merge of #55575 - parched:trap, r=RalfJung
Fix invalid_const_promotion test on some archs

On at least AArch64 `llvm.trap` raises SIGTRAP.

r? @RalfJung
2018-11-01 22:52:21 +08:00
Pietro Albini
7e80177299
Rollup merge of #55574 - nnethercote:gather_move-SmallVec, r=michaelwoerister
Use `SmallVec` within `MoveData`.

This reduces allocation counts significantly in a few benchmarks, reducing instruction counts by up to 2%.
2018-11-01 22:52:19 +08:00
Pietro Albini
15958ca9ff
Rollup merge of #55558 - nnethercote:tweak-MatcherPos-matches, r=petrochenkov
Tweak `MatcherPos::matches`

These changes reduce instruction counts on `sentry-cli-check` incremental builds by up to 2%.
2018-11-01 22:52:17 +08:00
Pietro Albini
133ba2d063
Rollup merge of #55542 - ljedrz:syntax_alloc_improvements, r=kennytm
syntax: improve a few allocations

Add 2 `reserve`s and a `with_capacity` where the final vector size is known.
2018-11-01 22:52:15 +08:00
Pietro Albini
912f00c187
Rollup merge of #55536 - ljedrz:don't_collect_suggestions, r=davidtwco
Pass suggestions as impl Iterator instead of Vec

This avoids some allocations when throwing errors, making failing faster ^^.
2018-11-01 22:52:13 +08:00
Pietro Albini
1e1d37b637
Rollup merge of #55522 - matthiaskrgr:no_format, r=zackmdavis
use String::from() instead of format!() macro to construct Strings.
2018-11-01 22:52:11 +08:00
Yuka Takahashi
7fd98df963 Remove unused import copy from publish_toolstate.py 2018-11-01 14:52:00 +01:00
Alex Gaynor
36fe3b605a Fixes #46775 -- don't mutate the process's environment in Command::exec
Instead, pass the environment to execvpe, so the kernel can apply it directly to the new process. This avoids a use-after-free in the case where exec'ing the new process fails for any reason, as well as a race condition if there are other threads alive during the exec.
2018-11-01 12:51:24 +00:00
Pietro Albini
876841267b
Rollup merge of #55504 - ljedrz:simpler_repeated_elements, r=oli-obk
Use vec![x; n] instead of iter::repeat(x).take(n).collect()

It's shorter and possibly easier to optimize.
2018-11-01 11:55:22 +01:00
Pietro Albini
38435b1401
Rollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis
Regression tests for issue #54477.

At some point someone may want to revisit PR #53564

it would be really good to have regression tests for #54477 before that happens. :)
2018-11-01 11:55:20 +01:00
Pietro Albini
5b00095137
Rollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum
Add libproc_macro to rust-src distribution

Fixes #55279
2018-11-01 11:55:19 +01:00
Vincent Esche
0d38b0ec9a Made doc example of impl Default for … use -> Self instead of explicit self type 2018-11-01 11:52:44 +01:00
Nicholas Nethercote
0e5d7d2322 Use SmallVec within MoveData.
This reduces allocation counts significantly in a few benchmarks,
reducing instruction counts by up to 2%.
2018-11-01 19:03:56 +11:00
kennytm
a85467748f
Make sure the installed awscli is found on macOS. 2018-11-01 15:30:30 +08:00
bors
f6e9a6e41c Auto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum
Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations
2018-11-01 06:26:28 +00:00
Alex Burka
273930e59f test that rustdoc doesn't overflow on a big enum 2018-11-01 04:02:43 +00:00
Alex Burka
9dd2c89066 enforce unused-must-use lint in macros 2018-11-01 03:32:45 +00:00
bors
c613d26ee2 Auto merge of #55521 - nrc:rls-fix, r=petrochenkov
save-analysis: bug fix and optimisation.

The first commit fixes a bug in name resolution and save-analysis (introduced in #54145) and removes an unused parameter. This fixes the RLS tests, which are currently blocking distribution of the RLS. The second commit removes macro uses from save-analysis data, since these are never used, they just take up space.

r? @petrochenkov
2018-11-01 02:41:00 +00:00
Samuel Holland
283f2be142 Fix double_check tests on big-endian targets
Since the enums get optimized down to 1 byte long, the bits
set in the usize member don't align with the enums on big-endian
machines. Avoid this issue by shrinking the integer member to the
same size as the enums.
2018-11-01 01:03:20 +00:00
Aidan Hobson Sayers
e84f461d0a Make -Z ls list the actual filename of external dependencies 2018-10-31 23:10:36 +00:00
James Duley
01e0d23d66 Fix invalid_const_promotion test on some archs
On at least AArch64 `llvm.trap` raises SIGTRAP.
2018-10-31 22:59:53 +00:00
Nicholas Nethercote
0d2abe46ca Use SmallVec for the inner vectors in MatcherPos::matches.
This avoids some allocations.
2018-11-01 08:45:26 +11:00
Nicholas Nethercote
c60ed5d22c Share empty Vecs more within MatcherPos::matches.
`create_matches` creates a `Vec<Rc<Vec<NamedMatch>>>`. Even though all the
inner `Vec`s are empty, each one is created separately.

This commit changes `create_matches` so it instead creates one empty inner
`Vec`, and shares it.

The commit also changes `MatcherPos::matches` to a boxed slice, because its
length doesn't change.
2018-11-01 08:43:40 +11:00
Jonathan Behrens
daf5bd564a A couple suggested edits 2018-10-31 15:15:20 -04:00
Alex Crichton
d0060d72e5 Bump nightly to 1.32.0
* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations
2018-10-31 11:53:50 -07:00
Niko Matsakis
c244fd79f2 kill old-style-lub warnings 2018-10-31 12:11:02 -04:00
Niko Matsakis
740117f905 fix bug in NLL error reporting
Account for incompatible universes and higher-ranked subtyping.
2018-10-31 12:10:49 -04:00
ljedrz
f4c03fd847 syntax: improve a few allocations 2018-10-31 16:58:51 +01:00
Pietro Albini
4084eb032f
bootstrap: bump cargo-vendor version to 0.1.19 2018-10-31 15:55:26 +01:00