Commit graph

20653 commits

Author SHA1 Message Date
Pietro Albini
2d29c44a5e
Rollup merge of #52904 - pnkfelix:issue-51167-sort-by-span, r=petrochenkov
NLL: sort diagnostics by span

Sorting the output diagnostics by span is a long planned revision to the NLL diagnostics that we hope will yield a less surprising user experience in some case.

Once we got them buffered, it was trivial to implement. (The hard part is skimming the resulting changes to the diagnostics to make sure nothing broke... Note that I largely rubber-stamped the `#[rustc_regions]` output change.)

Fix #51167
2018-08-01 10:13:04 +02:00
Pietro Albini
a8ed6033a6
Rollup merge of #52888 - estebank:shell-sugg, r=oli-obk
Use suggestions for shell format arguments

Follow up to #52649.
2018-08-01 10:13:02 +02:00
Pietro Albini
312f18c2ea
Rollup merge of #52883 - estebank:nll-diag-mut, r=oli-obk
Include lifetime in mutability suggestion in NLL messages

Fix #52880.
2018-08-01 10:13:01 +02:00
Pietro Albini
9443dd519d
Rollup merge of #52878 - mikhail-m1:master, r=kennytm
Fix wrong issue number in the test name

I made a mistake in previous PR #52620, second issue number was wrong, changing from #52133 to #52113

r? @kennytm
2018-08-01 10:13:00 +02:00
Pietro Albini
b3d6050358
Rollup merge of #52876 - cuviper:const-endianness-be, r=kennytm
run-pass/const-endianness: negate before to_le()

`const LE_I128` needs parentheses to negate the value *before* calling
`to_le()`, otherwise it doesn't match the operations performed in the
black-boxed part of the test.  This only makes a tangible difference on
big-endian targets.
2018-08-01 10:12:58 +02:00
Pietro Albini
5fb7c65f54
Rollup merge of #52851 - flip1995:tool_lints, r=oli-obk
Make the tool_lints actually usable

cc #44690

Necessary for rust-lang-nursery/rust-clippy#2955 and rust-lang-nursery/rust-clippy#2977

This PR makes it possible for lint tools (at the moment only for Clippy) to implement the `tool_lints`, like it was documented in #52018.

Because the `declare_lint` macro is pretty cluttered right now, there was not really a good way to add the `tool_name` as an additional argument of the macro. That's why I chose to introduce the new `declare_tool_lint` macro.

The switch from `&str` to `String` in the `lint_groups` `FxHashMap` is because I got weird error messages in the `check_lint_name` method. And the `by_name` field of the `LintStore` also uses `String`.

### What comes with this PR:

If this PR lands and Clippy switches to the `tool_lints`, the currently used methods
```rust
#[cfg_attr(feature = "cargo-clippy", allow(clippy_lint))]
#[allow(unknown_lints, clippy_lint)]
```
to `allow`/`warn`/`deny`/`forbid` Clippy lints, won't have any effects anymore, but also won't produce a warning. That is because the name of `clippy_lint` will then be `clippy::clippy_lint`. (Maybe we can add a clippy lint to search for `cfg_attr` appearances with the `cargo-clippy` feature?)

r? @oli-obk
2018-08-01 10:12:51 +02:00
Pietro Albini
fe4358a34f
Rollup merge of #52825 - RalfJung:codegen, r=alexcrichton
Make sure #47772 does not regress

Mostly to make my life in https://github.com/rust-lang/rust/pull/52206 harder.^^

Or should I just add that test there?
2018-08-01 10:12:46 +02:00
Pietro Albini
333d8c456c
Rollup merge of #52810 - matthewjasper:more-immutablity, r=pnkfelix
[NLL] Don't make "fake" match variables mutable

These variables can't be mutated by the user, but since they have names the unused-mut lint thinks that it should check them.
2018-08-01 10:12:41 +02:00
Pietro Albini
03df573c57
Rollup merge of #52628 - Mark-Simulacrum:rustdoc-cleanup-1, r=QuietMisdreavus
Cleanup some rustdoc code

Commits are mostly individual though some do depend on others.
2018-08-01 10:12:35 +02:00
bors
c63bb1d6a7 Auto merge of #52756 - alexcrichton:cap-applicable, r=oli-obk
rustc: Disallow machine applicability in foreign macros

Recent changes to lints disallowed lints from being emitted against code located
in foreign macros, except for future-incompatible lints. For a future
incompatible lint, however, the automatic suggestions may not be applicable!

This commit updates this code path to force all applicability suggestions made
to foreign macros to never be `MachineApplicable`. This should avoid rustfix
actually attempting fixing these suggestions, causing non-compiling code to be
produced.

Closes rust-lang/cargo#5799
2018-08-01 06:44:09 +00:00
Eduard-Mihai Burtescu
dbc0cd94b9 rustc_resolve: record single-segment extern crate import resolutions. 2018-08-01 04:31:34 +03:00
Mark Rousskov
0f680b38d0 Fixup test case 2018-07-31 17:55:12 -06:00
Esteban Küber
75ff0ddb43 Use suggestions for shell format arguments 2018-07-31 14:16:36 -07:00
bors
e94df4acb4 Auto merge of #52234 - petrochenkov:macuse2, r=Mark-Simulacrum
resolve: Modularize crate-local `#[macro_export] macro_rules`

Based on https://github.com/rust-lang/rust/pull/50911, cc https://github.com/rust-lang/rust/pull/50911#issuecomment-401151270

`#[macro_export] macro_rules` items are collected from the whole crate and are planted into the root module as items, so the external view of the crate is symmetric with its internal view and something like `$crate::my_macro` where `my_macro` is `#[macro_export] macro_rules` works both locally and from other crates.

Closes https://github.com/rust-lang/rust/issues/52726
2018-07-31 20:52:14 +00:00
John Kåre Alsaker
0babbf11e6 Don't count MIR locals as borrowed after StorageDead when finding locals live across a yield terminator 2018-07-31 22:39:33 +02:00
Matthew Jasper
84dc48522d Allow borrow conflicts for promoted length 0 arrays 2018-07-31 21:35:22 +01:00
Simonas Kazlauskas
40a60464d4 Only run the sparc-abi test on sparc
It is not required for LLVM to have SPARC target support, so it is
necessary to only run this test when LLVM does support SPARC. Sadly, it
isn’t possible to specify exactly this constraint. Instead, we specify
that this test should run on SPARC host only (it surely is sane
assumption to make that compiler running on a SPARC can generate
SPARC, right?)

Since you cannot specify multiple `only-*` to have it run on both 32-bit
and 64-bit SPARC we pick 64-bit SPARC, because it is exactly what is
being tested by this test.

Fixes #52881
2018-07-31 22:47:12 +03:00
Laurentiu Nicola
38e311e448 Use SetLenOnDrop in Vec::truncate()
This avoids a redundant length check in some cases when calling
`Vec::truncate` or `Vec::clear`.

Fixes #51802
2018-07-31 20:53:53 +03:00
Alex Crichton
f0bceba669 rustc: Handle linker diagnostic from LLVM
Previously linker diagnostic were being hidden when two modules were linked
together but failed to link. This commit fixes the situation by ensuring that we
have a diagnostic handler installed and also adds support for handling linker
diagnostics.
2018-07-31 10:47:27 -07:00
Felix S. Klock II
a5a3f765eb NLL: On "cannot move out of type" error, print original source before rewrite.
* Arguably this change is sometimes injecting noise into the output
   (namely in the cases where the suggested rewrite is inline with the
   suggestion and we end up highlighting the original source code).
   I would not be opposed to something more aggressive/dynamic, like
   revising the suggestion code to automatically print the original
   source when necessary (e.g. when the error does not have a span
   that includes the span of the suggestion).

 * Also, as another note on this change: The doc comment for `Diagnostic::span_suggestion`
   says:
    /// The message
    ///
    /// * should not end in any punctuation (a `:` is added automatically)
    /// * should not be a question
    /// * should not contain any parts like "the following", "as shown"

   but the `:` is *not* added when the emitted line appears
   out-of-line relative to the suggestion. I find that to be an
   unfortunate UI experience.

----

As a drive-by fix, also changed code to combine multiple suggestions
for a pattern into a single multipart suggestion (which vastly
improves user experience IMO).

----

Includes the updates to expected NLL diagnostics.
2018-07-31 17:27:29 +02:00
dragan.mladjenovic
f985e6cfd4 tests/ui: Add missing mips{64} ignores 2018-07-31 15:22:14 +02:00
Felix S. Klock II
faf841a9f6 Update the .nll.stderr files under new sorted-by-span scheme. 2018-07-31 14:51:36 +02:00
Felix S. Klock II
26776858cf Update tests that use -Z borrowck=compare or #[feature(nll)] to accmmodate diagnostic change. 2018-07-31 14:36:50 +02:00
Felix S. Klock II
6787e25c29 Blindly update the #[rustc_region] tests which got touched by the NLL diagnostic change. 2018-07-31 14:35:43 +02:00
bors
ed8d14db99 Auto merge of #50267 - humanenginuity:master, r=alexcrichton
Implement inner deref for Option and Result

tracking issue: #50264
2018-07-31 11:20:16 +00:00
Ralf Jung
fb7d8a12db hopefully make test pass on windows 2018-07-31 11:17:26 +02:00
Ralf Jung
50773991d3 make sure that the no-panic test tests what it is supposed to test 2018-07-31 10:33:32 +02:00
John Renner
caab47d3e9 Just tidying up 2018-07-30 19:55:23 -07:00
John Renner
f76049cd6a Reexport tests without polluting namespaces 2018-07-30 19:23:24 -07:00
Niko Matsakis
d42bc58b1d add regression test for #52057
Fixes #52057
2018-07-31 02:31:41 +02:00
Esteban Küber
c883edfbc6 Include lifetime in mutability suggestion in NLL messages 2018-07-30 15:41:39 -07:00
Josh Stone
1ea2765918 run-pass/const-endianness: negate before to_le()
`const LE_I128` needs parentheses to negate the value *before* calling
`to_le()`, otherwise it doesn't match the operations performed in the
black-boxed part of the test.  This only makes a tangible difference on
big-endian targets.
2018-07-30 13:08:56 -07:00
Guillaume Gomez
d5f1f70a8e Fix Alias intra doc ICE 2018-07-30 20:57:27 +02:00
Mikhail Modin
b6b025bdaf Fix wrong issue number in the test name 2018-07-30 17:05:30 +01:00
Alex Crichton
ca762ba954 rustc: Disallow machine applicability in foreign macros
Recent changes to lints disallowed lints from being emitted against code located
in foreign macros, except for future-incompatible lints. For a future
incompatible lint, however, the automatic suggestions may not be applicable!

This commit updates this code path to force all applicability suggestions made
to foreign macros to never be `MachineApplicable`. This should avoid rustfix
actually attempting fixing these suggestions, causing non-compiling code to be
produced.

Closes rust-lang/cargo#5799
2018-07-30 07:48:59 -07:00
flip1995
d4ff949953
Add a test for the declare_tool_lint macro 2018-07-30 16:10:55 +02:00
bors
5ed2b5120b Auto merge of #52722 - alexcrichton:more-identifier-lints, r=oli-obk
Tweak the raw_identifiers lints in 2018

* Enable the `raw_identifiers` feature automatically in the 2018 preview
* Only emit lint warnings if the `raw_identifiers` feature is activated

cc rust-lang/cargo#5783
2018-07-30 08:25:36 +00:00
Brad Gibson
56016cb1e0 resolved upstream merge conflicts 2018-07-29 22:13:12 -07:00
bors
a3f519df09 Auto merge of #52823 - RalfJung:test, r=eddyb
invalid_const_promotion: check if we get the right signal

r? @eddyb
2018-07-30 04:34:19 +00:00
Ralf Jung
86e59ccf34 dont hardcode vtable size in codegen test 2018-07-29 20:24:26 +02:00
Ralf Jung
5ba76335bb update codegen tests 2018-07-29 20:24:26 +02:00
Oliver Schneider
3e8337eb3d Move a test that depends on the arch bitwidth to compile-fail 2018-07-29 20:24:26 +02:00
Oliver Schneider
9377041de9 Sanity-check all constants 2018-07-29 20:22:15 +02:00
Vadim Petrochenkov
44422409a4 resolve: Modularize crate-local #[macro_export] macro_rules 2018-07-29 19:30:13 +03:00
bors
75af9df71b Auto merge of #52620 - mikhail-m1:51351, r=nikomatsakis
fix simple case of issue #51351 and #52133

r? @nikomatsakis
2018-07-29 13:23:01 +00:00
Ralf Jung
90165b82fc Make sure #47772 does not regress 2018-07-29 13:41:43 +02:00
Ralf Jung
c7f01aa175 invalid_const_promotion: check if we get the right signal 2018-07-29 13:11:01 +02:00
Mikhail Modin
bb66d70b89 fix issues #51351 and #52133 2018-07-29 11:42:50 +01:00
bors
6323d9a45b Auto merge of #52355 - pietroalbini:zfeature, r=eddyb
Add the -Zcrate-attr=foo unstable rustc option

This PR adds a new unstable option to `rustc`: `-Zcrate-attr=foo`. The option can be used to inject crate-level attributes from the CLI, and it's meant to be used by tools like Crater that needs to add their own attributes to a crate without changing the source code.

The exact reason I need this is to implement "edition runs" in Crater: we need to add the preview feature flag to every crate, and editing the crates' source code on the fly might produce unexpected results, while a compiler flag is more reliable.

cc https://github.com/rust-lang-nursery/crater/issues/282 @Mark-Simulacrum
2018-07-28 23:10:10 +00:00
bors
dab71516f1 Auto merge of #52585 - GuillaumeGomez:generic-impls, r=QuietMisdreavus
[rustdoc] Generic impls

Fixes #33772.

r? @QuietMisdreavus
2018-07-28 20:44:17 +00:00