Commit Graph

105806 Commits

Author SHA1 Message Date
Esteban Küber
d14a323e74 Use more accurate return path spans
No longer suggest `Box::new(if foo { Type1 } else { Type2 })`, instead
suggesting `if foo { Box::new(Type1) } else { Box::new(Type2) }`.
2020-01-24 10:35:13 -08:00
Esteban Küber
55dce720b2 Account for ty::Error when suggesting impl Trait or Box<dyn Trait> 2020-01-23 17:04:09 -08:00
bors
e0bbe7915e Auto merge of #68435 - tmandry:llvmup-2-the-return-of-phibitcast-transform-fixes, r=alexcrichton
Update LLVM

Fixes #67855 (rust-lang/llvm-project#31)
Fixes #66036 (rust-lang/llvm-project#32)

r? @nikic @alexcrichton
2020-01-23 07:26:56 +00:00
bors
462fc37fa8 Auto merge of #68298 - Mark-Simulacrum:binary-depdep-fix, r=petrochenkov
Avoid declaring a fake dependency edge

When we're producing an rlib, we do not need anything more than an rmeta file
for each of our dependencies (this is indeed utilized by Cargo for pipelining).
Previously, we were still storing the paths of possible rlib/dylib crates, which
meant that they could still plausibly be accessed. With -Zbinary-dep-depinfo,
that meant that Cargo thought that rustc was using both the rlib and an (earlier
emitted) rmeta, and so needed a recompile, as the rlib may have finished writing
*after* compilation started (for more detail, see issue 68149).

This commit changes metadata loading to not store the filepaths of dylib/rlib if
we're going to end up creating an rlib only.

Fixes #68149.
2020-01-23 03:48:07 +00:00
bors
e23dd6687f Auto merge of #68474 - tmandry:rollup-6gmbet6, r=tmandry
Rollup of 10 pull requests

Successful merges:

 - #67195 ([experiment] Add `-Z no-link` flag)
 - #68253 (add bare metal ARM Cortex-A targets to rustc)
 - #68361 (Unbreak linking with lld 9 on FreeBSD 13.0-CURRENT i386)
 - #68388 (Make `TooGeneric` error in WF checking a proper error)
 - #68409 (Micro-optimize OutputFilenames)
 - #68410 (Export weak symbols used by MemorySanitizer)
 - #68425 (Fix try-op diagnostic in E0277 for methods)
 - #68440 (bootstrap: update clippy subcmd decription)
 - #68441 (pprust: use as_deref)
 - #68462 (librustc_mir: don't allocate vectors where slices will do.)

Failed merges:

r? @ghost
2020-01-23 00:04:33 +00:00
Tyler Mandry
bfac73c0a6
Rollup merge of #68462 - matthiaskrgr:novec, r=varkor
librustc_mir: don't allocate vectors where slices will do.
2020-01-22 16:02:24 -08:00
Tyler Mandry
14e6259c29
Rollup merge of #68441 - Centril:pprust-as_deref, r=Mark-Simulacrum
pprust: use as_deref

Some drive-by cleanup.
2020-01-22 16:02:20 -08:00
Tyler Mandry
ac3e183c42
Rollup merge of #68440 - matthiaskrgr:xpyclippy, r=Mark-Simulacrum
bootstrap: update clippy subcmd decription

Clarify where the clippy used in `./x.py clippy` is coming from.
It uses whatever clippy binary was installed via rustup, cargo-install
or otherwise and does NOT use the binary generated by `./x.py build src/tools/clippy`.
2020-01-22 16:02:19 -08:00
Tyler Mandry
1077adae12
Rollup merge of #68425 - phi-gamma:try-method, r=varkor
Fix try-op diagnostic in E0277 for methods

For methods the try-op diagnostic displays the empty string where
it has more descriptive strings like “a function” otherwise:

    error[E0277]: the `?` operator can only be used in  that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
                                                      ^^
       | |             ^^ cannot use the `?` operator in  that returns `()`
                                                        ^^

I’m seeing this on nightly (rustc 1.42.0-nightly (b5a3341f1
2020-01-20)) and [on the playpen](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0e7ce7792c2aceb8056941710d539124).

The changeset add strings for impl methods and trait provided
methods and test cases for the option type.
2020-01-22 16:02:17 -08:00
Tyler Mandry
97ac259148
Rollup merge of #68410 - tmiasko:msan-lto, r=varkor
Export weak symbols used by MemorySanitizer

Export weak symbols defined by MemorySanitizer instrumentation, which are used
to implement `-Zsanitizer-memory-track-origins` and `-Zsanitizer-recover=memory`.
Previously, when using fat LTO, they would internalized and eliminated.

Fixes #68367.
2020-01-22 16:02:16 -08:00
Tyler Mandry
f9b0561031
Rollup merge of #68409 - sinkuu:temp_path, r=Mark-Simulacrum
Micro-optimize OutputFilenames

For example, its methods consume 6% of time during debug-compiling a `warp` example:
![Screenshot (debug-compiling a `warp` example)](https://user-images.githubusercontent.com/7091080/72780288-d74f1580-3c61-11ea-953b-34e59ca682f9.png)

This PR optimize them a bit by using `PathBuf::set_extension` instead of `Path::with_extension`, to avoid cloning `PathBuf` excessively.
2020-01-22 16:02:14 -08:00
Tyler Mandry
bd090c9e8a
Rollup merge of #68388 - varkor:toogeneric-wf, r=eddyb
Make `TooGeneric` error in WF checking a proper error

`TooGeneric` is encountered during WF checking when we cannot determine that a constant involving a generic parameter will always be evaluated successfully (rather than resulting in an error). In these cases, the burden of proof should be with the caller, so that we can avoid post-monomorphisation tim errors (which was the previous previous behaviour). This commit ensures that this situation produces a proper compiler error, rather than silently ignoring it or ICEing.

Fixes https://github.com/rust-lang/rust/issues/66962.

r? @eddyb
2020-01-22 16:02:13 -08:00
Tyler Mandry
51e4424ea4
Rollup merge of #68361 - t6:patch-freebsd-lld-i386, r=alexcrichton
Unbreak linking with lld 9 on FreeBSD 13.0-CURRENT i386

Add -Wl,-znotext to default linker flags to link with lld 9 on FreeBSD 13.0-CURRENT i386 where rust-nightly has been failing to link since 2019-12-10 with variations of
```
 = note: ld: error: relocation R_386_PC32 cannot be used against symbol __rust_probestack; recompile with -fPIC
          >>> defined in /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libcompiler_builtins-6570a75fe85f0e1a.rlib(compiler_builtins-6570a75fe85f0e1a.compiler_builtins.2i519eqi-cgu.15.rcgu.o)
          >>> referenced by std.4xivr03c-cgu.14
          >>>               std-9bd70afd58e204b7.std.4xivr03c-cgu.14.rcgu.o:(_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h1c78ed6e734a2bfc (.llvm.10122419023709863394)) in archive /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libstd-9bd70afd58e204b7.rlib

          ld: error: relocation R_386_PC32 cannot be used against symbol __rust_probestack; recompile with -fPIC
          >>> defined in /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libcompiler_builtins-6570a75fe85f0e1a.rlib(compiler_builtins-6570a75fe85f0e1a.compiler_builtins.2i519eqi-cgu.15.rcgu.o)
          >>> referenced by std.4xivr03c-cgu.14
          >>>               std-9bd70afd58e204b7.std.4xivr03c-cgu.14.rcgu.o:(std::io::util::copy::h9115f048f2203467) in archive /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libstd-9bd70afd58e204b7.rlib
          clang-cpp: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to previous error

error: could not compile `rustc_macros`.
```
Full log: http://beefy17.nyi.freebsd.org/data/head-i386-default/p523508_s356869/logs/rust-nightly-1.42.0.20200118.log

AFAICT it stopped building after bumping compiler_builtins to 0.1.22 in https://github.com/rust-lang/rust/pull/67110.
2020-01-22 16:02:11 -08:00
Tyler Mandry
9246b3056c
Rollup merge of #68253 - japaric:bare-metal-cortex-a, r=alexcrichton
add bare metal ARM Cortex-A targets to rustc

-> `rustc --target armv7a-none-eabi` will work

also build rust-std (rustup) components for them

-> `rustup target add armv7a-none-eabi` will work

this completes our bare-metal support of ARMv7 cores on stable Rust (by 1.42 or 1.43)

(these target specifications have been tested on a real (no emulation / QEMU) [Cortex-A7 core](https://github.com/iqlusioninc/usbarmory.rs/))
2020-01-22 16:02:09 -08:00
Tyler Mandry
0c3827bfa7
Rollup merge of #67195 - 0dvictor:nolink, r=tmandry
[experiment] Add `-Z no-link` flag

Adds a compiler option to allow rustc compile a crate without linking.
With this flag, `rustc` serializes codegen_results into a `.rlink` file.

Part of Issue #64191
2020-01-22 16:02:08 -08:00
Victor Ding
6a6ebb4403 Add -Z no-link flag
Adds a compiler option to allow rustc compile a crate without linking.
With this flag, rustc serializes codegen_results into a .rlink file.
2020-01-23 11:00:36 +11:00
bors
d1e594f402 Auto merge of #68192 - GuillaumeGomez:remove-inlined-types, r=kinnison
Remove usage of global variable "inlined_types"

r? @pietroalbini
2020-01-22 18:04:56 +00:00
Matthias Krüger
71370c87f7 librustc_mir: don't allocate vectors where slices will do. 2020-01-22 17:19:26 +01:00
bors
ae66171b41 Auto merge of #68069 - JohnTitor:fix-closure-ice, r=matthewjasper
Attempt to fix ICE #68025

Fixes #68025
2020-01-22 13:10:49 +00:00
bors
f5abfb1569 Auto merge of #68194 - jonas-schievink:fix-thumb-ci, r=alexcrichton
Fix CI for embedded ARM targets

Closes https://github.com/rust-lang/rust/issues/67018

It would be better to move the `thumb-none-cortex-m` test into the `cargotest` suite, but it doesn't seem to support cross-compilation.
2020-01-22 09:49:03 +00:00
bors
2f688ac602 Auto merge of #68442 - Centril:rollup-ir2vmid, r=Centril
Rollup of 3 pull requests

Successful merges:

 - #68421 (Update cargo, books)
 - #68422 (typeck: simplify the handling of `diverges`)
 - #68439 (Update Clippy)

Failed merges:

r? @ghost
2020-01-22 00:50:48 +00:00
Mazdak Farrokhzad
2a3627d6b4
Rollup merge of #68439 - JohnTitor:clippy-up, r=JohnTitor
Update Clippy

Fixes #68431

r? @ghost
2020-01-22 01:50:12 +01:00
Mazdak Farrokhzad
4ce792ded6
Rollup merge of #68422 - Centril:diverges-simplify, r=eddyb
typeck: simplify the handling of `diverges`

Some drive-by cleanup while working on `hir::ExprKind::Let`.
Ostensibly, this has some perf benefits due to reduced allocation and whatnot as well.

r? @eddyb
2020-01-22 01:50:10 +01:00
Mazdak Farrokhzad
06029c4498
Rollup merge of #68421 - ehuss:update-cargo-books, r=alexcrichton
Update cargo, books

## cargo

9 commits in ad3dbe10e1e654fb1f032a5dd9481d7cbaa00d65..f6449ba236db31995255ac5e4cad4ab88296a7c6
2020-01-13 21:37:15 +0000 to 2020-01-21 16:15:39 +0000
- Fix wrong directories in host_libdir. (rust-lang/cargo#7798)
- Update humantime requirement from 1.2.0 to 2.0.0 (rust-lang/cargo#7815)
- Fix doc_target test which no longer works on stable/beta. (rust-lang/cargo#7817)
- Fix some erroneous em-dashes in man pages. (rust-lang/cargo#7814)
- fix some clippy warnings (rust-lang/cargo#7808)
- Don't assume iowait always increases on Linux (rust-lang/cargo#7803)
- Add and update some doc comments. (rust-lang/cargo#7800)
- Consistently use em-dash in environment documentation page. (rust-lang/cargo#7799)
- Load credentials only when needed (rust-lang/cargo#7774)

## reference

3 commits in e1157538e86d83df0cf95d5e33bd943f80d0248f..11e893fc1357bc688418ddf1087c2b7aa25d154d
2019-12-22 13:13:14 +0100 to 2020-01-18 21:24:08 +0100
- Small improvements to types/pointer.md (rust-lang-nursery/reference#726)
- repr(transparent): mention align=1 requirement (rust-lang-nursery/reference#737)
- Elaborate on how to use an extern static correctly (rust-lang-nursery/reference#736)

## book

4 commits in 5c5cfd2e94cd42632798d9bd3d1116133e128ac9..87dd6843678575f8dda962f239d14ef4be14b352
2019-12-16 09:27:21 -0600 to 2020-01-20 15:20:40 -0500
- Fix listing numbers (rust-lang/book#2227)
- Move `async` and `await` keywords to 'Currently in Use' (rust-lang/book#2140)
- More cleanup - remove unneeded files (rust-lang/book#2213)
- Small cleanups extracted from the bigger pr i'm working on (rust-lang/book#2212)

## rust-by-example

1 commits in 1d59403cb5269c190cc52a95584ecc280345495a..1c2bd024d13f8011307e13386cf1fea2180352b5
2019-12-27 08:27:05 -0300 to 2020-01-20 12:18:36 -0300
- CamelCase -&gt; UpperCamelCase (rust-lang/rust-by-example#1302)

## embedded-book

1 commits in 9493b7d4dc97eda439bd8780f05ad7b234cd1cd7..4d78994915af1bde9a95c04a8c27d8dca066232a
2019-12-27 20:05:00 +0000 to 2020-01-14 08:25:25 +0000
- Update .gitattributes  (rust-embedded/book#221)
2020-01-22 01:50:09 +01:00
Mazdak Farrokhzad
7962ccb216 pprust: use as_deref 2020-01-22 01:38:05 +01:00
Matthias Krüger
eb2da27af2 bootstrap: update clippy subcmd decription
Clarify where the clippy used in `./x.py clippy` is coming from.
It uses whatever clippy binary was installed via rustup, cargo-install
or otherwise and does NOT use the binary generated by `./x.py build src/tools/clippy`.
2020-01-22 01:06:36 +01:00
Yuki Okushi
c7b23e2752 Update Clippy 2020-01-22 08:53:31 +09:00
Tyler Mandry
13a91a82ff Update LLVM
Fixes #67855 (rust-lang/llvm-project#31)
Fixes #66036 (rust-lang/llvm-project#32)
2020-01-21 15:11:54 -08:00
Mark Rousskov
dc97181a09 Do not base path to append extension
We already have ownership of the base path, so no need to clone it (within
Path::with_extension).
2020-01-22 08:10:41 +09:00
Mark Rousskov
8c6067c24e Store filestem in a pre-formatted form 2020-01-22 08:10:40 +09:00
Mark Rousskov
d1bb7e16e0 Privatize private fields of OutputFilenames 2020-01-22 08:10:05 +09:00
Philipp Gesang
db3b40c2a1
Cleanup: rewrite conditional as match
As suggested by @Centril.

Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
2020-01-21 21:48:07 +01:00
bors
5e8897b7b5 Auto merge of #68423 - Centril:rollup-bdjykrv, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #67686 (Simplify NodeHeader by avoiding slices in BTreeMaps with shared roots)
 - #68140 (Implement `?const` opt-out for trait bounds)
 - #68313 (Options IP_MULTICAST_TTL and IP_MULTICAST_LOOP are 1 byte on BSD)
 - #68328 (Actually pass target LLVM args to LLVM)
 - #68399 (check_match: misc unifications and ICE fixes)
 - #68415 (tidy: fix most clippy warnings)
 - #68416 (lowering: cleanup some hofs)

Failed merges:

r? @ghost
2020-01-21 18:55:26 +00:00
Mazdak Farrokhzad
c1b20b1ae3
Rollup merge of #68416 - Centril:lowering-cleanup-hofs, r=pietroalbini
lowering: cleanup some hofs

Some drive-by cleanup while working on `let_chains`.

r? @pietroalbini
2020-01-21 19:42:28 +01:00
Mazdak Farrokhzad
b6d6391218
Rollup merge of #68415 - matthiaskrgr:tidy_clippy, r=oli-obk
tidy: fix most clippy warnings
2020-01-21 19:42:26 +01:00
Mazdak Farrokhzad
58504823f5
Rollup merge of #68399 - Centril:check-match-unify, r=oli-obk
check_match: misc unifications and ICE fixes

These are some unifications made as a by-product of working on `hir::ExprKind::Let`.

Fixes https://github.com/rust-lang/rust/issues/68396.
Fixes https://github.com/rust-lang/rust/issues/68394.
Fixes https://github.com/rust-lang/rust/issues/68393.

r? @oli-obk @matthewjasper
2020-01-21 19:42:25 +01:00
Mazdak Farrokhzad
3fa8cc3877
Rollup merge of #68328 - jethrogb:jb/target-llvm-args, r=alexcrichton
Actually pass target LLVM args to LLVM

Missed in #68059

r? @alexcrichton
2020-01-21 19:42:23 +01:00
Mazdak Farrokhzad
dabd81666a
Rollup merge of #68313 - batrla:master, r=alexcrichton
Options IP_MULTICAST_TTL and IP_MULTICAST_LOOP are 1 byte on BSD

Options IP_MULTICAST_TTL and IP_MULTICAST_LOOP are 1 byte on BSD and Solaris

See ip(4P) man page:
 IP_MULTICAST_TTL     Time  to live for multicast datagrams. This option
                      takes an unsigned character as  an  argument.  Its
                      value  is  the TTL that IP uses on outgoing multi-
                      cast datagrams. The default is 1.

 IP_MULTICAST_LOOP    Loopback for multicast datagrams. Normally  multi-
                      cast  datagrams  are  delivered  to members on the
                      sending  host  (or  sending  zone).  Setting   the
                      unsigned  character argument to 0 causes the oppo-
                      site behavior, meaning that  when  multiple  zones
                      are  present,  the  datagrams are delivered to all
                      zones except the sending zone.

https://docs.oracle.com/cd/E88353_01/html/E37851/ip-4p.html
https://man.openbsd.org/ip.4
2020-01-21 19:42:22 +01:00
Mazdak Farrokhzad
3484e2fab4
Rollup merge of #68140 - ecstatic-morse:const-trait-bound-opt-out, r=oli-obk
Implement `?const` opt-out for trait bounds

For now, such bounds are treated exactly the same as unprefixed ones in all contexts. [RFC 2632](https://github.com/rust-lang/rfcs/pull/2632) does not specify whether such bounds are forbidden outside of `const` contexts, so they are allowed at the moment.

Prior to this PR, the constness of a trait bound/impl was stored in `TraitRef`. Now, the constness of an `impl` is stored in `ast::ItemKind::Impl` and the constness of a bound in `ast::TraitBoundModifer`. Additionally, constness of trait bounds is now stored in an additional field of `ty::Predicate::Trait`, and the combination of the constness of the item along with any `TraitBoundModifier` determines the constness of the bound in accordance with the RFC. Encoding the constness of impls at the `ty` level is left for a later PR.

After a discussion in \#wg-grammar on Discord, it was decided that the grammar should not encode the mutual exclusivity of trait bound modifiers. The grammar for trait bound modifiers remains `[?const] [?]`. To encode this, I add a dummy variant to `ast::TraitBoundModifier` that is used when the syntax `?const ?` appears. This variant causes an error in AST validation and disappears during HIR lowering.

cc #67794

r? @oli-obk
2020-01-21 19:42:20 +01:00
Mazdak Farrokhzad
d532a04a1c
Rollup merge of #67686 - ssomers:keys_start_slasher, r=Mark-Simulacrum
Simplify NodeHeader by avoiding slices in BTreeMaps with shared roots

Simplify a complicated piece of code that creates slices of keys in node leaves.
2020-01-21 19:42:17 +01:00
Jonas Schievink
d022e01caa Do not use Cortex-M0 since Qemu is too old 2020-01-21 19:01:56 +01:00
Jonas Schievink
6175f447b5 Check in lockfile 2020-01-21 19:01:56 +01:00
Jonas Schievink
36e230fe22 Update dependencies
This fixes a linkage issue that was fixed a while ago, and adds thumbv8
support.
2020-01-21 19:01:56 +01:00
Jonas Schievink
ce36c98e5b Use the right runners for all thumb targets 2020-01-21 19:01:56 +01:00
Jonas Schievink
ef5f929471 Account for run-make tests in is_up_to_date 2020-01-21 19:01:56 +01:00
Jonas Schievink
ce7172da51 Fix thumb target CI 2020-01-21 19:01:56 +01:00
Philipp Gesang
02e66baac6
Test try diagnostics for impl and trait methods
Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
2020-01-21 18:56:56 +01:00
Eric Huss
d45d8b1c7b Update cargo, books 2020-01-21 09:55:43 -08:00
Philipp Gesang
5dee7dddf2
Handle methods in try diagnostic
The diagnostic for diagnostic for methods and trait provided
methods would only show the empty string:

    error[E0277]: the `?` operator can only be used in  that returns `Result` or `Option` (or another type that implements `std::ops::Try`)

Handle the missing cases so it reads ``a method'' / ``an async
method'' / ``a trait method'' respectively.

Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
2020-01-21 18:49:18 +01:00
Mazdak Farrokhzad
7dceff9b5b typeck: remove redundant diverges check 2020-01-21 18:47:58 +01:00