Commit Graph

69239 Commits

Author SHA1 Message Date
bors a6885cb853 Auto merge of #45605 - Nashenas88:derive-newtype, r=nikomatsakis
Add derive and doc comment capabilities to newtype_index macro

This moves `RustcDecodable` and `RustcEncodable` out of the macro definition and into the macro uses. They were conflicting with `CrateNum`'s impls of `serialize::UseSpecializedEncodable` and `serialize::UseSpecializedDecodable`, and now it's not :). `CrateNum` is now defined with the `newtype_index` macro. I also added support for doc comments on constant definitions and allowed a type to remove the pub specification on the tuple param (otherwise a LOT of code would refuse to compile for `CrateNum`). I was getting dozens of errors like this if `CrateNum` was defined as `pub struct CrateNum(pub u32)`:
```
error[E0530]: match bindings cannot shadow tuple structs
   --> src/librustc/dep_graph/dep_node.rs:624:25
    |
63  | use hir::def_id::{CrateNum, DefId, DefIndex, CRATE_DEF_INDEX};
    |                   -------- a tuple struct `CrateNum` is imported here
...
624 |     [] MissingLangItems(CrateNum),
    |                         ^^^^^^^^ cannot be named the same as a tuple struct
```

I also cleaned up the formatting of the macro bodies as they were getting impossibly long. Should I go back and fix the matching rules to this style too?

I also want to see what the test results look like because `CrateNum` used to just derive `Debug`, but the `newtype_index` macro has a custom implementation. This might require further pushes.

Feel free to bikeshed on the macro language, I have no preference here.
2017-11-04 10:24:20 +00:00
bors 9acc3331e1 Auto merge of #45755 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

- Successful merges: #45548, #45610, #45639, #45669, #45681, #45718, #45722, #45739, #45746
- Failed merges:
2017-11-04 06:59:29 +00:00
kennytm e3b25a5942 Rollup merge of #45746 - GuillaumeGomez:methods-doc-test, r=steveklabnik
Add tests for methods listing in rust docs

r? @rust-lang/docs
2017-11-04 13:49:33 +08:00
kennytm 606e269e14 Rollup merge of #45739 - rkarp:master, r=petrochenkov
Fix libstd compile error for windows-gnu targets without `backtrace`

This is basically an addition to #44979. Compiling `libstd` still fails when targeting `windows-gnu` with `panic = "abort"` because the items in the `...c::gnu` module are not used. They are only referenced from `backtrace_gnu.rs`, which is indirectly feature gated behind `backtrace` [here](9f3b09116b/src/libstd/sys/windows/mod.rs (L23)).
2017-11-04 13:49:33 +08:00
kennytm 7a766a4a41 Rollup merge of #45722 - mikhail-m1:improve-mir-opt-error-output, r=alexcrichton
improve compiletest output for errors from mir-opt tests

improvement:
1. Report filename against general cannot open error
2. Report current MIR block
2017-11-04 13:49:32 +08:00
kennytm ff00a5f8fb Rollup merge of #45718 - Ljzn:patch-2, r=BurntSushi
Fix typo

`accomodate` -> `accommodate`
2017-11-04 13:49:31 +08:00
kennytm 2c293922d0 Rollup merge of #45681 - Ljzn:patch-1, r=kennytm
Fix typo.
2017-11-04 13:49:30 +08:00
kennytm 1815265510 Rollup merge of #45669 - cardoe:metadata, r=kennytm
add Cargo metadata to libstd

Add license and repository metadata to libstd
2017-11-04 13:49:29 +08:00
kennytm ea572657da Rollup merge of #45639 - LaurentMazare:master, r=petrochenkov
Add a nicer error message for missing  in for loop, fixes #40782.

As suggested by @estebank in issue #40782, this works in the same way as #42578: if the in keyword is missing, we continue parsing the expression and if this works correctly an adapted error message is produced. Otherwise we return the old error.

A specific test case has also been added.
This is my first PR on rust-lang/rust so any feedback is very welcome.
2017-11-04 13:49:28 +08:00
kennytm ae512c4144 Rollup merge of #45610 - strake:atomic_from, r=nagisa
impl From<T> for AtomicT
2017-11-04 13:49:27 +08:00
kennytm 9ca6ee0299 Rollup merge of #45548 - ratmice:master, r=oli-obk
issue #45357 don't build clippy stage 1

#45357
Wasn't sure top_stage was the right thing, but seemed to go ahead building clippy stage 2.
2017-11-04 13:49:26 +08:00
bors a4541525d5 Auto merge of #45514 - gnzlbg:jemalloc_realloc2, r=sfackler
[jemalloc] set correct excess in realloc_excess
2017-11-04 04:28:13 +00:00
bors 95a401609f Auto merge of #45384 - mikhail-m1:mir_add_false_edges_terminator_kind, r=arielb1
add TerminatorKind::FalseEdges and use it in matches

impl #45184 and fixes #45043 right way.

False edges unexpectedly affects uninitialized variables analysis in MIR borrowck.
2017-11-04 00:09:14 +00:00
bors 2278506f68 Auto merge of #45247 - leodasvacas:implement-auto-trait-syntax, r=nikomatsakis
[Syntax] Implement auto trait syntax

Implements `auto trait Send {}` as a substitute for `trait Send {} impl Send for .. {}`.

See the [internals thread](https://internals.rust-lang.org/t/pre-rfc-renaming-oibits-and-changing-their-declaration-syntax/3086) for motivation. Part of #13231.

The first commit is just a rename moving from "default trait" to "auto trait". The rest is parser->AST->HIR work and making it the same as the current syntax for everything below HIR. It's under the `optin_builtin_traits` feature gate.

When can we remove the old syntax? Do we need to wait for a new `stage0`? We also need to formally decide for the new form (even if the keyword is not settled yet).

Observations:
- If you `auto trait Auto {}` and then `impl Auto for .. {}` that's accepted even if it's redundant.
- The new syntax is simpler internally which will allow for a net removal of code, for example well-formedness checks are effectively moved to the parser.
- Rustfmt and clippy are broken, need to fix those.
- Rustdoc just ignores it for now.

ping @petrochenkov @nikomatsakis
2017-11-03 19:07:45 +00:00
leonardo.yvens 5190abb941 Fix unsafe auto trait pretty print.
It was being printed wrong as auto unsafe trait
2017-11-03 16:13:23 -02:00
leonardo.yvens ca26f01dd1 Update pretty test for auto trait syntax. 2017-11-03 16:13:22 -02:00
leonardo.yvens 3241f4583b rustfmt is broken which makes rls broken 2017-11-03 16:13:22 -02:00
leonardo.yvens 5e74353981 fix rebase conflict 2017-11-03 16:13:22 -02:00
leonardo.yvens 27efe126e0 Rename `trait_has_auto_impl` to `trait_is_auto` 2017-11-03 16:13:22 -02:00
leonardo.yvens 94b07a91bc update unstable book and error example 2017-11-03 16:13:22 -02:00
leonardo.yvens 97de8cae6e Parse auto traits the same as traits.
This moves the well formedness checks to the AST validation pass. Tests
were adjusted.

The auto keyword should be back-compat now.
2017-11-03 16:13:22 -02:00
leonardo.yvens 9d181ac2de Fix tests and rebase conflict 2017-11-03 16:13:21 -02:00
leonardo.yvens 8b586e68b5 auto trait future compatibility lint 2017-11-03 16:13:21 -02:00
leonardo.yvens 0d1b79a01a Finish DefaultImpl -> AutoImpl rename.
Forgot this ones.
2017-11-03 16:13:21 -02:00
leonardo.yvens acf50ee236 Add tests for `auto trait`, fix parsing bug
Now we can do the well formedness checks in the parser, yay!
2017-11-03 16:13:21 -02:00
leonardo.yvens 37dfc0c598 Feature gate `auto trait` and ignore it in rustdoc 2017-11-03 16:13:21 -02:00
leonardo.yvens 00be060daf Teach typeck about `auto trait` 2017-11-03 16:13:20 -02:00
leonardo.yvens 1f4b630899 add `auto` keyword, parse `auto trait`, lower to HIR
Adds an `IsAuto` field to `ItemTrait` which flags if the trait was
declared as an `auto trait`.

Auto traits cannot have generics nor super traits.
2017-11-03 16:13:20 -02:00
leonardo.yvens 06506bb751 [Syntax Breaking] Rename DefaultImpl to AutoImpl
DefaultImpl is a highly confusing name for what we now call auto impls,
as in `impl Send for ..`. The name auto impl is not formally decided
but for sanity anything is better than `DefaultImpl` which refers
neither to `default impl` nor to `impl Default`.
2017-11-03 16:13:20 -02:00
matt rice aa9d0aae99 issue #45357 set clippy build condition to extended. 2017-11-03 10:52:36 -07:00
Guillaume Gomez 765153e6a4 Add tests for methods listing in rust docs 2017-11-03 18:39:00 +01:00
gnzlbg 549ab77e23 [jemalloc] set correct excess in alloc_excess 2017-11-03 17:44:58 +01:00
bors 59d484575a Auto merge of #45569 - zackmdavis:unexported_pub_lint, r=petrochenkov
`unreachable-pub` lint (as authorized by RFC 2126)

To whom it may concern:

RFC 2126 commissions the creation of a lint for `pub` items that are not visible from crate root (#45521). We understand (but seek confirmation from more knowledgable compiler elders) that this can be implemented by linting HIR items that are _not_ ~~`cx.access_levels.is_exported`~~ `cx.access_levels.is_reachable` but have a `vis` (-ibility) field of `hir::Visibility::Public`.

The lint, tentatively called ~~`unexported-pub`~~ `unreachable-pub` (with the understanding that much could be written on the merits of various names, as it is said of the colors of bicycle-sheds), suggests `crate` as a replacement for `pub` if the `crate_visibility_modifier` feature is enabled (see #45388), and `pub(crate)` otherwise. We also use help messaging to suggest the other potential fix of exporting the item; feedback is desired as to whether this may be confusing or could be worded better.

As a preview of what respecting the proposed lint would look like (and to generate confirmatory evidence that this implementation doesn't issue false positives), ~~we take its suggestions for `libcore`~~ (save one, which is deferred to another pull request because it brings up an unrelated technical matter). I remain your obedient servant.

![unexported_pub](https://user-images.githubusercontent.com/1076988/32089794-fbd02420-baa0-11e7-87e5-3ec01f18924a.png)

r? @petrochenkov
2017-11-03 16:28:24 +00:00
Rolf Karp ce3f0719e6 Fix std compile error for windows-gnu targets without `backtrace` feature 2017-11-03 15:22:13 +01:00
bors 525b81d570 Auto merge of #45734 - kennytm:ci-fix-centos-broken-link, r=alexcrichton
ci: Fix broken link in `build-powerpc64le-toolchain.sh`

r? @rust-lang/infra

This is just an emergency fix to keep bors running for another week. I think the numbers will be broken soon. Can we verify if this statement is still true later?

> First, download the CentOS7 glibc.ppc64le and relevant header files.
> (upstream ppc64le support wasn't added until 2.19, which el7 backported.)
2017-11-03 12:30:09 +00:00
kennytm 1f95c6de3c
Fix broken link in `build-powerpc64le-toolchain.sh` 2017-11-03 15:53:36 +08:00
Zack M. Davis 085ec6d528 unreachable-pub lint for `pub` items not reachable from crate root
This is with deepest thanks to Vadim Petrochenkov for thorough review, and
resolves #45521.
2017-11-02 20:50:17 -07:00
bors 9f3b09116b Auto merge of #45484 - oli-obk:lint_names, r=nikomatsakis
Report lint names in json diagnostics

This allows tools like `rustfix` to have whitelists for what to automatically apply and what not.
2017-11-03 00:42:11 +00:00
Mikhail Modin 7d87054347 replace Add by tuple 2017-11-02 20:25:38 +03:00
bors e340996ff5 Auto merge of #45409 - tamird:suggest-match-default-bindings, r=nikomatsakis
typeck: suggest use of match_default_bindings feature

Fixes #45383.
Updates #42640.

r? @nikomatsakis
cc @tschottdorf

This needs a UI test, but thought I'd get some early feedback.
2017-11-02 16:28:16 +00:00
Mikhail Modin d6dfec124f improve compiletest output for errors from mir-opt tests 2017-11-02 16:41:40 +03:00
bors 5ce3d482e2 Auto merge of #45647 - nrc:rls-bugs, r=eddyb
save-analysis: support unions

r? @eddyb
2017-11-02 12:34:13 +00:00
Lance John 0f49129fd7
Fix typo
`accomodate` -> `accommodate`
2017-11-02 20:07:22 +08:00
Oliver Schneider 6ae440e048
Make the difference between lint codes and error codes explicit 2017-11-02 10:19:41 +01:00
Oliver Schneider 88fb4c4fda
Report lint names in json diagnostics 2017-11-02 10:19:41 +01:00
bors a7d98c7837 Auto merge of #45630 - joshleeb:iss35241, r=estebank
Improve display of error E0308

Ref. Forgetting to call a variant constructor causes a confusing error message #35241.

This PR modifies [`note_type_err`](b7041bfab3/src/librustc/infer/error_reporting/mod.rs (L669-L674)) to display a `help` message when a `TyFnPtr` or `TyFnDef` are found and the return type, of the function or function pointer, is the same as the type that is expected.

The output of compiling

```rust
struct Foo(u32);

fn test() -> Foo { Foo }

fn main() {}
```

is now

```bash
$ rustc src/test/ui/issue-35241.rs
error[E0308]: mismatched types
  --> src/test/ui/issue-35241.rs:13:20
   |
13 | fn test() -> Foo { Foo }
   |              ---   ^^^ expected struct `Foo`, found fn item
   |              |
   |              expected `Foo` because of return type
   |
   = help: did you mean `Foo { /* fields */ }`?
   = note: expected type `Foo`
              found type `fn(u32) -> Foo {Foo::{{constructor}}}`

error: aborting due to previous error
```
2017-11-02 08:30:03 +00:00
Mikhail Modin d9e64ebaaa change mir stage in test 2017-11-02 10:21:36 +03:00
Mikhail Modin 59d3184624 add one more sample 2017-11-02 09:43:36 +03:00
Mikhail Modin cb2867da88 fix pre binding false edges 2017-11-02 09:43:36 +03:00
Mikhail Modin a954dcc72e fix opt-mir test and remove false edge if no guard 2017-11-02 09:43:36 +03:00