Commit graph

101635 commits

Author SHA1 Message Date
Niko Matsakis
832199ee76 use static as object-lifetime default for type XX in Foo<Item=XX>
Currently the default is "inherited" from context, so e.g.  `&impl
Foo<Item = dyn Bar>` would default to `&'x impl Foo<Item = dyn Bar +
'x>`, but this triggers an ICE and is not very consistent.

This patch doesn't implement what I expect would be the correct
semantics, because those are likely too complex. Instead, it handles
what I'd expect to be the common case -- where the trait has no
lifetime parameters.
2019-08-19 13:50:44 -04:00
Niko Matsakis
af86fb1959 distinguish object-lifetime-default elision from other elision
Object-lifetime-default elision is distinct from other forms of
elision; it always refers to some enclosing lifetime *present in the
surrounding type* (e.g., `&dyn Bar` expands to `&'a (dyn Bar + 'a)`.
If there is no enclosing lifetime, then it expands to `'static`.

Therefore, in an `impl Trait<Item = dyn Bar>` setting, we don't expand
to create a lifetime parameter for the `dyn Bar + 'X` bound.  It will
just be resolved to `'static`.

Annoyingly, the responsibility for this resolution is spread across
multiple bits of code right now (`middle::resolve_lifetimes`,
`lowering`). The lowering code knows that the default is for an object
lifetime, but it doesn't know what the correct result would be.
Probably this should be fixed, but what we do now is a surgical fix:
we have it generate a different result for elided lifetimes in a
object context, and then we can ignore those results when figuring out
the lifetimes that are captured in the opaque type.
2019-08-19 13:50:42 -04:00
Niko Matsakis
b51df1def0 add debug logs 2019-08-19 13:48:45 -04:00
bors
29a54035c7 Auto merge of #63579 - alexcrichton:new-lockfile, r=Mark-Simulacrum
Use to Cargo's experimental lockfile format

This commit changes the lock file format of this repository to an
experimental format that isn't rolled out by default in Cargo but is
intended to eventually become the default. The new format moves
information around and compresses the lock file a bit. The intention of
the new format is to reduce the amount of git merge conflicts that
happen in a repository, with rust-lang/rust being a prime candidate for
testing this.

The new format wille ventually become the default but for now it is
off-by-default in Cargo, but Cargo will preserve the format if it sees
it. Since we always build with a beta version of Cargo for the
rust-lang/rust repository it should be safe to go ahead and change the
lock file format here and everyone building this repository will
automatically pick it up.

It's intended that we'll evaluate this lock file format in the
rust-lang/rust repository to see if it reduces the number of perceived
merge conflicts for changes that touch the lock file. This will in turn
help inform the development of the feature in Cargo and whether we
choose to stabilize this and turn it on by default.

Note that this commit does not actually change the contents of the lock
file in terms of a resolution graph, it simply reencodes the lock file
with a new format.
2019-08-19 17:04:10 +00:00
Alex Crichton
093ede240a Use to Cargo's experimental lockfile format
This commit changes the lock file format of this repository to an
experimental format that isn't rolled out by default in Cargo but is
intended to eventually become the default. The new format moves
information around and compresses the lock file a bit. The intention of
the new format is to reduce the amount of git merge conflicts that
happen in a repository, with rust-lang/rust being a prime candidate for
testing this.

The new format wille ventually become the default but for now it is
off-by-default in Cargo, but Cargo will preserve the format if it sees
it. Since we always build with a beta version of Cargo for the
rust-lang/rust repository it should be safe to go ahead and change the
lock file format here and everyone building this repository will
automatically pick it up.

It's intended that we'll evaluate this lock file format in the
rust-lang/rust repository to see if it reduces the number of perceived
merge conflicts for changes that touch the lock file. This will in turn
help inform the development of the feature in Cargo and whether we
choose to stabilize this and turn it on by default.

Note that this commit does not actually change the contents of the lock
file in terms of a resolution graph, it simply reencodes the lock file
with a new format.
2019-08-19 09:56:22 -07:00
Eduard-Mihai Burtescu
96fc98904f test: add test for #61432. 2019-08-19 19:33:49 +03:00
Giles Cope
ef3e66d69f Fix suggestion from move async to async move. 2019-08-19 17:14:38 +01:00
Eduard-Mihai Burtescu
cb6650047b test: add test from #61041. 2019-08-19 18:57:09 +03:00
Eduard-Mihai Burtescu
f4aa00b71d rustc_typeck: fix the generics for (const-generic) N expression in e.g. [T; N]. 2019-08-19 18:57:09 +03:00
Eduard-Mihai Burtescu
7d9af83ffc rustc_mir: disallow non-monomorphic reifications. 2019-08-19 18:57:09 +03:00
Eduard-Mihai Burtescu
ceabe0dc54 rustc_mir: disallow non-monomorphic vtables. 2019-08-19 18:57:09 +03:00
Eduard-Mihai Burtescu
4149964ae4 rustc_mir: add missing subst_from_frame_and_normalize_erasing_regions calls. 2019-08-19 18:57:09 +03:00
Eduard-Mihai Burtescu
0919f7c3a3 rustc_mir: use self.resolve instead of Instance::resolve where possible. 2019-08-19 18:57:08 +03:00
Eduard-Mihai Burtescu
ada6f1cd3d rustc_mir: make subst_from_frame_and_normalize_erasing_regions infallible. 2019-08-19 18:57:01 +03:00
Eduard-Mihai Burtescu
b4f217ed7b rustc_mir: remove wrong calls to subst_from_frame_and_normalize_erasing_regions. 2019-08-19 18:55:19 +03:00
Ralf Jung
d4196a7673 start cleaning up subst mess
fix an ICE

fix method name
2019-08-19 18:55:18 +03:00
Baoshan
7ab6fa0914
Merge pull request #3 from Wind-River/vxworks-salim
Fixed: error: unnecessary trailing semicolon
2019-08-19 08:45:43 -07:00
Tom Milligan
0ec2e9fceb
librustdoc: warn on empty doc test 2019-08-19 16:02:57 +01:00
bors
f86521e0a3 Auto merge of #63700 - alexcrichton:update-backtrace, r=sfackler
std: Update `backtrace` crate dependency

This commit updates the `backtrace` crate from 0.3.34 to 0.3.35. The
[included set of changes][changes] for this update mostly includes some
gimli-related improvements (not relevant for the standard library) but
critically includes a fix for rust-lang/backtrace-rs#230. The standard
library will not aqcuire a session-local lock whenever a backtrace is
generated on Windows to allow external synchronization with the
`backtrace` crate itself, allowing `backtrace` to be safely used while
other threads may be panicking.

[changes]: https://github.com/rust-lang/backtrace-rs/compare/0.3.34...0.3.35
2019-08-19 13:17:34 +00:00
Alex Crichton
1301b100ca std: Update backtrace crate dependency
This commit updates the `backtrace` crate from 0.3.34 to 0.3.35. The
[included set of changes][changes] for this update mostly includes some
gimli-related improvements (not relevant for the standard library) but
critically includes a fix for rust-lang/backtrace-rs#230. The standard
library will not aqcuire a session-local lock whenever a backtrace is
generated on Windows to allow external synchronization with the
`backtrace` crate itself, allowing `backtrace` to be safely used while
other threads may be panicking.

[changes]: https://github.com/rust-lang/backtrace-rs/compare/0.3.34...0.3.35
2019-08-19 06:13:18 -07:00
newpavlov
c05237686f fix 2019-08-19 16:01:21 +03:00
newpavlov
e5ba80a87c use const 2019-08-19 15:36:30 +03:00
newpavlov
7658a13c65 typo fix 2019-08-19 15:33:05 +03:00
newpavlov
338fc7d042 use non-zero clock id 2019-08-19 15:32:37 +03:00
newpavlov
8394dbba7a remove libc import 2019-08-19 15:18:39 +03:00
newpavlov
52d2871e10 use wasi::get_environ 2019-08-19 15:18:02 +03:00
newpavlov
7a4f0aece8 use wasi::get_args 2019-08-19 14:54:37 +03:00
newpavlov
75a553fa27 remove to_string 2019-08-19 13:50:22 +03:00
newpavlov
cb52065d55 replace libc::nanosleep with wasi::poll_oneoff 2019-08-19 13:31:41 +03:00
Phosphorus15
64e3a10a82 test cases for both f32 and f64 on asinh(-0.0) 2019-08-19 17:29:37 +08:00
Phosphorus15
c4569347b2 Added negative cases for asinh according to IEEE-754. 2019-08-19 17:22:08 +08:00
Shotaro Yamada
1fe6160c7e Fix ICE with impl Trait in type bounds 2019-08-19 17:49:54 +09:00
Shotaro Yamada
3620456faf Use BTreeMap for deterministic iter order 2019-08-19 17:49:54 +09:00
Shotaro Yamada
cc6dbb4f23 Fix tidy 2019-08-19 17:49:54 +09:00
Shotaro Yamada
5f9e26382f Support nested impl Trait 2019-08-19 17:49:54 +09:00
Shotaro Yamada
9beff38382 Associated type bound for inlined impl Trait doc 2019-08-19 17:49:54 +09:00
Shotaro Yamada
b78367d8e8 Support impl Trait in inlined documentation 2019-08-19 17:49:54 +09:00
newpavlov
23cc850ff1 return 0 from errno function 2019-08-19 10:44:08 +03:00
newpavlov
6896ed383d use wasi crate 2019-08-19 09:47:58 +03:00
phosphorus
92f08b78a1
Merge pull request #1 from rust-lang/master
Pull from newest repo
2019-08-19 00:34:02 -05:00
bors
cdff918955 Auto merge of #63670 - Dante-Broggi:patch-2, r=Centril
Size has a ::zero
2019-08-19 05:12:58 +00:00
bors
a807902dd6 Auto merge of #63463 - matthewjasper:ty_param_cleanup, r=petrochenkov
Don't special case the `Self` parameter by name

This results in a couple of small diagnostic regressions. They could be avoided by keeping the special case just for diagnostics, but that seems worse.

closes #50125
cc #60869
2019-08-19 01:31:35 +00:00
bors
0ccbae2f18 Auto merge of #63045 - Rosto75:master, r=jonas-schievink
Change the placement of two functions.

Right now, the order is as follows:
`pop_front()`
`push_front()`
`push_back()`
`pop_back()`

`swap_remove_back()`
`swap_remove_front()`

I believe it would be more natural, and easier to follow, if we place `pop_back()` right after the `pop_front()`, and `swap_remove_back()` after the `swap_remove_front()` like this:
`pop_front()`
`pop_back()`
`push_front()`
`push_back()`

`swap_remove_front()`
`swap_remove_back()`

The rest of the documentation (at least in this module) adheres to the same logic, where the 'front' function always precedes its 'back' equivalent.
2019-08-18 22:01:21 +00:00
Tim Vermeulen
ec54340756 Fix bug in iter::Chain::size_hint 2019-08-18 21:47:23 +02:00
Matthew Jasper
24587d20df Pre intern the Self parameter type
Use this to simplify the object safety code a bit.
2019-08-18 19:25:12 +01:00
bors
4cf7673076 Auto merge of #63659 - gilescope:async-in-closure, r=Centril
Improved error message for break in async block

Fixes #63391
2019-08-18 18:23:28 +00:00
bors
ea52be482a Auto merge of #63635 - oli-obk:default-slice-dangles, r=eddyb
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
2019-08-18 13:22:38 +00:00
GrayJack
e0f73052a9 Constify LinkedList new function 2019-08-18 07:13:33 -03:00
Giles Cope
1e02bc62bc Better error message for break in async blocks. 2019-08-18 10:39:15 +01:00
bors
71e2882973 Auto merge of #63269 - Aaron1011:feature/proc-macro-data, r=eddyb,petrochenkov
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
2019-08-18 08:15:38 +00:00