Commit graph

1676 commits

Author SHA1 Message Date
bors
8a37c75a3a Auto merge of #50355 - petrochenkov:50187, r=oli-obk
Fix an unresolved import issue with enabled `use_extern_macros`

This is a kinda ugly special-purpose solution that will break if we suddenly add a fourth namespace, but I hope to come up with something more general if I get to import resolution refactoring this summer.

Fixes https://github.com/rust-lang/rust/issues/50187 thus removing a blocker for stabilization of `use_extern_macros`
2018-05-02 20:33:31 +00:00
bors
3eadd75473 Auto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb
Correct initial field alignment for repr(C)/repr(int)

Fixes #50098 following https://github.com/rust-lang/rust/issues/50098#issuecomment-385497333.

(I wasn't sure which kind of test was best suited here — I picked run-pass simply because that was convenient, but if codegen is more appropriate, let me know and I'll change it.)

r? @eddyb
2018-05-02 17:02:25 +00:00
bors
d40a0b3dc1 Auto merge of #49943 - pnkfelix:fix-issue-49918, r=nikomatsakis
Treat generators as if they have an arbitrary destructor

Conservatively assume dropping a generator touches its upvars, via locals' destructors.

Fix #49918
2018-05-02 12:20:31 +00:00
bors
96b09e0212 Auto merge of #49982 - petrochenkov:noreex, r=alexcrichton
Remove unstable `macro_reexport`

It's subsumed by `feature(use_extern_macros)` and `pub use`

cc https://github.com/rust-lang/rust/issues/35896
closes https://github.com/rust-lang/rust/issues/29638
closes https://github.com/rust-lang/rust/issues/38951
2018-05-01 21:22:49 +00:00
Felix S. Klock II
f12d7a55fc Update ui/generator tests to reflect changes from new generator drop rules. 2018-05-01 22:28:54 +02:00
varkor
2d0d73ea5a Add a print_types_sizes regression test 2018-05-01 20:25:30 +01:00
bors
4d7bbdd826 Auto merge of #49789 - petrochenkov:prelext, r=nikomatsakis
Module experiments: Add one more prelude layer for extern crate names passed with `--extern`

Implements one item from https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678/183

When some name is looked up in lexical scope (`name`, i.e. not module-relative scope `some_mod::name` or `::name`), it's searched roughly in the next order:
- local variables
- items in unnamed blocks
- items in the current module
-  NEW!  crate names passed with `--extern` ("extern prelude")
- standard library prelude (`Vec`, `drop`)
- language prelude (built-in types like `u8`, `str`, etc)

The last two layers contain a limited set of names controlled by us and not arbitrary user-defined names like upper layers. We want to be able to add new names into these two layers without breaking user code, so "extern prelude" names have higher priority than std prelude and built-in types.
This is a one-time breaking change, that's why it would be nice to run this through crater.
Practical impact is expected to be minimal though due to stylistic reasons (there are not many `Uppercase` crates) and due to the way how primitive types are resolved (https://github.com/rust-lang/rust/pull/32131).
2018-05-01 16:58:26 +00:00
Vadim Petrochenkov
730c7222ee Fix an error from "unused" lint + Fix rebase 2018-05-01 17:02:18 +03:00
Vadim Petrochenkov
d98100b967 Give removal reasons to removed features 2018-05-01 15:58:42 +03:00
Vadim Petrochenkov
300b6bb417 Remove macro_reexport
It's subsumed by `feature(use_extern_macros)` and `pub use`
2018-05-01 15:58:42 +03:00
bors
0d8321b5e8 Auto merge of #50198 - oli-obk:const_prop, r=eddyb
Remove some unused code
2018-05-01 12:16:14 +00:00
Vadim Petrochenkov
d5e31158a2 Better support for import resolution in 3 namespaces 2018-05-01 03:12:36 +03:00
bors
357bf00f1c Auto merge of #48925 - zackmdavis:fn_must_stabilize, r=nikomatsakis
stabilize `#[must_use]` for functions and must-use comparison operators (RFC 1940)

r? @nikomatsakis
2018-04-30 22:02:33 +00:00
kennytm
cbbdf998ed
Rollup merge of #50327 - varkor:match-unused-struct-field, r=estebank
Display correct unused field suggestion for nested struct patterns

Extends https://github.com/rust-lang/rust/pull/47922 by checking more sophisticated patterns (e.g. references, slices, etc.).
Before:
```
warning: unused variable: `bar`
  --> src/main.rs:37:21
   |
37 |         &Foo::Bar { bar } => true,
   |                     ^^^ help: consider using `_bar` instead
   |
   = note: #[warn(unused_variables)] on by default
```
After:
```
warning: unused variable: `bar`
  --> src/main.rs:37:21
   |
37 |         &Foo::Bar { bar } => true,
   |                     ^^^ help: try ignoring the field: `bar: _`
   |
   = note: #[warn(unused_variables)] on by default
```

Fixes #50303.

r? @estebank
2018-05-01 01:18:40 +08:00
Oliver Schneider
f66367dacc
Improve div by zero const eval errors 2018-04-30 18:29:15 +02:00
Oliver Schneider
5f46e5cc7e
Update ui test output 2018-04-30 18:18:33 +02:00
bors
7fbc4d881d Auto merge of #50272 - scottmcm:termination-test-error, r=nikomatsakis
Add a ui test for an incorrect Result success type in a #[test]

cc https://github.com/rust-lang/rust/issues/48854#issuecomment-384730601
r? @nikomatsakis
2018-04-30 07:48:50 +00:00
varkor
2eb8343af1 Correct unused field warning on struct match container patterns 2018-04-30 01:27:37 +01:00
bors
78bcd9b5fe Auto merge of #50092 - abonander:issue-49934, r=petrochenkov
Warn on pointless #[derive] in more places

This fixes the regression in #49934 and ensures that unused `#[derive]` invocations on statements, expressions and generic type parameters survive to trip the `unused_attributes` lint. There is a separate warning hardcoded for `#[derive]` on macro invocations since linting (even the early-lint pass) occurs after expansion. This also adds regression tests for some nodes that were already warning properly.

closes #49934
2018-04-30 00:18:49 +00:00
varkor
8e8fe9042c Correct unused field warning on box struct match 2018-04-30 00:51:02 +01:00
varkor
cc53db8bf9 Correct unused field warning on &struct match 2018-04-30 00:40:11 +01:00
Austin Bonander
f16d2ff7ec Warn on pointless #[derive] in more places
This fixes the regression in #49934 and ensures that unused `#[derive]`s on statements, expressions and generic type parameters survive to trip the `unused_attributes` lint. For `#[derive]` on macro invocations it has a hardcoded warning since linting occurs after expansion. This also adds regression testing for some nodes that were already warning properly.

closes #49934
2018-04-29 16:01:41 -07:00
bors
774a6a3c4b Auto merge of #50317 - varkor:repr-align-assign, r=nagisa
Improve error message for #[repr(align=x)]

Before:
```
error[E0552]: unrecognized representation hint
 --> src/main.rs:1:8
  |
1 | #[repr(align="8")]
  |        ^^^^^^^^^
```
After:
```
error[E0693]: incorrect `repr(align)` attribute format
 --> src/main.rs:1:8
  |
2 | #[repr(align="8")]
  |        ^^^^^^^^^ help: use parentheses instead: `align(8)`
```

Fixes #50314.
2018-04-29 21:55:50 +00:00
varkor
35fe2998c0 Add test for repr(align=x) 2018-04-29 18:46:41 +01:00
Zack M. Davis
3dbdccc6a9 stabilize #[must_use] for functions and must-use operators
This is in the matter of RFC 1940 and tracking issue #43302.
2018-04-28 20:32:49 -07:00
bors
1e01e22509 Auto merge of #50295 - SergioBenitez:master, r=alexcrichton
Don't feature gate bang macros on 'proc_macro_path_invoc'.

Fixes oversight from #50120.
2018-04-28 15:33:31 +00:00
bors
ff65726ebf Auto merge of #50155 - est31:label_expressions, r=petrochenkov
'label can start expressions

```Rust
let foo = 'label: loop { break 'label 42; };
```

is valid Rust code.
2018-04-28 10:08:56 +00:00
Sergio Benitez
f756b072b3 Don't feature gate bang macros on 'proc_macro_path_invoc'. 2018-04-27 21:32:41 -07:00
bors
1eb0cef62b Auto merge of #50149 - aaronaaeng:master, r=estebank
Added warning for unused arithmetic expressions

The compiler now displays a warning when a binary arithmetic operation is evaluated but not used.  This resolves #50124  by following the instructions outlined in the issue.  The changes are as follows:

- Added new pattern matching for unused arithmetic expressions in `src/librustc_lint/unused.rs`
- Added `#[must_use]` attributes to the binary operation methods in `src/libcore/internal_macros.rs`
- Added `#[must_use]` attributes to the non-assigning binary operators in `src/libcore/ops/arith.rs`
2018-04-28 04:14:12 +00:00
bors
ede7f94794 Auto merge of #49822 - matthewjasper:dropck-closures, r=nikomatsakis
Access individual fields of tuples, closures and generators on drop.

Fixes #48623, by extending the change in #47917 to closures. Also does this for tuples and generators for consistency.

Enums are unchanged because there is now way to borrow `*enum.field` without borrowing `enum.field` at the moment, so any error would be reported when the enum goes out of scope. Unions aren't changed because unions they don't automatically drop their fields.

r? @nikomatsakis
2018-04-27 23:31:43 +00:00
kennytm
dc6b167e22
Rollup merge of #50257 - estebank:fix-49560, r=nikomatsakis
Don't ICE on tuple struct ctor with incorrect arg count

Fix #49560.
2018-04-28 04:51:00 +08:00
Matthew Jasper
902bc0fb1a Access individual fields of tuples, closures and generators on drop. 2018-04-27 20:41:30 +01:00
kennytm
3f84ce2e0e
Rollup merge of #50273 - Amanieu:issue-49532, r=alexcrichton
Allow #[inline] on closures

Fixes #49632
2018-04-28 03:32:18 +08:00
kennytm
8b36d9abaa
Rollup merge of #49968 - christianpoveda:stabilize_dyn, r=nikomatsakis
Stabilize dyn trait

This PR stabilizes RFC 2113. I followed the [stabilization guide](https://forge.rust-lang.org/stabilization-guide.html).

Related issue: https://github.com/rust-lang/rust/issues/49218
2018-04-28 03:32:12 +08:00
Christian Poveda
b80472d84c fixed tests 2018-04-27 11:02:36 -05:00
Christian Poveda
4bf35f93c9 updated stderr files and removed feature-gate test for dyn_trait 2018-04-27 10:05:51 -05:00
Christian Poveda
0efb5677d7 dyn_trait feature-gate just for stage0 2018-04-27 10:04:58 -05:00
Christian Poveda
c86f1c8cc3 removed dyn_trait feature from tests 2018-04-27 10:04:35 -05:00
Christian Poveda
199ee32773 stop requiring the feature-gate to use dyn_trait 2018-04-27 10:04:02 -05:00
Amanieu d'Antras
5f2c111165 Allow #[inline] on closures
Fixes #49632
2018-04-27 12:34:01 +02:00
Scott McMurray
f0069b8486 Add a ui test for an incorrect Result success type in a #[test] 2018-04-26 21:33:05 -07:00
Aravind Gollakota
bc16b8e92a Port existing callers of evaluate_obligation to the new canonical trait query
Except the one in coherence, which needs support for intercrate mode.
2018-04-26 20:28:30 -05:00
Vadim Petrochenkov
c1492fe303 Add one more prelude layer for extern crate names passed with --extern 2018-04-27 00:46:55 +03:00
Esteban Küber
d92d1935cb Don't ICE on tuple struct ctor with incorrect arg count 2018-04-26 14:19:21 -07:00
bors
3eca70a0c5 Auto merge of #50072 - oli-obk:discriminants, r=eddyb
Allow variant discriminant initializers to refer to other initializer…

…s of the same enum

r? @eddyb

fixes the 2.4 failure of https://github.com/rust-lang/rust/issues/49765

cc @durka @retep998
2018-04-26 08:51:39 +00:00
Oliver Schneider
195c9f47e9
Allow variant discriminant initializers to refer to other initializers of the same enum 2018-04-26 08:54:14 +02:00
bors
5ec6637c15 Auto merge of #50110 - oli-obk:warn_all_the_constants, r=estebank
Warn on all erroneous constants

fixes #49791
fixes #47054

@Zoxc this PR triggers the nondeterministic errors of https://github.com/rust-lang/rust/pull/49950#issuecomment-383074959 really often (at least on stage1).
2018-04-25 09:19:07 +00:00
bors
432fe0cefc Auto merge of #50100 - Manishearth:edition-path-lint, r=nikomatsakis
Edition breakage lint for absolute paths starting with modules

We plan to enable `extern_absolute_paths` in the 2018 edition. To allow for that, folks must transition their paths in a previous edition to the new one. This makes paths which import module contents via `use module::` or `::module::` obsolete, and we must edition-lint these.

https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678/205?u=manishearth is the current plan for paths.

r? @nikomatsakis

Fixes #48722
2018-04-25 04:19:06 +00:00
Oliver Schneider
cd6c186e4e
Warn on all erroneous constants 2018-04-24 13:11:48 +02:00
bors
2a6200a5c8 Auto merge of #49911 - rcoh:master, r=nikomatsakis
Don't allow #[should_panic] with non-() tests

Adds (removes) support for `#[should_panic]` when the test is non-`()`
2018-04-24 10:44:22 +00:00