Commit Graph

110811 Commits

Author SHA1 Message Date
Dylan DPC
0f806534c0
Rollup merge of #71400 - dtolnay:isavailable, r=petrochenkov
proc_macro::is_available()

This PR adds `proc_macro::is_available() -> bool` to determine whether proc_macro has been made accessible to the currently running program.

The proc_macro crate is only intended for use inside the implementation of procedural macros. All the functions in the crate panic if invoked from outside of a procedural macro, such as from a build script or unit test or ordinary Rust binary.

Unfortunately those panics made it impossible for libraries that are designed to support both macro and non-macro use cases (e.g. Syn) to be used from binaries that are compiled with panic=abort. In panic=unwind mode we're able to attempt a proc macro call inside catch_unwind and use libproc_macro's result if it succeeds, otherwise fall back to a non-macro alternative implementation. But in panic=abort there was no way to determine which implementation needs to be used.

r? @eddyb
attn: @petrochenkov @adetaylor
ref: https://github.com/dtolnay/cxx/issues/130
2020-04-22 23:19:24 +02:00
Dylan DPC
16be619c6a
Rollup merge of #71369 - ctaggart:wasm32_profiling, r=ecstatic-morse
allow wasm32 compilation of librustc_data_structures/profiling.rs

I'm trying to use rustfmt from a wasm app. I ran into this compilation problem https://github.com/rust-lang/rustfmt/issues/4132 and after investigating, it looked like just adjusting a few cfg's. I based it on how measureme added support in https://github.com/rust-lang/measureme/pull/43.

My testing on my macbook was just that librustc_data_structures builds now with both:
- cargo build
- cargo build --target wasm32-unknown-unknown
2020-04-22 23:19:22 +02:00
Dylan DPC
d3e24bd457
Rollup merge of #71350 - GuillaumeGomez:error-code-explanation-extra-check, r=oli-obk
Error code explanation extra check

r? @Mark-Simulacrum
2020-04-22 23:19:20 +02:00
Dylan DPC
10e47f5b7b
Rollup merge of #71256 - cuviper:must_use_replace, r=estebank
Lint must_use on mem::replace

This adds a hint on `mem::replace`, "if you don't need the old value,
you can just assign the new value directly". This is in similar spirit
to the `must_use` on `ManuallyDrop::take`.
2020-04-22 23:19:19 +02:00
bors
db9b05aeb5 Auto merge of #71044 - ecstatic-morse:body-predecessor-cache, r=oli-obk
Remove `BodyAndCache`

...returning to the original approach using interior mutability within `Body`. This simplifies the API at the cost of some uncontended mutex locks when the parallel compiler is enabled.

The current API requires you to either have a mutable reference to `Body` (`&mut BodyAndCache`), or to compute the predecessor graph ahead of time by creating a `ReadOnlyBodyAndCache`. This is not a good fit for, e.g., the dataflow framework, which
1. does not mutate the MIR
2. only sometimes needs the predecessor graph (for backward dataflow problems)
2020-04-22 21:08:28 +00:00
Tim Diekmann
e60268076f Add a "by reference" adaptor for AllocRef 2020-04-22 22:51:11 +02:00
Tim Diekmann
863d2d92ba Make AllocErr copyable 2020-04-22 22:40:21 +02:00
Esteban Küber
59c816d58b fix test 2020-04-22 12:42:02 -07:00
Esteban Küber
ad379cd7a6 review comment 2020-04-22 12:12:33 -07:00
Esteban Küber
322b2045f2 Revert old span change 2020-04-22 12:12:33 -07:00
Esteban Küber
1f43fc0209 Tweak wording 2020-04-22 12:12:33 -07:00
Esteban Küber
13c1daeb2f Tweak 'static suggestion code
Fix #71196.
2020-04-22 12:12:33 -07:00
David Tolnay
3bd742ff4e
Add tracking issue for proc_macro_is_available 2020-04-22 11:07:07 -07:00
bors
b2e36e6c2d Auto merge of #71431 - Dylan-DPC:rollup-rvm6tfy, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #71280 (Miri: mplace_access_checked: offer option to force different alignment on place)
 - #71336 (Exhaustively match on `{Statement,Terminator}Kind` during const checking)
 - #71370 (Added detailed error code explanation for issue E0696 in Rust compiler.)
 - #71401 (visit_place_base is just visit_local)

Failed merges:

r? @ghost
2020-04-22 17:52:21 +00:00
Dylan MacKenzie
4e7469eaea Replace multiple calls to predecessors_for
...with a single one to `predecessors`. `predecessors_for` requires
taking the lock/incrementing the `RefCell` once each call.
2020-04-22 09:57:43 -07:00
Dylan MacKenzie
2ff1fc9b81 Add #[inline] declarations 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
8287842eb4 Use Body everywhere 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
64db428967 Don't use * for deref-coercion 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
884ba4f11f Use internal mutability for predecessor cache 2020-04-22 09:57:43 -07:00
Pietro Albini
61831ff7f7
ci: remove duplicated job names on GHA 2020-04-22 18:55:48 +02:00
Pietro Albini
1f106b5527
ci: set a default shell on GHA 2020-04-22 18:53:11 +02:00
Cameron Taggart
51b194f09a remove some extra } 2020-04-22 09:18:54 -06:00
Cameron Taggart
02241db720
suggested rearrangement of the cfg if statements
Co-Authored-By: ecstatic-morse <ecstaticmorse@gmail.com>
2020-04-22 09:12:44 -06:00
Dylan DPC
238e8228d4
Rollup merge of #71401 - spastorino:remove-visit-place-base, r=wesleywiser
visit_place_base is just visit_local

r? @wesleywiser
2020-04-22 16:41:14 +02:00
Dylan DPC
7939a4d728
Rollup merge of #71370 - PankajChaudhary5:ErrorCode-E0696, r=GuillaumeGomez
Added detailed error code explanation for issue E0696 in Rust compiler.

Added proper error explanation for issue E0696 in the Rust compiler.
Error Code E0696

Sub Part of Issue #61137

r? @GuillaumeGomez
2020-04-22 16:41:12 +02:00
Dylan DPC
221f677d70
Rollup merge of #71336 - ecstatic-morse:check-consts-asm, r=oli-obk
Exhaustively match on `{Statement,Terminator}Kind` during const checking

This adds a pre-monomorphization error for inline assembly in a const context as well.

r? @oli-obk
2020-04-22 16:41:11 +02:00
Dylan DPC
e69141a52f
Rollup merge of #71280 - RalfJung:mplace-check-align, r=oli-obk
Miri: mplace_access_checked: offer option to force different alignment on place

Required to solve https://github.com/rust-lang/miri/issues/1339 in https://github.com/rust-lang/miri/pull/1348.

r? @oli-obk
2020-04-22 16:41:09 +02:00
bors
82e90d6426 Auto merge of #71374 - nnethercote:alphabetize-C-and-Z-options, r=petrochenkov
Alphabetize `-C` and `-Z` options

Because it will make it much easier to find options that way.

r? @petrochenkov
2020-04-22 14:39:33 +00:00
Tom Tromey
90b4a97efe Fix compiletest version-parsing tests
The compiletest version-parsing tests failed after the previous patch.
However, I don't believe these tests are correct, in that I don't
think RHEL or CentOS ever put the gdb version number into parentheses.
Instead they display like:

    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
2020-04-22 08:36:55 -06:00
Pietro Albini
940ce9465f
update openssl-src to 1.1.1g
Fixes CVE-2020-1967.
2020-04-22 16:21:54 +02:00
Tom Tromey
37097fb4f7 Let compiletest recognize gdb 10.x
git gdb has moved to version 10.  My build prints this as its
--version:

    GNU gdb (GDB) 10.0.50.20200420-git

Unfortunately this conflicts with this comment in compiletest:

    // We limit major to 1 digit, otherwise, on openSUSE, we parse the openSUSE version

This patch changes the version parsing to follow the GNU coding
standard, which accounts for both the openSUSE case as well as
handling gdb 10.

My debuginfo test run now says:

NOTE: compiletest thinks it is using GDB with native rust support
NOTE: compiletest thinks it is using GDB version 10000050

... where previously it failed to find that gdb 10 had rust support.
2020-04-22 07:54:33 -06:00
Guillaume Gomez
5cdea2d605 Fix new tidy checks 2020-04-22 15:10:07 +02:00
Guillaume Gomez
5c8f50952b Add checks to ensure that explanations have code examples using the error code and also that 'compile_fail' isn't mispelled 2020-04-22 15:10:07 +02:00
Nicholas Nethercote
6e7ba26bbd Use macros for option tests. 2020-04-22 22:47:05 +10:00
Nicholas Nethercote
14ea491744 Add all the missing option tests. 2020-04-22 22:45:33 +10:00
Nicholas Nethercote
4348f31e3b Alphabetize the -C and -Z options.
In the code, test, and docs, because it makes it much easier to find
things.

Other than adding the comments about alphabetical order, this commit
only moves things around.
2020-04-22 22:44:37 +10:00
bors
00f677d897 Auto merge of #71424 - Dylan-DPC:rollup-iunh61a, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #70970 (Detect mistyped associated consts in `Instance::resolve`.)
 - #71203 (Correct await span for async-await error reporting)
 - #71214 (Add error code for inner doc error)
 - #71337 (Moving all rustdoc-ui tests to check-pass)
 - #71412 (Clarify unused_doc_comments note on macro invocations)
 - #71414 (More diagnostic items for Clippy usage)

Failed merges:

r? @ghost
2020-04-22 11:14:23 +00:00
Ralf Jung
5449e0f10f comment explaining force_align usage 2020-04-22 12:58:17 +02:00
Dylan DPC
01fdc885d6
Rollup merge of #71414 - phansch:more-diagnostic-items, r=Manishearth
More diagnostic items for Clippy usage

This adds a couple of more diagnostic items to be used in Clippy.
I chose these particular ones because they were the types which we seem
to check for the most in Clippy. I'm not sure if the `cfg_attr(not(test))`
is needed, but it was also used for `Vec` and a few other types.

cc https://github.com/rust-lang/rust-clippy/issues/5393

r? @Manishearth
2020-04-22 12:18:39 +02:00
Dylan DPC
91ef66374b
Rollup merge of #71412 - dtolnay:uselessdoc, r=Manishearth
Clarify unused_doc_comments note on macro invocations

The previous error message used to say:

<pre>
/// doc
^^^^^^^ rustdoc does not generate documentation for <b>macros</b>
</pre>

Obviously we do generate documentation for macros, such as https://docs.rs/bitflags/1.2.1/bitflags/macro.bitflags.html. It's only macro invocations that don't get their own docs. This PR updates the message to say "rustdoc does not generate documentation for <b>macro invocations</b>".

I observe that prior to #69084 this used to say "rustdoc does not generate documentation for **macro expansions**", as implemented originally in #57882. I don't have a preference between those but I made the commit before looking up the history.

r? @Manishearth
attn: @yaahc @euclio
2020-04-22 12:18:38 +02:00
Dylan DPC
e7c5334a88
Rollup merge of #71337 - Valloric:rustdoc-check-pass, r=GuillaumeGomez
Moving all rustdoc-ui tests to check-pass

These were all build-pass before and don't seem to need it.

Helps with #62277

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/rust-lang/rust/71337)
<!-- Reviewable:end -->
2020-04-22 12:18:36 +02:00
Dylan DPC
372d37b106
Rollup merge of #71214 - GuillaumeGomez:add-error-code-inner-doc-error, r=Dylan-DPC
Add error code for inner doc error

r? @Dylan-DPC

cc @oli-obk
2020-04-22 12:18:34 +02:00
Dylan DPC
7b1ce6e98d
Rollup merge of #71203 - csmoe:issue-71137, r=csmoe
Correct await span for async-await error reporting

Closes #71137
r? @tmandry
2020-04-22 12:18:33 +02:00
Dylan DPC
707004c552
Rollup merge of #70970 - eddyb:trait-vs-impl-mismatch, r=oli-obk
Detect mistyped associated consts in `Instance::resolve`.

*Based on #71049 to prevent redundant/misleading downstream errors.*

Fixes #70942 by refusing to resolve an associated `const` if it doesn't have the same type in the `impl` that it does in the `trait` (which we assume had errored, and `delay_span_bug` guards against bugs).
2020-04-22 12:18:31 +02:00
Guillaume Gomez
038f5b7433 Update UI tests 2020-04-22 11:09:57 +02:00
Guillaume Gomez
3390ff97b2 Add error code to inner doc comment attribute error 2020-04-22 11:08:50 +02:00
YI
bb1eedb026 add message for resolution failure because wrong namespace 2020-04-22 16:05:17 +08:00
bors
4bfd62acb1 Auto merge of #71323 - nnethercote:bitcode-in-rlib, r=alexcrichton
Add `-Cbitcode-in-rlib`.

This is a cut-down version of #70458 that gets the compile-time wins.

r? @alexcrichton
2020-04-22 07:52:42 +00:00
Philipp Hansch
23b9f46fff
More diagnostic items for Clippy usage
This adds a couple of more diagnostic items to be used in Clippy.
I chose these particular ones because they were the types which we seem
to check for the most in Clippy. I'm not sure if the
`cfg_attr(not(test))` is needed, but it was also used for `Vec` and a
few other types.
2020-04-22 07:57:56 +02:00
Nicholas Nethercote
a105c5c2c0 Build libstd with -Cbitcode-in-rlib=yes.
So that the rlibs will work with both LTO and non-LTO builds.
2020-04-22 15:22:18 +10:00