diff options
| author | bors <bors@rust-lang.org> | 2022-05-10 08:12:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-05-10 08:12:50 +0000 |
| commit | d53f1e8fbf891cf84fcb11eb078a27e528df795a (patch) | |
| tree | 61c1d67b743326a6e62a8dfacff273877dad1000 /src | |
| parent | 2226f19f701fa53172fa48406c0f4ccb96b88ee6 (diff) | |
| parent | ec53c379ccb79257f4802a883b42789daec00c50 (diff) | |
| download | rust-d53f1e8fbf891cf84fcb11eb078a27e528df795a.tar.gz rust-d53f1e8fbf891cf84fcb11eb078a27e528df795a.zip | |
Auto merge of #96891 - Dylan-DPC:rollup-echa4wg, r=Dylan-DPC
Rollup of 5 pull requests Successful merges: - #93661 (Add missing rustc arg docs) - #96674 (docs: add link explaining variance to NonNull docs) - #96812 (Do not lint on explicit outlives requirements from external macros.) - #96823 (Properly fix #96638) - #96872 (make sure ScalarPair enums have ScalarPair variants; add some layout sanity checks) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc/rustc/src/codegen-options/index.md | 15 | ||||
| -rw-r--r-- | src/doc/rustc/src/command-line-arguments.md | 3 | ||||
| -rw-r--r-- | src/doc/rustc/src/json.md | 26 | ||||
| -rw-r--r-- | src/test/codegen/align-struct.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/layout/debug.stderr | 38 | ||||
| -rw-r--r-- | src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr | 92 | ||||
| -rw-r--r-- | src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs | 28 | ||||
| -rw-r--r-- | src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr | 14 |
9 files changed, 202 insertions, 22 deletions
diff --git a/src/doc/rustc/src/codegen-options/index.md b/src/doc/rustc/src/codegen-options/index.md index 3b0cf92bbb7..02011325d68 100644 --- a/src/doc/rustc/src/codegen-options/index.md +++ b/src/doc/rustc/src/codegen-options/index.md @@ -550,6 +550,21 @@ Supported values for this option are: - `symbols` - same as `debuginfo`, but the rest of the symbol table section is stripped as well if the linker supports it. +## symbol-mangling-version + +This option controls the [name mangling] format for encoding Rust item names +for the purpose of generating object code and linking. + +Supported values for this option are: + +* `v0` — The "v0" mangling scheme. The specific format is not specified at + this time. + +The default if not specified will use a compiler-chosen default which may +change in the future. + +[name mangling]: https://en.wikipedia.org/wiki/Name_mangling + ## target-cpu This instructs `rustc` to generate code specifically for a particular processor. diff --git a/src/doc/rustc/src/command-line-arguments.md b/src/doc/rustc/src/command-line-arguments.md index bee9a8d808f..0d02fa7bd6b 100644 --- a/src/doc/rustc/src/command-line-arguments.md +++ b/src/doc/rustc/src/command-line-arguments.md @@ -408,6 +408,9 @@ to customize the output: argument](#option-emit), and as soon as the artifact is available on the filesystem a notification will be emitted. +- `future-incompat` - includes a JSON message that contains a report if the + crate contains any code that may fail to compile in the future. + Note that it is invalid to combine the `--json` argument with the [`--color`](#option-color) argument, and it is required to combine `--json` with `--error-format=json`. diff --git a/src/doc/rustc/src/json.md b/src/doc/rustc/src/json.md index 5dee603142d..efbf861eaa6 100644 --- a/src/doc/rustc/src/json.md +++ b/src/doc/rustc/src/json.md @@ -229,6 +229,32 @@ flag][option-emit] documentation. } ``` +## Future-incompatible reports + +If the [`--json=future-incompat`][option-json] flag is used, then a separate +JSON structure will be emitted if the crate may stop compiling in the future. +This contains diagnostic information about the particular warnings that may be +turned into a hard error in the future. This will include the diagnostic +information, even if the diagnostics have been suppressed (such as with an +`#[allow]` attribute or the `--cap-lints` option). + +```javascript +{ + /* An array of objects describing a warning that will become a hard error + in the future. + */ + "future_incompat_report": + [ + { + /* A diagnostic structure as defined in + https://doc.rust-lang.org/rustc/json.html#diagnostics + */ + "diagnostic": {...}, + } + ] +} +``` + [option-emit]: command-line-arguments.md#option-emit [option-error-format]: command-line-arguments.md#option-error-format [option-json]: command-line-arguments.md#option-json diff --git a/src/test/codegen/align-struct.rs b/src/test/codegen/align-struct.rs index acc5a2d5499..f129f073e98 100644 --- a/src/test/codegen/align-struct.rs +++ b/src/test/codegen/align-struct.rs @@ -19,7 +19,7 @@ pub enum Enum4 { A(i32), B(i32), } -// CHECK: %"Enum4::A" = type { [1 x i32], i32 } +// No Aggregate type, and hence nothing in LLVM IR. pub enum Enum64 { A(Align64), diff --git a/src/test/ui/layout/debug.stderr b/src/test/ui/layout/debug.stderr index 56a1337e6a5..7dbcc151855 100644 --- a/src/test/ui/layout/debug.stderr +++ b/src/test/ui/layout/debug.stderr @@ -184,9 +184,22 @@ error: layout_of(std::result::Result<i32, i32>) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I32, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I32, + true, + ), + valid_range: 0..=4294967295, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(4 bytes), @@ -206,9 +219,22 @@ error: layout_of(std::result::Result<i32, i32>) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I32, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I32, + true, + ), + valid_range: 0..=4294967295, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(4 bytes), diff --git a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr b/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr index 1a724e6f59b..33dfa307c1d 100644 --- a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr +++ b/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr @@ -30,9 +30,21 @@ error: layout_of(MissingPayloadField) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -131,9 +143,22 @@ error: layout_of(CommonPayloadField) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=255, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -153,9 +178,22 @@ error: layout_of(CommonPayloadField) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=255, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -237,9 +275,21 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -259,9 +309,21 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), diff --git a/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs b/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs new file mode 100644 index 00000000000..d45fa10f022 --- /dev/null +++ b/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs @@ -0,0 +1,6 @@ +pub fn foo() {} + +#[macro_export] +macro_rules! gimme_a { + ($($mac:tt)*) => { $($mac)* { 'a } } +} diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs new file mode 100644 index 00000000000..d7a832831c1 --- /dev/null +++ b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs @@ -0,0 +1,28 @@ +// edition:2018 +// aux-build:edition-lint-infer-outlives-macro.rs + +// Test that the lint does not fire if the where predicate +// is from the local crate, but all the bounds are from an +// external macro. + +#![deny(explicit_outlives_requirements)] + +#[macro_use] +extern crate edition_lint_infer_outlives_macro; + +macro_rules! make_foo { + ($a:tt) => { + struct Foo<$a, 'b> where 'b: $a { + foo: &$a &'b (), + } + } +} + +gimme_a! {make_foo!} + +struct Bar<'a, 'b: 'a> { + //~^ ERROR: outlives requirements can be inferred + bar: &'a &'b (), +} + +fn main() {} diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr new file mode 100644 index 00000000000..553b1cd976a --- /dev/null +++ b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr @@ -0,0 +1,14 @@ +error: outlives requirements can be inferred + --> $DIR/edition-lint-infer-outlives-macro.rs:23:18 + | +LL | struct Bar<'a, 'b: 'a> { + | ^^^^ help: remove this bound + | +note: the lint level is defined here + --> $DIR/edition-lint-infer-outlives-macro.rs:8:9 + | +LL | #![deny(explicit_outlives_requirements)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + |
