Commit graph

15389 commits

Author SHA1 Message Date
Esteban Küber
6341a8b0e5 Clarify suggetion for field used as method
Instead of

```
error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^
    |
note: did you mean to write `self.src_addr`?
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^
```

present

```
error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^ `src_addr` is a field, not a method
    |
    = help: did you mean to write `self.src_addr` instead of `self.src_addr(...)`?
```
2017-03-25 12:57:54 -07:00
Corey Farwell
88d40dc773 Rollup merge of #40689 - GuillaumeGomez:rustdoc-associated-type-formatting, r=frewsxcv
Add whitespace around "=" in assoc items

Part of #40641.

r? @rust-lang/docs

Before:

<img width="1440" alt="screen shot 2017-03-20 at 22 42 34" src="https://cloud.githubusercontent.com/assets/3050060/24123102/89181d8c-0dbe-11e7-897c-841497cf7001.png">

After:

<img width="1440" alt="screen shot 2017-03-20 at 22 42 36" src="https://cloud.githubusercontent.com/assets/3050060/24123118/8dec176e-0dbe-11e7-9759-cabbd062a4c2.png">
2017-03-22 19:30:28 -04:00
Corey Farwell
3f4ef9a535 Rollup merge of #40523 - durka:patch-38, r=petrochenkov
add test for nested macro def (#31946)

Adds a test for issue #31946 which was fixed in 1.12.0.

Closes #31946.
2017-03-22 19:30:24 -04:00
Corey Farwell
880f03b28c Rollup merge of #40509 - jseyfried:duplicate_check_macro_exports, r=nrc
Forbid conflicts between macros 1.0 exports and macros 2.0 exports

This PR forbids for conflicts between `#[macro_export]`/`#[macro_reexport]` macro exports and `pub use` macro exports. For example,
```rust
// crate A:
pub use macros::foo;
//^ This is allowed today, will be forbidden by this PR.

// crate B:
extern crate A; // This triggers a confusing error today.
use A::foo; // This could refer to refer to either macro export in crate A.
```

r? @nrc
2017-03-22 19:30:23 -04:00
bors
8c4f2c64c6 Auto merge of #40043 - petrochenkov:objpars, r=nikomatsakis
Refactor parsing of trait object types

Bugs are fixed and code is cleaned up.

User visible changes:
- `ty` matcher in macros accepts trait object types like `Write + Send` (https://github.com/rust-lang/rust/issues/39080)
- Buggy priority of `+` in trait object types starting with `for` is fixed (https://github.com/rust-lang/rust/issues/39317). `&for<'a> Trait<'a> + Send` is now parsed as `(&for<'a> Trait<'a>) + Send` and requires parens `&(for<'a> Trait<'a> + Send)`. For comparison, `&Send + for<'a> Trait<'a>` was parsed like this since [Nov 27, 2014](https://github.com/rust-lang/rust/pull/19298).
- Trailing `+`s are supported in trait objects, like in other bounds.
- Better error reporting for trait objects starting with `?Sized`.

Fixes https://github.com/rust-lang/rust/issues/39080
Fixes https://github.com/rust-lang/rust/issues/39317 [breaking-change]
Closes https://github.com/rust-lang/rust/issues/39298
cc https://github.com/rust-lang/rust/issues/39085 (fixed, then reverted https://github.com/rust-lang/rust/pull/40043#issuecomment-286570653)
cc https://github.com/rust-lang/rust/issues/39318 (fixed, then reverted https://github.com/rust-lang/rust/pull/40043#issuecomment-284493890)

r? @nikomatsakis
2017-03-22 02:00:16 +00:00
Jeffrey Seyfried
bd862d29d3
Fix bug in legacy #[derive] processing logic. 2017-03-21 16:53:34 -04:00
Alex Burka
7551e715dc
add test for nested macro def (#31946)
Adds a test for issue #31946 which was fixed a while ago.
2017-03-21 16:27:35 -04:00
Jeffrey Seyfried
678e882ce2
Check for conflicts between macros 1.0 exports (#[macro_export], #[macro_reexport])
and macros 2.0 exports (`pub use` macro re-exports and `pub macro` (once implemented)
at the crate root.
2017-03-21 16:23:18 -04:00
Guillaume Gomez
f53172287a Add whitespace around "=" in assoc items 2017-03-21 16:22:15 -04:00
Vadim Petrochenkov
b5e889791a Refactor parsing of trait object types 2017-03-21 23:01:53 +03:00
Corey Farwell
17656ab328 Rollup merge of #40556 - cramertj:stabilize-pub-restricted, r=petrochenkov
Stabilize pub(restricted)

Fix https://github.com/rust-lang/rust/issues/32409
2017-03-20 23:44:59 -04:00
Corey Farwell
fcc2d25794 Rollup merge of #40229 - cramertj:break-to-blocks, r=nikomatsakis
Implement `?` in catch expressions

Builds on #39921. Final part of #39849.

r? @nikomatsakis
2017-03-20 23:44:55 -04:00
bors
134c4a0f08 Auto merge of #39628 - arielb1:shimmir, r=eddyb
Translate shims using MIR

This removes one large remaining part of old trans.
2017-03-20 15:58:10 +00:00
Corey Farwell
d49f86901c Rollup merge of #40587 - GuillaumeGomez:rustdoc-const-display, r=frewsxcv
Fix invalid debug display for associated consts

Fixes #40568.

r? @rust-lang/docs

cc @SergioBenitez
2017-03-19 20:51:13 -04:00
Corey Farwell
7471d9793c Rollup merge of #40532 - jseyfried:improve_tokenstream_quoter, r=nrc
macros: improve the `TokenStream` quoter

This PR
 - renames the `TokenStream` quoter from `qquote!` to `quote!`,
 - uses `$` instead of `unquote` (e.g. `let toks: TokenStream = ...; quote!([$toks])`),
 - allows unquoting `Token`s as well as `TokenTree`s and `TokenStream`s (fixes #39746), and
 - to preserve syntactic space, requires that `$` be followed by
   - a single identifier to unquote, or
   - another `$` to produce a literal `$`.

r? @nrc
2017-03-19 20:51:09 -04:00
Corey Farwell
6480a00222 Rollup merge of #40398 - eddyb:struct-hint, r=nikomatsakis
Propagate expected type hints through struct literals.

Partial fix for #31260 to maximize backwards-compatibility, i.e. the hint is provided but not coerced to.

The added test works because `{...; x}` with a hint of `T` coerces `x` to `T`, and the reasoning why that is slightly different has to do with DSTs: `&Struct { tail: [x] }: &Struct<[T]>` has a hint of `[T]` for `[x]`, but the inferred type should be `[T; 1]` to succeed later, so `[x]` shouldn't be *forced* to be `[T]`.

*However*, implementing that complete behavior in a backwards-compatible way may be non-trivial, and has not yet been fully investigated, while this PR fixes #40355 and can be backported.

r? @nikomatsakis
2017-03-19 20:51:07 -04:00
Corey Farwell
e5221f9397 Rollup merge of #40241 - Sawyer47:fix-39997, r=alexcrichton
Change how the `0` flag works in format!

Now it always implies right-alignment, so that padding zeroes are placed after the sign (if any) and before the digits. In other words, it always takes precedence over explicitly specified `[[fill]align]`. This also affects the '#' flag: zeroes are placed after the prefix (0b, 0o, 0x) and before the digits.

Here's a short summary of how similar format strings work in Python and Rust:

```
              :05     :<05    :>05    :^05
Python 3.6  |-0001| |-1000| |000-1| |0-100|
Rust before |-0001| |-1000| |-0001| |-0100|
Rust after  |-0001| |-0001| |-0001| |-0001|

             :#05x   :<#05x  :>#05x  :^#05x
Python 3.6  |0x001| |0x100| |000x1| |00x10|
Rust before |0x001| |0x100| |000x1| |0x010|
Rust after  |0x001| |0x001| |0x001| |0x001|
```

Fixes #39997 [breaking-change]
2017-03-19 20:51:06 -04:00
Corey Farwell
f2290dab9a Rollup merge of #40589 - topecongiro:floating-point-literal, r=nagisa
Parse 0e+10 as a valid floating-point literal

Fixes issue #40408.
2017-03-19 10:18:18 -04:00
Corey Farwell
03a30b5646 Rollup merge of #40588 - topecongiro:add-missing-tests, r=alexcrichton
Add a test for issue 34571

Closes #34571.
2017-03-19 10:18:17 -04:00
Corey Farwell
c949f49c27 Rollup merge of #40583 - jseyfried:fix_include_macro_regression, r=nrc
macros: fix regression with `include!()`

Fixes #40469, a regression when `include!()`ing a `macro_rules!` containing `$crate`.
r? @nrc
2017-03-19 10:18:16 -04:00
Corey Farwell
a04c7de2cf Rollup merge of #40564 - GuillaumeGomez:rustdoc-const, r=frewsxcv
Fix const not displayed in rustdoc

Fixes #40331.

r? @rust-lang/docs
2017-03-19 10:18:15 -04:00
Corey Farwell
9032ceae97 Rollup merge of #40445 - estebank:issue-18150, r=jonathandturner
Point to let when modifying field of immutable variable

Point at the immutable local variable when trying to modify one of its
fields.

Given a file:

```rust
struct Foo {
    pub v: Vec<String>
}

fn main() {
    let f = Foo { v: Vec::new() };
    f.v.push("cat".to_string());
}
```

present the following output:

```
error: cannot borrow immutable field `f.v` as mutable
 --> file.rs:7:13
  |
6 |    let f = Foo { v: Vec::new() };
  |        - this should be `mut`
7 |    f.v.push("cat".to_string());
  |    ^^^

error: aborting due to previous error
```

Fix #27593.
2017-03-19 10:18:13 -04:00
Corey Farwell
7b686ce4ca Rollup merge of #40441 - tschottdorf:promotable-rfc, r=eddyb
Add feature gate for rvalue-static-promotion

Probably needs more tests (which ones?) and there may be other things that need to be done. Also not sure whether the version that introduces the flag is really `1.15.1`.

See https://github.com/rust-lang/rfcs/pull/1414.

Updates #38865.
2017-03-19 10:18:12 -04:00
bors
9c15de4fd5 Auto merge of #40346 - jseyfried:path_and_tokenstream_attr, r=nrc
`TokenStream`-based attributes, paths in attribute and derive macro invocations

This PR
 - refactors `Attribute` to use  `Path` and `TokenStream` instead of `MetaItem`.
 - supports macro invocation paths for attribute procedural macros.
   - e.g. `#[::foo::attr_macro] struct S;`, `#[cfg_attr(all(), foo::attr_macro)] struct S;`
 - supports macro invocation paths for derive procedural macros.
   - e.g. `#[derive(foo::Bar, super::Baz)] struct S;`
 - supports arbitrary tokens as arguments to attribute procedural macros.
   - e.g. `#[foo::attr_macro arbitrary + tokens] struct S;`
 - supports using arbitrary tokens in "inert attributes" with derive procedural macros.
   - e.g. `#[derive(Foo)] struct S(#[inert arbitrary + tokens] i32);`
where `#[proc_macro_derive(Foo, attributes(inert))]`

r? @nrc
2017-03-19 10:56:08 +00:00
topecongiro
8eaac0843e Parse 0e+10 as a valid floating-point literal
Fixes issue #40408.
2017-03-18 21:16:16 +09:00
Taylor Cramer
1f43731772 Add more catch-related CFG and lifetime tests and fix CFG bug 2017-03-17 21:01:04 -07:00
Taylor Cramer
fc04eaacc5 Implement ? in catch expressions and add tests 2017-03-17 21:01:04 -07:00
Taylor Cramer
60c1c961c7 Make priv in pub hard error for crates using pub(restricted) 2017-03-17 20:38:32 -07:00
Ariel Ben-Yehuda
f2c7917402 translate drop glue using MIR
Drop of arrays is now translated in trans::block in an ugly way that I
should clean up in a later PR, and does not handle panics in the middle
of an array drop, but this commit & PR are growing too big.
2017-03-18 02:53:08 +02:00
Ariel Ben-Yehuda
e1f3c67cb4 translate closure shims using MIR 2017-03-18 02:53:07 +02:00
Ariel Ben-Yehuda
bf80fec326 translate function shims using MIR 2017-03-18 02:53:06 +02:00
Jeffrey Seyfried
cb96adea15 Fix regression when include!()ing a macro_rules! containing a $crate:: path. 2017-03-17 22:20:41 +00:00
Corey Farwell
5aab3b97af Rollup merge of #40500 - estebank:turbofish-help, r=pnkfelix
Point out correct turbofish usage on `Foo<Bar<Baz>>`

Whenever we parse a chain of binary operations, as long as the first
operation is `<` and the subsequent operations are either `>` or `<`,
present the following diagnostic help:

    use `::<...>` instead of `<...>` if you meant to specify type arguments

This will lead to spurious recommendations on situations like
`2 < 3 < 4` but should be clear from context that the help doesn't apply
in that case.

Fixes #40396.
2017-03-17 08:49:01 -04:00
Corey Farwell
dee6989b43 Rollup merge of #40457 - frewsxcv:frewsxcv-macos, r=steveklabnik
Update usages of 'OSX' (and other old names) to 'macOS'.

As of last year with version 'Sierra', the Mac operating system is now
called 'macOS'.
2017-03-17 08:48:52 -04:00
Corey Farwell
01ad185071 Rollup merge of #40433 - mattico:test-issue-29595, r=estebank
Add test for issue #29595

Closes #29595

Couldn't get this to run locally, all the compile-fail tests are ignored... let's see what Travis says.
2017-03-17 08:48:49 -04:00
Guillaume Gomez
5364acb418 Fix invalid debug display for associated consts 2017-03-17 00:27:36 +01:00
topecongiro
910532ed5e Add a test for issue 34571 2017-03-17 00:21:40 +09:00
Taylor Cramer
28626ca5b1 Stabilize pub(restricted) 2017-03-15 22:39:04 -07:00
Guillaume Gomez
9b892745ad Fix const not displayed in rustdoc 2017-03-16 02:15:10 +01:00
Jeffrey Seyfried
ce616a7d6a Improve the TokenStream quoter. 2017-03-15 23:05:02 +00:00
Piotr Jawniak
8065486283 Change how the 0 flag works in format! for floats
Now it always implies right-alignment, so that padding zeroes are placed after the sign (if any) and before the digits. In other words, it always takes precedence over explicitly specified `[[fill]align]`.

               :06      :<06     :>06     :^06
    before   |-001.2| |-1.200| |-001.2| |-01.20|
    after    |-001.2| |-001.2| |-001.2| |-001.2|
2017-03-15 07:50:44 -07:00
Piotr Jawniak
ff63866edb Change how the 0 flag works in format!
Now it always implies right-alignment, so that padding zeroes are placed after the sign (if any) and before the digits. In other words, it always takes precedence over explicitly specified `[[fill]align]`. This also affects the '#' flag: zeroes are placed after the prefix (0b, 0o, 0x) and before the digits.

           :05     :<05    :>05    :^05
before   |-0001| |-1000| |-0001| |-0100|
after    |-0001| |-0001| |-0001| |-0001|
          :#05x   :<#05x  :>#05x  :^#05x
before   |0x001| |0x100| |000x1| |0x010|
after    |0x001| |0x001| |0x001| |0x001|

Fixes #39997 [breaking-change]
2017-03-15 07:50:44 -07:00
Esteban Küber
e3b8550a60 Point out correct turbofish usage on Foo<Bar<Baz>>
Whenever we parse a chain of binary operations, as long as the first
operation is `<` and the subsequent operations are either `>` or `<`,
present the following diagnostic help:

    use `::<...>` instead of `<...>` if you meant to specify type arguments

This will lead to spurious recommendations on situations like
`2 < 3 < 4` but should be clear from context that the help doesn't apply
in that case.
2017-03-14 12:09:21 -07:00
Tobias Schottdorf
f06b04949f Improve the documentation for rvalue_static_promotion 2017-03-14 11:06:50 -04:00
Tobias Schottdorf
b43c744318 Add feature toggle for rvalue-static-promotion RFC
See https://github.com/rust-lang/rfcs/pull/1414.

Updates #38865.
2017-03-14 11:06:50 -04:00
bors
6f10e2f63d Auto merge of #39921 - cramertj:add-catch-to-ast, r=nikomatsakis
Add catch {} to AST

Part of #39849. Builds on #39864.
2017-03-14 10:40:09 +00:00
Jeffrey Seyfried
85e02bdbfc Add tests. 2017-03-14 04:39:23 +00:00
Jeffrey Seyfried
839c2860cc Liberalize attributes. 2017-03-14 04:39:21 +00:00
Esteban Küber
9ac628d5e8 Add label to primary span for mutable access of immutable struct error 2017-03-13 19:22:48 -07:00
Matt Ickstadt
5e49f79b06 Add test for issue #29595 2017-03-13 17:58:09 -05:00