Commit graph

24078 commits

Author SHA1 Message Date
Josh Stone
c2e0d7f1eb Never return uninhabited values at all
Functions with uninhabited return values are already marked `noreturn`,
but we were still generating return instructions for this. When running
with `-C passes=lint`, LLVM prints:

    Unusual: Return statement in function with noreturn attribute

The LLVM manual makes a stronger statement about `noreturn` though:

> This produces undefined behavior at runtime if the function ever does
dynamically return.

We now emit an `abort` anywhere that would have tried to return an
uninhabited value.
2019-04-03 15:44:49 -07:00
Mazdak Farrokhzad
69bc687f20
Rollup merge of #59585 - rust-lang:shallow-borrow-fixes, r=pnkfelix
Fixes for shallow borrows

* Don't promote these borrows if we're going to remove them before
  codegen
* Correctly mark unreachable code
2019-04-02 13:47:28 +02:00
Taylor Cramer
749349fc9f Refactor async fn return type lowering
async fn now lowers directly to an existential type declaration
rather than reusing the `impl Trait` return type lowering.

As part of this, it lowers all argument-position elided lifetimes
using the in-band-lifetimes machinery, creating fresh parameter
names for each of them, using each lifetime parameter as a generic
argument to the generated existential type.

This doesn't currently successfully allow multiple
argument-position elided lifetimes since `existential type`
doesn't yet support multiple lifetimes where neither outlive
the other. This requires a separate fix.
2019-04-01 18:25:57 -07:00
Mazdak Farrokhzad
d2fd3fe957
Rollup merge of #59041 - saleemjaffer:trait_doc_comment_better_error_msg, r=pnkfelix
fixes rust-lang#56766

fixes #56766
2019-04-01 17:29:53 +02:00
Mazdak Farrokhzad
0d01fbaeb8
Rollup merge of #58919 - estebank:impl-trait-return-lifetime, r=pnkfelix
Suggest using anonymous lifetime in `impl Trait` return

Fix #48467.

r? @nikomatsakis
2019-04-01 17:29:51 +02:00
bors
e3428db7c2 Auto merge of #59577 - dlrobertson:fix_58881, r=nagisa
Fix LLVM IR generated for C-variadic arguments

It is possible to create malformed LLVM IR given variadic arguments that
are aggregate types. This occurs due to improper tracking of the current
argument in the functions list of arguments.

Fixes: #58881
2019-03-31 20:28:00 +00:00
Dan Robertson
a9d62be557
Fix LLVM IR generated for C-variadic arguments
It is possible to create malformed LLVM IR given variadic arguments that
are aggregate types. This occurs due to improper tracking of the current
argument in the functions list of arguments.
2019-03-31 17:37:37 +00:00
Mazdak Farrokhzad
9eba66b35f
Rollup merge of #59583 - oberien:patch-1, r=Centril
match match match match match
2019-03-31 19:19:54 +02:00
Mazdak Farrokhzad
1909a0303a
Rollup merge of #59580 - taiki-e:coerce-closure, r=oli-obk
Allow closure to unsafe fn coercion

Closes #57883
2019-03-31 19:19:51 +02:00
Mazdak Farrokhzad
245a0afb52
Rollup merge of #59506 - JohnTitor:improve-mcount, r=nagisa
Use platform dependent mcount function

close #59097

This pull-request is based on #57244 and [here](https://github.com/llvm-mirror/clang/search?q=MCountName&unscoped_MCountName).

r? @nagisa
2019-03-31 19:19:48 +02:00
Mazdak Farrokhzad
dffdd8f728
Rollup merge of #58805 - fabric-and-ink:redundant_import, r=petrochenkov
Lint for redundant imports

Add lint for redundant imports. The changes are suggested by @petrochenkov.

Closes #10178.
2019-03-31 19:19:47 +02:00
Esteban Küber
30c247f881 Suggest using anonymous lifetime in impl Trait return without hacks
Fallback to `static_impl_trait` for nice error message by peeking at the
return type and the lifetime type. Point at the return type instead of
the return expr/stmt in NLL mode.
2019-03-31 09:11:47 -07:00
Taiki Endo
07021e07ed Allow closure to unsafe fn coercion 2019-04-01 00:00:43 +09:00
Matthew Jasper
16ee042100 Fixes for shallow borrows
* Don't promote these borrows if we're going to remove them before
  codegen
* Correctly mark unreachable code
2019-03-31 15:14:50 +01:00
Mazdak Farrokhzad
fb8396da84
Rollup merge of #59574 - JohnTitor:distinguish-error-vs-warning, r=Centril
Distinguish message for external macros depending on error level

fixes #57716

(I picked you because assigned to this issue.)
r? @estebank
2019-03-31 16:10:38 +02:00
Mazdak Farrokhzad
61222b5731
Rollup merge of #59572 - davidtwco:issue-59508, r=varkor
Include bounds in generic re-ordering diagnostic

Fixes #59508.

r? @estebank
cc @varkor
2019-03-31 16:10:37 +02:00
Jaro Fietz
55b7efe29f
match match match match match 2019-03-31 15:20:10 +02:00
David Wood
0270d565d9
Only mention const generics if enabled.
This commit updates the generic parameter re-ordering diagnostic to only
mention const generics if the feature is enabled.
2019-03-31 00:14:21 +01:00
David Wood
3829746ef9
Include bounds in generic reordering diagnostic.
This commit extends the existing generic re-ordering diagnostic to
include any bounds on the generic parameter, thus producing correct
suggestions.
2019-03-31 00:14:21 +01:00
Yuki OKUSHI
45c82abf13 Distinguish depending on error level
Remove unnecessary comment
2019-03-31 07:51:31 +09:00
Yuki OKUSHI
aec518addd Fix test 2019-03-31 07:13:59 +09:00
Fabian Drinck
2ade443040 Restore test 2019-03-30 22:37:02 +01:00
Fabian Drinck
c244c411e4 Handle glob import in redundancy check 2019-03-30 22:37:02 +01:00
Fabian Drinck
df80eae985 Change message to present tense 2019-03-30 22:37:02 +01:00
Fabian Drinck
a97aeb41d4 Fix more tests 2019-03-30 22:37:02 +01:00
Fabian Drinck
4a619aa126 Add glob import to redundancy test 2019-03-30 22:37:02 +01:00
Fabian Drinck
0f3b1c0358 Fix tests 2019-03-30 22:37:02 +01:00
Fabian Drinck
6e7b45e12b Replace REDUNDANT_IMPORT with UNUSED_IMPORTS 2019-03-30 22:37:02 +01:00
Fabian Drinck
f9272364bf Edit ui tests 2019-03-30 22:37:02 +01:00
Fabian Drinck
8919894c51 Distinguish between imported and defined items 2019-03-30 22:37:02 +01:00
Fabian Drinck
d04e83fe2c Bless tests 2019-03-30 22:37:02 +01:00
Fabian Drinck
2245d10fac Improve warning 2019-03-30 22:37:02 +01:00
Fabian Drinck
29d68edc6e Add lint for redundant imports
Co-authored-by: Stephan Schauerte <stephan.schauerte@gmail.com>
2019-03-30 22:37:02 +01:00
Mazdak Farrokhzad
c9dca36a36
Rollup merge of #59463 - pnkfelix:issue-56327-skip-dyn-keyword-lint-under-macros, r=matthewjasper
skip dyn keyword lint under macros

This PR is following my own intuition that `rustfix` should never inject bugs into working code (even if that comes at the expense of it failing to fix things that will become bugs).

Fix #56327
2019-03-30 14:14:55 +01:00
Mazdak Farrokhzad
ae2551825d
Rollup merge of #59380 - philipc:thinlto-variant, r=michaelwoerister
Fix invalid DWARF for enums when using ThinLTO

We were setting the same identifier for both the DW_TAG_structure_type
and the DW_TAG_variant_part. This becomes a problem when using ThinLTO
becauses it uses the identifier as a key for a map of types that is used
to delete duplicates based on the ODR, so one of them is deleted as a
duplicate, resulting in invalid DWARF.

The DW_TAG_variant_part isn't a standalone type, so it doesn't need
an identifier. Fix by omitting its identifier.

ODR uniquing is [enabled here](f21dee2c61/src/rustllvm/PassWrapper.cpp (L1101)).
2019-03-30 14:14:53 +01:00
Mazdak Farrokhzad
11e1b3e46a
Rollup merge of #59525 - pnkfelix:whitelist-some-rustc-attrs, r=petrochenkov
Whitelist some rustc attrs

These rustc attrs are used within libcore, and were causing failures when one mixed incremental compilation with bootstrapping (due to a default of `-D warnings` when bootstrapping).

Fix #59523
Fix #59524

Cc #58633
2019-03-30 07:51:41 +01:00
Mazdak Farrokhzad
41e64b6c5c
Rollup merge of #59455 - estebank:borrow-sugg-shorthand-field, r=davidtwco
Account for short-hand field syntax when suggesting borrow

Fix #52965.
2019-03-30 07:51:37 +01:00
Mazdak Farrokhzad
c28704c2a8
Rollup merge of #59453 - estebank:recover-tuple-parse, r=petrochenkov
Recover from parse error in tuple syntax
2019-03-30 07:51:36 +01:00
Mazdak Farrokhzad
d050a157a8
Rollup merge of #59376 - davidtwco:finally-rfc-2008-variants, r=petrochenkov,QuietMisdreavus
RFC 2008: Enum Variants

Part of #44109. See [Zulip topic](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/rfc-2008/near/132663140) for previous discussion.

r? @petrochenkov
cc @nikomatsakis
2019-03-30 07:51:34 +01:00
Esteban Küber
ee2a9d93e9 Suggest using anonymous lifetime in impl Trait return 2019-03-29 13:24:29 -07:00
Felix S. Klock II
cbbd4d5f98 Regression test for incremental treatment of rustc_scalar_valid_range_{start,end}. 2019-03-29 15:05:03 +01:00
Felix S. Klock II
0b96697299 Regression test for incremental treatment of rustc_on_unimplemented. 2019-03-29 15:03:31 +01:00
Esteban Küber
3592079765 revert change to test file as per review request 2019-03-29 06:41:15 -07:00
Mazdak Farrokhzad
4aacc49ece
Rollup merge of #59486 - varkor:dead-code-impl, r=sanxiyn
Visit `ImplItem` in `dead_code` lint

Fixes https://github.com/rust-lang/rust/issues/47131.
2019-03-29 12:32:30 +01:00
Mazdak Farrokhzad
c105f34fcb
Rollup merge of #59473 - estebank:borrow-sugg-inside-macro, r=davidtwco
Do not emit incorrect borrow suggestion involving macros and fix overlapping multiline spans

Fix #58298.
2019-03-29 12:32:28 +01:00
Mazdak Farrokhzad
fda206633d
Rollup merge of #59467 - hgallagher1993:local_branch, r=estebank
Better diagnostic for binary operation on BoxedValues

Fixes #59458
2019-03-29 12:32:26 +01:00
Mazdak Farrokhzad
647d09fced
Rollup merge of #59462 - taiki-e:no-core, r=petrochenkov
Fix error in Rust 2018 + no_core environment

Minimized reproduction: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=5b9f6c3026ec9d856699fa6dbd4361f0

This is a fix for the error that occurred in #58702.

r? @Centril
2019-03-29 12:32:24 +01:00
Esteban Küber
b7dc8e71cc fix text after rebase 2019-03-28 19:58:00 -07:00
Mazdak Farrokhzad
f9262afa4d
Rollup merge of #59394 - mark-i-m:dup-matcher-bindings-2, r=Centril
warn -> deny duplicate match bindings

This is the next step of https://github.com/rust-lang/rust/issues/57742

r? @Centril

- [x] Decide whether to go to deny-by-default or hard error.
     - My preference is to make this deny-by-default, rather than going straight to a hard error. The CI should fail because I haven't updated the ui test yet. I'll update it when we decide which to do.
- [x] Update [test](c25d6b8344/src/test/ui/macros/macro-multiple-matcher-bindings.rs)
- [ ] ~Crater run~ see https://github.com/rust-lang/rust/pull/59394#issuecomment-477817351
2019-03-29 02:40:48 +01:00
Yuki OKUSHI
261a91519d Use platform dependent mcount function 2019-03-29 06:44:31 +09:00