Commit graph

10975 commits

Author SHA1 Message Date
Joe Richey
7d5415b5a2 Add additional checks for isize overflow
We now perform the correct checks even if the pointer size differs
between the host and target.

Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-27 19:10:17 -07:00
Esteban Küber
2b35247d7a Modify wording 2020-05-27 16:28:20 -07:00
Esteban Küber
d0d30b0a3e fix rebase 2020-05-27 16:28:20 -07:00
Esteban Küber
3811232190 review comments 2020-05-27 16:28:20 -07:00
Esteban Küber
eb0f4d51df Tweak output for mismatched impl item
Detect type parameter that might require lifetime constraint.
Do not name `ReVar`s in expected/found output.
Reword text suggesting to check the lifetimes.
2020-05-27 16:28:20 -07:00
Esteban Küber
5ba22205a4 Name RegionKind::ReVar lifetimes in diagnostics 2020-05-27 16:28:04 -07:00
Esteban Küber
3fea832fd7 Fix spacing of expected/found notes without a label 2020-05-27 16:27:15 -07:00
Jonas Schievink
1ab0db1272
Fix incorrect comment in generator test 2020-05-27 21:38:38 +02:00
LeSeulArtichaut
3599ada976 Mark deduplicated errors as expected in gate test 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
9671b44609 Add tests for packed borrows in unsafe fns 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
925d5ac45f Fix and bless tests 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
3ce9d5c269 Add more cases to the test 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
bb67915028 Apply suggestions from code review 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
594c499db9 Add tests 2020-05-27 20:37:57 +02:00
Ralf Jung
7b1187968c expand unaligned_references test 2020-05-27 20:31:17 +02:00
Chris Simpkins
593d1eed82
improve diagnostics suggestion for missing @ in slice id binding to rest pattern
add issue 72373 tests


fmt test


fix suggestion format

Replacement, not insertion of suggested string

implement review changes

refactor to span_suggestion_verbose, improve suggestion message,  change id @ pattern space formatting

fmt


fix diagnostics spacing between ident and @


refactor reference
2020-05-27 14:10:41 -04:00
Andy Russell
68bf8d2487
expand env! with def-site context 2020-05-26 21:49:55 -04:00
Dylan DPC
2b3b115a4d
Rollup merge of #72548 - rossmacarthur:add-mcve-for-50687, r=nikomatsakis
Add test for old compiler ICE when using `Borrow`

The original issue was caused by implementing `Borrow` on a local type and using the tokio-reactor crate which had this impl: https://github.com/tokio-rs/tokio/blob/tokio-0.1.4/tokio-reactor/src/poll_evented.rs#L547-L577

This causes an ICE on Rust 1.27.0:

```console
$ RUSTUP_TOOLCHAIN=1.27.0 rustc src/test/ui/issues/issue-50687-ice-on-borrow.rs
error: internal compiler error: librustc/traits/structural_impls.rs:180: impossible case reached

thread 'main' panicked at 'Box<Any>', librustc_errors/lib.rs:554:9
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: aborting due to previous error

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.27.0 (3eda71b00 2018-06-19) running on x86_64-apple-darwin
```

Closes #50687
2020-05-27 03:09:15 +02:00
Dylan DPC
cbe7b908b1
Rollup merge of #72348 - chrissimpkins:fix-72253, r=estebank
Fix confusing error message for comma typo in multiline statement

Fixes #72253.  Expands on the issue with a colon typo check.

r? @estebank

cc @ehuss
2020-05-27 03:09:11 +02:00
Chris Simpkins
f384cdcbec
improve error message for unexpected comma token in multiline block
confusing diagnostics, issue #72253

add test for confusing error message, issue-72253


remove is_multiline check, refactor to self.expect(&token:Semi)


update issue-72253 tests


return Ok
2020-05-26 16:52:16 -04:00
Dylan DPC
5fb7210799
Rollup merge of #72581 - samrat:allow-desugared-break-in-labeled-block, r=davidtwco
Allow unlabeled breaks from desugared `?` in labeled blocks

`?` is desugared into a `break` targeting the innermost `try` scope in which it resides. The `break` however will not have a label. https://github.com/rust-lang/rust/blob/master/src/librustc_ast_lowering/expr.rs#L1560

Since the `target` of the `break` is known, the compiler should not complain about an unlabeled jump for `break`s desugared from `?`.

Closes https://github.com/rust-lang/rust/issues/72483
2020-05-26 22:11:33 +02:00
Dylan DPC
401b3aefe9
Rollup merge of #72401 - ecstatic-morse:issue-72394, r=eddyb
Use correct function for detecting `const fn` in unsafety checking

Resolves #72394.
2020-05-26 22:11:31 +02:00
Dylan DPC
e38fdda243
Rollup merge of #72342 - jsgf:warn-unused-deps, r=petrochenkov
Warn about unused crate deps

Implements #57274 by adding -Wunused-crate-dependencies. This will warn about any `--extern` option on the command line which isn't referenced by the crate source either via `use` or `extern crate`.

Crates which are added for some side effect but are otherwise unreferenced - such as for symbols they define - the warning can be suppressed with `use somecrate as _;`.

If a crate has multiple aliases (eg using `foo = { package = "bar" }` in `Cargo.toml`), then it will warn about each unused alias.

This does not consider crate added by some other means than `--extern`, including the standard library. It also doesn't consider any crate without `add_prelude` set (though I'm not sure about this).

Unfortunately this probably [does not yet work well with Cargo](https://github.com/rust-lang/rust/issues/57274#issuecomment-624839355) as it will over-specify crates, causing spurious warnings. As a result, this lint is "allow" by default and must be explicitly enabled either via `#![warn(unused_crate_deps)]` or with `-Wunused-crate-deps`.
2020-05-26 22:11:29 +02:00
Dylan DPC
6e6bd630e6
Rollup merge of #72270 - RalfJung:lint-ref-to-packed, r=oli-obk
add a lint against references to packed fields

Creating a reference to an insufficiently aligned packed field is UB and should be disallowed, both inside and outside of `unsafe` blocks. However, currently there is no stable alternative (https://github.com/rust-lang/rust/issues/64490) so all we do right now is have a future incompatibility warning when doing this outside `unsafe` (https://github.com/rust-lang/rust/issues/46043).

This adds an allow-by-default lint. @retep998 suggested this can help early adopters avoid issues. It also means we can then do a crater run where this is deny-by-default as suggested by @joshtriplett.

I guess the main thing to bikeshed is the lint name. I am not particularly happy with "packed_references" as it sounds like the packed field has reference type. I chose this because it is similar to "safe_packed_borrows". What about "reference_to_packed" or "unaligned_reference" or so?
2020-05-26 22:11:22 +02:00
Stanislav Tkach
6ddbef170b Simplify suggestion 2020-05-26 23:06:46 +03:00
Aaron Hill
1c30c9e92b
Don't bail out of trait selection when predicate references an error
Fixes #72590

With PR #70551, observing a `ty::Error` guarantees that compilation is
going to fail. Therefore, there are no soundness impliciations to
continuing on when we encounter a `ty::Error` - we can only affect
whether or not additional error messags are emitted.

By not bailing out, we avoid incorrectly determining that types are
`!Sized` when a type error is present, which allows us to avoid emitting
additional spurious error messages.

The original comment mentioned this code being shared by coherence -
howver, this change resulted in no diagnostic changes in any of the
existing tests.
2020-05-26 14:26:40 -04:00
Yuki Okushi
6315d0c99e
Add test for #71042 2020-05-27 00:56:27 +09:00
Yuki Okushi
4b87f97ca8
Add test for #70121 2020-05-27 00:48:38 +09:00
Yuki Okushi
125f0abb42
Add test for #68532 2020-05-27 00:48:37 +09:00
Yuki Okushi
ca722b9358
Add test for #56445 2020-05-27 00:48:37 +09:00
Amanieu d'Antras
de53276aac Fix test 2020-05-26 11:27:27 +01:00
Amanieu d'Antras
6faa82be42 Eagerly lower asm sub-expressions to HIR even if there is an error
Fixes #72570
2020-05-26 11:06:25 +01:00
Guillaume Gomez
37bdb3bb3b Update UI test 2020-05-26 11:16:02 +02:00
Joe Richey
71ef8414bd Add checks and tests for computing abs(offset_bytes)
The previous code paniced if offset_bytes == i64::MIN. This commit:
  - Properly computes the absoulte value to avoid this panic
  - Adds a test for this edge case

Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-26 02:06:18 -07:00
Aaron Hill
ebe5a916b0
Properly encode AnonConst into crate metadata
Fixes #68104

Previous, we were encoding AnonConst as a regular Const, causing us to
treat them differently after being deserialized in another compilation
session.
2020-05-26 01:48:45 -04:00
Jeremy Fitzhardinge
ffa493ab57 Implement warning for unused dependencies.
This will print a diagnostic for crates which are mentioned as `--extern`
arguments on the command line, but are never referenced from the source.

This diagnostic is controlled by `-Wunused-crate-dependencies` or
`#![warn(unused_crate_dependencies)]` and is "allow" by default.

There are cases where certain crates need to be linked in but are not
directly referenced - for example if they are providing symbols for C
linkage. In this case the warning can be suppressed with
`use needed_crate as _;`.

Thanks to @petrochenkov for simplified core.

Resolves issue #57274
2020-05-25 22:47:55 -07:00
Aaron Hill
4e2696f54a
Only capture tokens for items with outer attributes
Suggested by @petrochenkov in https://github.com/rust-lang/rust/issues/43081#issuecomment-633389225
2020-05-25 23:44:40 -04:00
Aaron Hill
9cee22c1a4
Display information about captured variable in FnMut error
Fixes #69446

When we encounter a region error involving an `FnMut` closure, we
display a specialized error message. However, we currently do not
tell the user which upvar was captured. This makes it difficult to
determine the cause of the error, especially when the closure is large.

This commit records marks constraints involving closure upvars
with `ConstraintCategory::ClosureUpvar`. When we decide to 'blame'
a `ConstraintCategory::Return`, we additionall store
the captured upvar if we found a `ConstraintCategory::ClosureUpvar` in
the path.

When generating an error message, we point to relevant spans if we have
closure upvar information available. We further customize the message if
an `async` closure is being returned, to make it clear that the captured
variable is being returned indirectly.
2020-05-25 23:18:00 -04:00
bors
9eedd138ee Auto merge of #71487 - rcoh:71471-shebang, r=petrochenkov
Fix bug in shebang handling

Shebang handling was too agressive in stripping out the first line in cases where it is actually _not_ a shebang, but instead, valid rust (#70528). This is a second attempt at resolving this issue (the first attempt was reverted, for, among other reasons, causing an ICE in certain cases (#71372, #71471).

The behavior is now codified by a number of UI tests, but simply:
For the first line to be a shebang, the following must all be true:
1. The line must start with `#!`
2. The line must contain a non-whitespace character after `#!`
3. The next character in the file, ignoring comments & whitespace must not be `[`

I believe this is a strict superset of what we used to allow, so perhaps a crater run is unnecessary, but probably not a terrible idea.

Fixes #70528
2020-05-26 01:43:40 +00:00
Dylan DPC
a7ff5a0077
Rollup merge of #72450 - csmoe:issue-72442, r=oli-obk
Fix ice-#72442

Closes #72442
Closes #72426
r? @oli-obk
2020-05-25 23:58:56 +02:00
Dylan DPC
b3f1b9541a
Rollup merge of #72061 - lcnr:const-inference-test, r=eddyb
add regression tests for stalled_on const vars

closes #70180

Afaict this has been fixed sometime after #70213

`trait_ref_type_vars` correctly adds const infers and I did not find any remaining `FIXME`s which correspond to this issue.
7c59a81a5f/src/librustc_trait_selection/traits/fulfill.rs (L555-L557)

Added both examples from the issue as regression tests and renamed `trait_ref_type_vars` -> `trait_ref_infer_vars`.

r? @eddyb
2020-05-25 23:58:53 +02:00
Joe Richey
6b20f58c0d miri_unleached: We now allow offset in const fn
Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-25 13:09:02 -07:00
Joe Richey
88a37a2086 test/ui/consts: Add tests for const ptr offsets
Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-25 13:09:02 -07:00
Samrat Man Singh
91dcbbbf50 Allow unlabeled breaks from desugared ? in labeled blocks 2020-05-26 01:18:07 +05:30
bors
f93bb2a50b Auto merge of #72575 - Dylan-DPC:rollup-zo679hv, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #72153 (exhaustively check `ty::Kind` during structural match checking)
 - #72308 (Emit a better diagnostic when function actually has a 'self' parameter)
 - #72560 (Enable `glacier` command via triagebot)
 - #72567 (Clean up E0608 explanation)

Failed merges:

r? @ghost
2020-05-25 17:14:44 +00:00
Dylan DPC
65607fbf98
Rollup merge of #72308 - Aaron1011:fix/hygiene-error-message, r=matthewjasper
Emit a better diagnostic when function actually has a 'self' parameter

Fixes #66898

When we are unable to resolve a reference to `self`, we current assume
that the containing function doesn't have a `self` parameter, and
emit an error message accordingly.

However, if the reference to `self` was created by a macro invocation,
then resolution will correctly fail, due to hygiene. In this case, we
don't want to tell the user that the containing fuction doesn't have a
'self' paramter if it actually has one.

This PR checks for the precense of a 'self' parameter, and adjusts the
error message we emit accordingly.

TODO: The exact error message we emit could probably be improved. Should
we explicitly mention hygiene?
2020-05-25 18:07:44 +02:00
Dylan DPC
d5250c160a
Rollup merge of #72153 - lcnr:exhaustively-match, r=pnkfelix
exhaustively check `ty::Kind` during structural match checking

This was prone to errors as we may forget new kinds in the future.

I am also not yet sure about some kinds.

`ty::GeneratorWitness(..) | ty::Infer(_) | ty::Placeholder(_) | ty::UnnormalizedProjection(..)  | ty::Bound(..)` might be unreachable here.

We may want to forbid `ty::Projection`, similar to `ty::Param`.

`ty::Opaque` seems fine afaict, should not be possible in a match atm.

I believe `ty::Foreign` should not be structurally match, as I don't even know what
that would actually mean.

r? @pnkfelix cc @eddyb
2020-05-25 18:07:42 +02:00
Russell Cohen
a93d31603f Fix bug in shebang handling
Shebang handling was too agressive in stripping out the first line in cases where it is actually _not_ a shebang, but instead, valid rust (#70528). This is a second attempt at resolving this issue (the first attempt was flawed, for, among other reasons, causing an ICE in certain cases (#71372, #71471).

The behavior is now codified by a number of UI tests, but simply:
For the first line to be a shebang, the following must all be true:
1. The line must start with `#!`
2. The line must contain a non whitespace character after `#!`
3. The next character in the file, ignoring comments & whitespace must not be `[`

I believe this is a strict superset of what we used to allow, so perhaps a crater run is unnecessary, but probably not a terrible idea.
2020-05-25 10:11:08 -04:00
bors
a0f06d11ae Auto merge of #72354 - tamird:remove-copyright, r=Mark-Simulacrum
Remove dangling COPYRIGHT references

Missed in 2a663555dd.

r? @Mark-Simulacrum
2020-05-25 13:40:42 +00:00
Ralf Jung
d959a8f91d rename lint 2020-05-25 15:32:46 +02:00