Commit Graph

70187 Commits

Author SHA1 Message Date
Esteban Küber
5eb5e91d7b Use multiline text for crate conflict diagnostics 2017-11-22 18:45:32 -08:00
Esteban Küber
b450aff186 Add test to new branches 2017-11-22 18:36:17 -08:00
Corey Farwell
2178e3a1b9 Clarify stdin behavior of Command::output.
Fixes #44929.
2017-11-22 20:47:31 -05:00
Corey Farwell
e1b479cff9 Rename param in [T]::swap_with_slice from src to other.
The idea of ‘source’ and ‘destination’ aren’t very applicable for this
operation since both slices can both be considered sources and
destinations.
2017-11-22 19:56:48 -05:00
bors
6af4515de6 Auto merge of #45721 - nikomatsakis:hir-tree, r=arielb1
add -Zunpretty=hir-tree

This uses the debug impls to dump the raw HIR. Particularly useful when
learning how the compiler works.

cc @qmx
2017-11-23 00:52:15 +00:00
Andy Russell
794ada06e7
add reachable_only to save-analysis config 2017-11-22 16:09:43 -05:00
Eduard-Mihai Burtescu
fc658f2cfd rustc: don't mark lifetimes as early-bound in the presence of impl Trait. 2017-11-22 21:10:55 +02:00
steveklabnik
cdc6b84157 Amend RELEASES for 1.22.1
and fix the date for 1.22.0
2017-11-22 14:04:41 -05:00
Niko Matsakis
79bf7db319 add some tests for the interaction with existential impl trait 2017-11-22 13:45:42 -05:00
Niko Matsakis
d3e0c33dbe modify inherent impls test to indicate TypeckTables do not change
I also added some comments explaining what is going on. In short, the
changes in question do not, in fact, affect the`TypeckTables` in any
semantic way. However, altering the order of lowering can cause it
appear to affect the `TypeckTables`: if we lower generics before the
body, then the `HirId` for things in the body will be affected. In
this case, we are now lowering the generics etc
*after* the body, so the hash no longer changes. This seems good.
2017-11-22 12:44:10 -05:00
Niko Matsakis
78ccbba3e2 add debug log with result of writeback 2017-11-22 12:44:10 -05:00
Taylor Cramer
91b7920c09 Implement in-band lifetime bindings 2017-11-22 12:44:09 -05:00
bors
45594d5dec Auto merge of #46035 - oli-obk:use_suggestions, r=petrochenkov
Add structured suggestions for various "use" suggestions

r? @petrochenkov
2017-11-22 16:14:13 +00:00
bors
1dc0b573e7 Auto merge of #45198 - oli-obk:fmt_args, r=sfackler
Prevent fmt::Arguments from being shared across threads

Fixes #45197

This is a **breaking change**! Without doing this it's very easy to create race conditions.

There's probably a way to do this without breaking valid use cases, but it would require quite an overhaul of the formatting machinery.
2017-11-22 12:34:56 +00:00
bors
3755fe9555 Auto merge of #44781 - QuietMisdreavus:doc-include, r=GuillaumeGomez
rustdoc: include external files in documentation (RFC 1990)

Part of https://github.com/rust-lang/rfcs/pull/1990 (needs work on the error reporting, which i'm deferring to after this initial PR)

cc #44732

Also fixes #42760, because the prep work for the error reporting made it easy to fix that at the same time.
2017-11-22 09:58:07 +00:00
Niko Matsakis
c52e51dfb7 normalize types in ADT constructor
Fixes #45940
2017-11-22 03:51:56 -05:00
Niko Matsakis
10b8faccd0 handle the active field index in unions 2017-11-22 03:51:55 -05:00
Niko Matsakis
b3a10db03e avoid early return 2017-11-22 03:51:55 -05:00
Niko Matsakis
b588edc413 only normalize operand types when in an ADT constructor 2017-11-22 03:51:55 -05:00
Paul Daniel Faria
527a5dd251 Normalize LvalueTy for ops and format code to satisfy tidy check 2017-11-22 03:51:55 -05:00
Paul Daniel Faria
47c6db09ee Remove attributes and test comments accidentally left behind, add in span_mirbugs 2017-11-22 03:51:54 -05:00
Paul Daniel Faria
fe32df9adb Fix failing test 2017-11-22 03:51:54 -05:00
Paul Daniel Faria
19c17360d9 Check rvalue aggregates during check_stmt in tycheck, add initial, (not passing) test 2017-11-22 03:51:54 -05:00
Santiago Pastorino
4fecccbd2e Make RegionVid use newtype_index!
Closes #45843
2017-11-22 03:51:54 -05:00
bors
96e9cee77f Auto merge of #46040 - zilbuz:mir-misc, r=nikomatsakis
MIR-borrowck: Some minor fixes

- Remove parens when printing dereference (fix #45185)
- Change argument type of `autoderef` to `bool`
- Change argument type of `field_index` to `Field`
2017-11-22 07:27:54 +00:00
Mazdak
bc18d99232 Box::leak: update unstable issue number (46179). 2017-11-22 07:21:30 +01:00
Oliver Middleton
fb094642e1 Add missing Debug impls to std_unicode
Also adds #![deny(missing_debug_implementations)] so they don't get
missed again.
2017-11-22 00:49:28 +00:00
bors
d6d09e0b4d Auto merge of #45879 - nikomatsakis:nll-kill-cyclic-closures, r=arielb1
move closure kind, signature into `ClosureSubsts`

Instead of using side-tables, store the closure-kind and signature in the substitutions themselves. This has two key effects:

- It means that the closure's type changes as inference finds out more things, which is very nice.
    - As a result, it avoids the need for the `freshen_closure_like` code (though we still use it for generators).
- It avoids cyclic closures calls.
    - These were never meant to be supported, precisely because they make a lot of the fancy inference that we do much more complicated. However, due to an oversight, it was previously possible -- if challenging -- to create a setup where a closure *directly* called itself (see e.g. #21410).

We have to see what the effect of this change is, though. Needs a crater run. Marking as [WIP] until that has been assessed.

r? @arielb1
2017-11-21 22:52:19 +00:00
QuietMisdreavus
52ee203d65 make with_unsugared_doc preserve is_sugared_doc 2017-11-21 15:46:49 -06:00
QuietMisdreavus
f9f3611f5c allow loading external files in documentation
Partial implementation of https://github.com/rust-lang/rfcs/pull/1990
(needs error reporting work)

cc #44732
2017-11-21 15:46:49 -06:00
Virgil Palanciuc
a2d63d65da Add test for #44953 2017-11-21 22:29:35 +02:00
bors
63739ab7b2 Auto merge of #46166 - kennytm:rollup, r=kennytm
Rollup of 11 pull requests

- Successful merges: #45987, #46031, #46050, #46052, #46103, #46120, #46134, #46141, #46148, #46155, #46157
- Failed merges:
2017-11-21 17:14:05 +00:00
kennytm
7c8b36f6f1 Rollup merge of #46157 - martinlindhe:master, r=kennytm
fix some typos

This is the result of me testing out a WIP source code typo-finder
and your project was the random target this time.
2017-11-22 01:13:06 +08:00
kennytm
7f0a1e26b2 Rollup merge of #46155 - SimonSapin:stylo, r=kennytm
Revert servo to upstream in cargotest

This is a follow-up to https://github.com/rust-lang/rust/pull/45225#issuecomment-345503017 now that upstream has adjusted: https://github.com/servo/servo/pull/19316
2017-11-22 01:13:05 +08:00
kennytm
9a69b00512 Rollup merge of #46148 - SimonSapin:patch-6, r=alexcrichton
Expand a couple points in 1.22.0 release notes

Let’s not give false hopes about `const fn` :)
2017-11-22 01:13:04 +08:00
kennytm
5b54193ab2 Rollup merge of #46141 - aqrln:tosocketaddrs-doc-fix-typo, r=frewsxcv
Fix a typo in ToSocketAddrs documentation

Fix a typo in `ToSocketAddrs` documentation: s/ToSocketsAddr/ToSocketAddrs
2017-11-22 01:13:03 +08:00
kennytm
3bf1328005 Rollup merge of #46134 - GuillaumeGomez:negative-traits, r=QuietMisdreavus
Display negative traits implementation

Fixes #45816.

r? @QuietMisdreavus
2017-11-22 01:13:02 +08:00
kennytm
e77f3e4781 Rollup merge of #46120 - arielb1:def-debug, r=michaelwoerister
clean the Debug impl for CrateNum and DefId

Just a tiny quality-of-life improvement because I got tired of noisy debug logs.

```
before: DefId { krate: CrateNum(11), index: DefIndex(0:6) => foo[8787]::Mapper[0]::OtherType[0] } }
after: {crate11:0:6 ~ foo[8787]::Mapper[0]::OtherType[0]})
```

r? @michaelwoerister
2017-11-22 01:13:01 +08:00
kennytm
7eb2e79ea8 Rollup merge of #46103 - zackmdavis:dead_code_lint_should_say_never_constructed_for_variants, r=arielb1
dead code lint to say "never constructed" for variants

As reported in #19140, #44083, and #44565, some users were confused when
the dead-code lint reported an enum variant to be "unused" when it was
matched on (but not constructed). This wording change makes it clearer
that the lint is in fact checking for construction.

We continue to say "used" for all other items (it's tempting to say
"called" for functions and methods, but this turns out not to be
correct: functions can be passed as arguments and the dead-code lint
isn't special-casing that or anything).

Resolves #19140.

r? @pnkfelix
2017-11-22 01:13:00 +08:00
kennytm
0af67a4df0 Rollup merge of #46052 - oli-obk:rendered_diagnostics_in_json, r=petrochenkov
Include rendered diagnostic in json

r? @petrochenkov
2017-11-22 01:12:59 +08:00
kennytm
9b090a0261 Rollup merge of #46050 - sunfishcode:read_to_end, r=sfackler
Optimize `read_to_end`.

This patch makes `read_to_end` use Vec's memory-growth pattern rather
than using a custom pattern.

This has some interesting effects:

 - If memory is reserved up front, `read_to_end` can be faster, as it
   starts reading at the buffer size, rather than always starting at 32
   bytes. This speeds up file reading by 2x in one of my use cases.

 - It can reduce the number of syscalls when reading large files.
   Previously, `read_to_end` would settle into a sequence of 8192-byte
   reads. With this patch, the read size follows Vec's allocation
   pattern. For example, on a 16MiB file, it can do 21 read syscalls
   instead of 2057. In simple benchmarks of large files though, overall
   speed is still dominated by the actual I/O.

 - A downside is that Read implementations that don't implement
   `initializer()` may see increased memory zeroing overhead.

I benchmarked this on a variety of data sizes, with and without
preallocated buffers. Most benchmarks see no difference, but reading
a small/medium file with a pre-allocated buffer is faster.
2017-11-22 01:12:58 +08:00
kennytm
f8b3e7cee9 Rollup merge of #46031 - Keruspe:cargofmt, r=Mark-Simulacrum
rustbuild: distribute cargo-fmt alongside rustfmt

Not sure whether we want that nor if it's the right way to do so, but it feels quite weird to have rustfmt without cargo-fmt. Or are there other plans wrt that?

What do you think @nrc ?
2017-11-22 01:12:57 +08:00
kennytm
c0c3cc4d3d Rollup merge of #45987 - gaurikholkar:let-expr, r=michaelwoerister
update let-expressions hash test to use `except`

A part of #44924, this PR updated let-expressions test using `except`.

cc @michaelwoerister
r? @nikomatsakis
2017-11-22 01:12:56 +08:00
Martin Lindhe
ece9a57d1b fix some typos 2017-11-21 15:33:45 +01:00
Ariel Ben-Yehuda
e7c8fbf1f7 clean the Debug impl for CrateNum and DefId
before: DefId { krate: CrateNum(11), index: DefIndex(0:6) => foo[8787]::Mapper[0]::OtherType[0] } }
after: DefId(11:0:6 ~ foo[8787]::Mapper[0]::OtherType[0])
2017-11-21 15:35:04 +02:00
Simon Sapin
ad6f4dcea7 Revert servo to upstream in cargotest
This is a follow-up to https://github.com/rust-lang/rust/pull/45225#issuecomment-345503017
now that upstream has adjusted https://github.com/servo/servo/pull/19316
2017-11-21 14:24:23 +01:00
bors
f28df20026 Auto merge of #45771 - petrochenkov:crate, r=nikomatsakis
Support `::crate` in paths

cc https://github.com/rust-lang/rust/issues/45477
Fixes https://github.com/rust-lang/rust/issues/45229
2017-11-21 12:32:59 +00:00
Simon Sapin
13c1cbe749
Remove 1.23.0 release notes entry on const_fn
It doesn’t change anything for stable users in practice. See discussion in https://github.com/rust-lang/rust/pull/46148
2017-11-21 12:43:24 +01:00
Niko Matsakis
00732a31a0 check that def_id is a local closure in InferCtxt::fn_sig
Before we were assuming that *every* `fn_sig` must pertain to a local
closure.
2017-11-21 05:04:36 -05:00
bors
ebda7662db Auto merge of #45701 - cramertj:impl-trait-this-time, r=eddyb
impl Trait Lifetime Handling

This PR implements the updated strategy for handling `impl Trait` lifetimes, as described in [RFC 1951](https://github.com/rust-lang/rfcs/blob/master/text/1951-expand-impl-trait.md) (cc #42183).

With this PR, the `impl Trait` desugaring works as follows:
```rust
fn foo<T, 'a, 'b, 'c>(...) -> impl Foo<'a, 'b> { ... }
// desugars to
exists type MyFoo<ParentT, 'parent_a, 'parent_b, 'parent_c, 'a, 'b>: Foo<'a, 'b>;
fn foo<T, 'a, 'b, 'c>(...) -> MyFoo<T, 'static, 'static, 'static, 'a, 'b> { ... }
```
All of the in-scope (parent) generics are listed as parent generics of the anonymous type, with parent regions being replaced by `'static`. Parent regions referenced in the `impl Trait` return type are duplicated into the anonymous type's generics and mapped appropriately.

One case came up that wasn't specified in the RFC: it's possible to write a return type that contains multiple regions, neither of which outlives the other. In that case, it's not clear what the required lifetime of the output type should be, so we generate an error.

There's one remaining FIXME in one of the tests: `-> impl Foo<'a, 'b> + 'c` should be able to outlive both `'a` and `'b`, but not `'c`. Currently, it can't outlive any of them. @nikomatsakis and I have discussed this, and there are some complex interactions here if we ever allow `impl<'a, 'b> SomeTrait for AnonType<'a, 'b> { ... }`, so the plan is to hold off on this until we've got a better idea of what the interactions are here.

cc #34511.
Fixes #44727.
2017-11-21 10:00:18 +00:00