summaryrefslogtreecommitdiffstats
path: root/tests/ui-fulldeps
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui-fulldeps')
-rw-r--r--tests/ui-fulldeps/compiler-calls.rs1
-rw-r--r--tests/ui-fulldeps/deriving-encodable-decodable-box.rs34
-rw-r--r--tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs44
-rw-r--r--tests/ui-fulldeps/fluent-messages/test.rs4
-rw-r--r--tests/ui-fulldeps/hash-stable-is-unstable.rs1
-rw-r--r--tests/ui-fulldeps/hash-stable-is-unstable.stderr10
-rw-r--r--tests/ui-fulldeps/internal-lints/diagnostics.rs8
-rw-r--r--tests/ui-fulldeps/internal-lints/diagnostics.stderr10
-rw-r--r--tests/ui-fulldeps/issue-14021.rs33
-rw-r--r--tests/ui-fulldeps/lint-group-denied-lint-allowed.rs7
-rw-r--r--tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs7
-rw-r--r--tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr10
-rw-r--r--tests/ui-fulldeps/pathless-extern-unstable.rs1
-rw-r--r--tests/ui-fulldeps/pathless-extern-unstable.stderr2
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/empty-plugin.rs (renamed from tests/ui-fulldeps/auxiliary/empty-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/issue-40001-plugin.rs (renamed from tests/ui-fulldeps/auxiliary/issue-40001-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lint-for-crate.rs (renamed from tests/ui-fulldeps/auxiliary/lint-for-crate.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lint-group-plugin-test.rs (renamed from tests/ui-fulldeps/auxiliary/lint-group-plugin-test.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lint-plugin-test.rs (renamed from tests/ui-fulldeps/auxiliary/lint-plugin-test.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lint-tool-test.rs (renamed from tests/ui-fulldeps/auxiliary/lint-tool-test.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-lib.rs (renamed from tests/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-plugin.rs (renamed from tests/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-1.rs (renamed from tests/ui-fulldeps/auxiliary/multiple-plugins-1.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-2.rs (renamed from tests/ui-fulldeps/auxiliary/multiple-plugins-2.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/outlive-expansion-phase.rs (renamed from tests/ui-fulldeps/auxiliary/outlive-expansion-phase.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/auxiliary/rlib-crate-test.rs (renamed from tests/ui-fulldeps/auxiliary/rlib-crate-test.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/feature-gate-plugin.rs (renamed from tests/ui-fulldeps/feature-gate-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/feature-gate-plugin.stderr (renamed from tests/ui-fulldeps/feature-gate-plugin.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/gated-plugin.rs (renamed from tests/ui-fulldeps/gated-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/gated-plugin.stderr (renamed from tests/ui-fulldeps/gated-plugin.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/issue-15778-fail.rs (renamed from tests/ui-fulldeps/issue-15778-fail.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/issue-15778-fail.stderr (renamed from tests/ui-fulldeps/issue-15778-fail.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/issue-40001.rs (renamed from tests/ui-fulldeps/issue-40001.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/issue-40001.stderr (renamed from tests/ui-fulldeps/issue-40001.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.rs (renamed from tests/ui-fulldeps/lint-group-plugin-deny-cmdline.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.stderr (renamed from tests/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-group-plugin.rs (renamed from tests/ui-fulldeps/lint-group-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-group-plugin.stderr (renamed from tests/ui-fulldeps/lint-group-plugin.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.rs (renamed from tests/ui-fulldeps/lint-plugin-cmdline-allow.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.stderr (renamed from tests/ui-fulldeps/lint-plugin-cmdline-allow.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.rs (renamed from tests/ui-fulldeps/lint-plugin-cmdline-load.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.stderr (renamed from tests/ui-fulldeps/lint-plugin-cmdline-load.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-deny-attr.rs (renamed from tests/ui-fulldeps/lint-plugin-deny-attr.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-deny-attr.stderr (renamed from tests/ui-fulldeps/lint-plugin-deny-attr.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.rs (renamed from tests/ui-fulldeps/lint-plugin-deny-cmdline.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.stderr (renamed from tests/ui-fulldeps/lint-plugin-deny-cmdline.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.rs (renamed from tests/ui-fulldeps/lint-plugin-forbid-attrs.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.stderr (renamed from tests/ui-fulldeps/lint-plugin-forbid-attrs.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.rs (renamed from tests/ui-fulldeps/lint-plugin-forbid-cmdline.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.stderr (renamed from tests/ui-fulldeps/lint-plugin-forbid-cmdline.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin.rs (renamed from tests/ui-fulldeps/lint-plugin.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-plugin.stderr (renamed from tests/ui-fulldeps/lint-plugin.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.rs (renamed from tests/ui-fulldeps/lint-tool-cmdline-allow.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.stderr (renamed from tests/ui-fulldeps/lint-tool-cmdline-allow.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-tool-test.rs (renamed from tests/ui-fulldeps/lint-tool-test.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lint-tool-test.stderr (renamed from tests/ui-fulldeps/lint-tool-test.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/lto-syntax-extension.rs (renamed from tests/ui-fulldeps/lto-syntax-extension.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/lto-syntax-extension.stderr (renamed from tests/ui-fulldeps/lto-syntax-extension.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/macro-crate-rlib.rs (renamed from tests/ui-fulldeps/macro-crate-rlib.rs)1
-rw-r--r--tests/ui-fulldeps/plugin/macro-crate-rlib.stderr (renamed from tests/ui-fulldeps/macro-crate-rlib.stderr)2
-rw-r--r--tests/ui-fulldeps/plugin/multiple-plugins.rs (renamed from tests/ui-fulldeps/multiple-plugins.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/multiple-plugins.stderr (renamed from tests/ui-fulldeps/multiple-plugins.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/outlive-expansion-phase.rs (renamed from tests/ui-fulldeps/outlive-expansion-phase.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/outlive-expansion-phase.stderr (renamed from tests/ui-fulldeps/outlive-expansion-phase.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/plugin-args.rs (renamed from tests/ui-fulldeps/plugin-args.rs)0
-rw-r--r--tests/ui-fulldeps/plugin/plugin-args.stderr (renamed from tests/ui-fulldeps/plugin-args.stderr)0
-rw-r--r--tests/ui-fulldeps/plugin/plugin-as-extern-crate.rs (renamed from tests/ui-fulldeps/plugin-as-extern-crate.rs)0
-rw-r--r--tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.rs49
-rw-r--r--tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.stderr30
-rw-r--r--tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs7
-rw-r--r--tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr189
-rw-r--r--tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs5
-rw-r--r--tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr182
-rw-r--r--tests/ui-fulldeps/stable-mir/crate-info.rs38
74 files changed, 331 insertions, 344 deletions
diff --git a/tests/ui-fulldeps/compiler-calls.rs b/tests/ui-fulldeps/compiler-calls.rs
index a9520b592..b6d3b7b04 100644
--- a/tests/ui-fulldeps/compiler-calls.rs
+++ b/tests/ui-fulldeps/compiler-calls.rs
@@ -2,7 +2,6 @@
// Test that the Callbacks interface to the compiler works.
// ignore-cross-compile
-// ignore-stage1
// ignore-remote
#![feature(rustc_private)]
diff --git a/tests/ui-fulldeps/deriving-encodable-decodable-box.rs b/tests/ui-fulldeps/deriving-encodable-decodable-box.rs
deleted file mode 100644
index 1c376f59e..000000000
--- a/tests/ui-fulldeps/deriving-encodable-decodable-box.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// run-pass
-
-#![allow(unused_imports)]
-#![feature(rustc_private)]
-
-extern crate rustc_macros;
-extern crate rustc_serialize;
-
-// Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
-// files.
-#[allow(unused_extern_crates)]
-extern crate rustc_driver;
-
-use rustc_macros::{Decodable, Encodable};
-use rustc_serialize::opaque::{MemDecoder, MemEncoder};
-use rustc_serialize::{Decodable, Encodable, Encoder};
-
-#[derive(Encodable, Decodable)]
-struct A {
- foo: Box<[bool]>,
-}
-
-fn main() {
- let obj = A { foo: Box::new([true, false]) };
-
- let mut encoder = MemEncoder::new();
- obj.encode(&mut encoder);
- let data = encoder.finish();
-
- let mut decoder = MemDecoder::new(&data, 0);
- let obj2 = A::decode(&mut decoder);
-
- assert_eq!(obj.foo, obj2.foo);
-}
diff --git a/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs b/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs
deleted file mode 100644
index 844d40f2e..000000000
--- a/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// run-pass
-
-#![allow(unused_imports)]
-// This briefly tests the capability of `Cell` and `RefCell` to implement the
-// `Encodable` and `Decodable` traits via `#[derive(Encodable, Decodable)]`
-#![feature(rustc_private)]
-
-extern crate rustc_macros;
-extern crate rustc_serialize;
-
-// Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
-// files.
-#[allow(unused_extern_crates)]
-extern crate rustc_driver;
-
-use rustc_macros::{Decodable, Encodable};
-use rustc_serialize::opaque::{MemDecoder, MemEncoder};
-use rustc_serialize::{Decodable, Encodable, Encoder};
-use std::cell::{Cell, RefCell};
-
-#[derive(Encodable, Decodable)]
-struct A {
- baz: isize,
-}
-
-#[derive(Encodable, Decodable)]
-struct B {
- foo: Cell<bool>,
- bar: RefCell<A>,
-}
-
-fn main() {
- let obj = B { foo: Cell::new(true), bar: RefCell::new(A { baz: 2 }) };
-
- let mut encoder = MemEncoder::new();
- obj.encode(&mut encoder);
- let data = encoder.finish();
-
- let mut decoder = MemDecoder::new(&data, 0);
- let obj2 = B::decode(&mut decoder);
-
- assert_eq!(obj.foo.get(), obj2.foo.get());
- assert_eq!(obj.bar.borrow().baz, obj2.bar.borrow().baz);
-}
diff --git a/tests/ui-fulldeps/fluent-messages/test.rs b/tests/ui-fulldeps/fluent-messages/test.rs
index 6ba13387b..1dd6d211b 100644
--- a/tests/ui-fulldeps/fluent-messages/test.rs
+++ b/tests/ui-fulldeps/fluent-messages/test.rs
@@ -3,8 +3,8 @@
#![feature(rustc_private)]
#![crate_type = "lib"]
-extern crate rustc_macros;
-use rustc_macros::fluent_messages;
+extern crate rustc_fluent_macro;
+use rustc_fluent_macro::fluent_messages;
/// Copy of the relevant `DiagnosticMessage` variant constructed by `fluent_messages` as it
/// expects `crate::DiagnosticMessage` to exist.
diff --git a/tests/ui-fulldeps/hash-stable-is-unstable.rs b/tests/ui-fulldeps/hash-stable-is-unstable.rs
index 11fe688f3..37d7472ec 100644
--- a/tests/ui-fulldeps/hash-stable-is-unstable.rs
+++ b/tests/ui-fulldeps/hash-stable-is-unstable.rs
@@ -1,4 +1,3 @@
-// ignore-stage1
// compile-flags: -Zdeduplicate-diagnostics=yes
extern crate rustc_data_structures;
//~^ use of unstable library feature 'rustc_private'
diff --git a/tests/ui-fulldeps/hash-stable-is-unstable.stderr b/tests/ui-fulldeps/hash-stable-is-unstable.stderr
index d25657691..1a8994d72 100644
--- a/tests/ui-fulldeps/hash-stable-is-unstable.stderr
+++ b/tests/ui-fulldeps/hash-stable-is-unstable.stderr
@@ -1,5 +1,5 @@
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/hash-stable-is-unstable.rs:3:1
+ --> $DIR/hash-stable-is-unstable.rs:2:1
|
LL | extern crate rustc_data_structures;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8,7 +8,7 @@ LL | extern crate rustc_data_structures;
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/hash-stable-is-unstable.rs:5:1
+ --> $DIR/hash-stable-is-unstable.rs:4:1
|
LL | extern crate rustc_macros;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -17,7 +17,7 @@ LL | extern crate rustc_macros;
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/hash-stable-is-unstable.rs:7:1
+ --> $DIR/hash-stable-is-unstable.rs:6:1
|
LL | extern crate rustc_query_system;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -26,7 +26,7 @@ LL | extern crate rustc_query_system;
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/hash-stable-is-unstable.rs:10:5
+ --> $DIR/hash-stable-is-unstable.rs:9:5
|
LL | use rustc_macros::HashStable;
| ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -35,7 +35,7 @@ LL | use rustc_macros::HashStable;
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/hash-stable-is-unstable.rs:13:10
+ --> $DIR/hash-stable-is-unstable.rs:12:10
|
LL | #[derive(HashStable)]
| ^^^^^^^^^^
diff --git a/tests/ui-fulldeps/internal-lints/diagnostics.rs b/tests/ui-fulldeps/internal-lints/diagnostics.rs
index 3aa65d53d..994fc26ba 100644
--- a/tests/ui-fulldeps/internal-lints/diagnostics.rs
+++ b/tests/ui-fulldeps/internal-lints/diagnostics.rs
@@ -7,15 +7,17 @@
#![deny(rustc::diagnostic_outside_of_impl)]
extern crate rustc_errors;
+extern crate rustc_fluent_macro;
extern crate rustc_macros;
extern crate rustc_session;
extern crate rustc_span;
use rustc_errors::{
- AddToDiagnostic, IntoDiagnostic, Diagnostic, DiagnosticBuilder,
- ErrorGuaranteed, Handler, DiagnosticMessage, SubdiagnosticMessage,
+ AddToDiagnostic, Diagnostic, DiagnosticBuilder, DiagnosticMessage, ErrorGuaranteed, Handler,
+ IntoDiagnostic, SubdiagnosticMessage,
};
-use rustc_macros::{fluent_messages, Diagnostic, Subdiagnostic};
+use rustc_fluent_macro::fluent_messages;
+use rustc_macros::{Diagnostic, Subdiagnostic};
use rustc_span::Span;
fluent_messages! { "./diagnostics.ftl" }
diff --git a/tests/ui-fulldeps/internal-lints/diagnostics.stderr b/tests/ui-fulldeps/internal-lints/diagnostics.stderr
index 6f797ebc2..6e670c018 100644
--- a/tests/ui-fulldeps/internal-lints/diagnostics.stderr
+++ b/tests/ui-fulldeps/internal-lints/diagnostics.stderr
@@ -1,5 +1,5 @@
error: diagnostics should be created using translatable messages
- --> $DIR/diagnostics.rs:41:17
+ --> $DIR/diagnostics.rs:43:17
|
LL | handler.struct_err("untranslatable diagnostic")
| ^^^^^^^^^^
@@ -11,13 +11,13 @@ LL | #![deny(rustc::untranslatable_diagnostic)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostics should be created using translatable messages
- --> $DIR/diagnostics.rs:61:14
+ --> $DIR/diagnostics.rs:63:14
|
LL | diag.note("untranslatable diagnostic");
| ^^^^
error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
- --> $DIR/diagnostics.rs:78:25
+ --> $DIR/diagnostics.rs:80:25
|
LL | let _diag = handler.struct_err(crate::fluent_generated::no_crate_example);
| ^^^^^^^^^^
@@ -29,13 +29,13 @@ LL | #![deny(rustc::diagnostic_outside_of_impl)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
- --> $DIR/diagnostics.rs:81:25
+ --> $DIR/diagnostics.rs:83:25
|
LL | let _diag = handler.struct_err("untranslatable diagnostic");
| ^^^^^^^^^^
error: diagnostics should be created using translatable messages
- --> $DIR/diagnostics.rs:81:25
+ --> $DIR/diagnostics.rs:83:25
|
LL | let _diag = handler.struct_err("untranslatable diagnostic");
| ^^^^^^^^^^
diff --git a/tests/ui-fulldeps/issue-14021.rs b/tests/ui-fulldeps/issue-14021.rs
deleted file mode 100644
index 309b5c4a0..000000000
--- a/tests/ui-fulldeps/issue-14021.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// run-pass
-
-#![allow(unused_mut)]
-#![allow(unused_imports)]
-#![feature(rustc_private)]
-
-extern crate rustc_macros;
-extern crate rustc_serialize;
-
-// Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
-// files.
-#[allow(unused_extern_crates)]
-extern crate rustc_driver;
-
-use rustc_macros::{Decodable, Encodable};
-use rustc_serialize::opaque::{MemDecoder, MemEncoder};
-use rustc_serialize::{Decodable, Encodable, Encoder};
-
-#[derive(Encodable, Decodable, PartialEq, Debug)]
-struct UnitLikeStruct;
-
-pub fn main() {
- let obj = UnitLikeStruct;
-
- let mut encoder = MemEncoder::new();
- obj.encode(&mut encoder);
- let data = encoder.finish();
-
- let mut decoder = MemDecoder::new(&data, 0);
- let obj2 = UnitLikeStruct::decode(&mut decoder);
-
- assert_eq!(obj, obj2);
-}
diff --git a/tests/ui-fulldeps/lint-group-denied-lint-allowed.rs b/tests/ui-fulldeps/lint-group-denied-lint-allowed.rs
deleted file mode 100644
index 7498745f2..000000000
--- a/tests/ui-fulldeps/lint-group-denied-lint-allowed.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// aux-build:lint-group-plugin-test.rs
-// check-pass
-// compile-flags: -D unused -A unused-variables
-
-fn main() {
- let x = 1;
-}
diff --git a/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs b/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs
deleted file mode 100644
index fc19bc039..000000000
--- a/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// aux-build:lint-group-plugin-test.rs
-// compile-flags: -F unused -A unused
-
-fn main() {
- let x = 1;
- //~^ ERROR unused variable: `x`
-}
diff --git a/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr b/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr
deleted file mode 100644
index 6bab367b0..000000000
--- a/tests/ui-fulldeps/lint-group-forbid-always-trumps-cli.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error: unused variable: `x`
- --> $DIR/lint-group-forbid-always-trumps-cli.rs:5:9
- |
-LL | let x = 1;
- | ^ help: if this is intentional, prefix it with an underscore: `_x`
- |
- = note: `-F unused-variables` implied by `-F unused`
-
-error: aborting due to previous error
-
diff --git a/tests/ui-fulldeps/pathless-extern-unstable.rs b/tests/ui-fulldeps/pathless-extern-unstable.rs
index 524b0c2f7..7fba8343b 100644
--- a/tests/ui-fulldeps/pathless-extern-unstable.rs
+++ b/tests/ui-fulldeps/pathless-extern-unstable.rs
@@ -1,4 +1,3 @@
-// ignore-stage1
// edition:2018
// compile-flags:--extern rustc_middle
diff --git a/tests/ui-fulldeps/pathless-extern-unstable.stderr b/tests/ui-fulldeps/pathless-extern-unstable.stderr
index dcc3cddd3..174cd3c28 100644
--- a/tests/ui-fulldeps/pathless-extern-unstable.stderr
+++ b/tests/ui-fulldeps/pathless-extern-unstable.stderr
@@ -1,5 +1,5 @@
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
- --> $DIR/pathless-extern-unstable.rs:7:9
+ --> $DIR/pathless-extern-unstable.rs:6:9
|
LL | pub use rustc_middle;
| ^^^^^^^^^^^^
diff --git a/tests/ui-fulldeps/auxiliary/empty-plugin.rs b/tests/ui-fulldeps/plugin/auxiliary/empty-plugin.rs
index c24cdc97a..c24cdc97a 100644
--- a/tests/ui-fulldeps/auxiliary/empty-plugin.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/empty-plugin.rs
diff --git a/tests/ui-fulldeps/auxiliary/issue-40001-plugin.rs b/tests/ui-fulldeps/plugin/auxiliary/issue-40001-plugin.rs
index 3f6caecaa..3f6caecaa 100644
--- a/tests/ui-fulldeps/auxiliary/issue-40001-plugin.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/issue-40001-plugin.rs
diff --git a/tests/ui-fulldeps/auxiliary/lint-for-crate.rs b/tests/ui-fulldeps/plugin/auxiliary/lint-for-crate.rs
index 6304c07d2..6304c07d2 100644
--- a/tests/ui-fulldeps/auxiliary/lint-for-crate.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lint-for-crate.rs
diff --git a/tests/ui-fulldeps/auxiliary/lint-group-plugin-test.rs b/tests/ui-fulldeps/plugin/auxiliary/lint-group-plugin-test.rs
index 4a41e7fbb..4a41e7fbb 100644
--- a/tests/ui-fulldeps/auxiliary/lint-group-plugin-test.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lint-group-plugin-test.rs
diff --git a/tests/ui-fulldeps/auxiliary/lint-plugin-test.rs b/tests/ui-fulldeps/plugin/auxiliary/lint-plugin-test.rs
index 30956deb7..30956deb7 100644
--- a/tests/ui-fulldeps/auxiliary/lint-plugin-test.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lint-plugin-test.rs
diff --git a/tests/ui-fulldeps/auxiliary/lint-tool-test.rs b/tests/ui-fulldeps/plugin/auxiliary/lint-tool-test.rs
index c2c024865..c2c024865 100644
--- a/tests/ui-fulldeps/auxiliary/lint-tool-test.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lint-tool-test.rs
diff --git a/tests/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs b/tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-lib.rs
index 954a1e554..954a1e554 100644
--- a/tests/ui-fulldeps/auxiliary/lto-syntax-extension-lib.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-lib.rs
diff --git a/tests/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs b/tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-plugin.rs
index 9b075c1a5..9b075c1a5 100644
--- a/tests/ui-fulldeps/auxiliary/lto-syntax-extension-plugin.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/lto-syntax-extension-plugin.rs
diff --git a/tests/ui-fulldeps/auxiliary/multiple-plugins-1.rs b/tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-1.rs
index fd6e9e20f..fd6e9e20f 100644
--- a/tests/ui-fulldeps/auxiliary/multiple-plugins-1.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-1.rs
diff --git a/tests/ui-fulldeps/auxiliary/multiple-plugins-2.rs b/tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-2.rs
index fd6e9e20f..fd6e9e20f 100644
--- a/tests/ui-fulldeps/auxiliary/multiple-plugins-2.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/multiple-plugins-2.rs
diff --git a/tests/ui-fulldeps/auxiliary/outlive-expansion-phase.rs b/tests/ui-fulldeps/plugin/auxiliary/outlive-expansion-phase.rs
index e83dfe804..e83dfe804 100644
--- a/tests/ui-fulldeps/auxiliary/outlive-expansion-phase.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/outlive-expansion-phase.rs
diff --git a/tests/ui-fulldeps/auxiliary/rlib-crate-test.rs b/tests/ui-fulldeps/plugin/auxiliary/rlib-crate-test.rs
index 3ba73538e..3ba73538e 100644
--- a/tests/ui-fulldeps/auxiliary/rlib-crate-test.rs
+++ b/tests/ui-fulldeps/plugin/auxiliary/rlib-crate-test.rs
diff --git a/tests/ui-fulldeps/feature-gate-plugin.rs b/tests/ui-fulldeps/plugin/feature-gate-plugin.rs
index 85eaf5336..85eaf5336 100644
--- a/tests/ui-fulldeps/feature-gate-plugin.rs
+++ b/tests/ui-fulldeps/plugin/feature-gate-plugin.rs
diff --git a/tests/ui-fulldeps/feature-gate-plugin.stderr b/tests/ui-fulldeps/plugin/feature-gate-plugin.stderr
index 5e40561c7..5e40561c7 100644
--- a/tests/ui-fulldeps/feature-gate-plugin.stderr
+++ b/tests/ui-fulldeps/plugin/feature-gate-plugin.stderr
diff --git a/tests/ui-fulldeps/gated-plugin.rs b/tests/ui-fulldeps/plugin/gated-plugin.rs
index 85eaf5336..85eaf5336 100644
--- a/tests/ui-fulldeps/gated-plugin.rs
+++ b/tests/ui-fulldeps/plugin/gated-plugin.rs
diff --git a/tests/ui-fulldeps/gated-plugin.stderr b/tests/ui-fulldeps/plugin/gated-plugin.stderr
index f48f1eab6..f48f1eab6 100644
--- a/tests/ui-fulldeps/gated-plugin.stderr
+++ b/tests/ui-fulldeps/plugin/gated-plugin.stderr
diff --git a/tests/ui-fulldeps/issue-15778-fail.rs b/tests/ui-fulldeps/plugin/issue-15778-fail.rs
index beecaadf9..beecaadf9 100644
--- a/tests/ui-fulldeps/issue-15778-fail.rs
+++ b/tests/ui-fulldeps/plugin/issue-15778-fail.rs
diff --git a/tests/ui-fulldeps/issue-15778-fail.stderr b/tests/ui-fulldeps/plugin/issue-15778-fail.stderr
index a37893e12..a37893e12 100644
--- a/tests/ui-fulldeps/issue-15778-fail.stderr
+++ b/tests/ui-fulldeps/plugin/issue-15778-fail.stderr
diff --git a/tests/ui-fulldeps/issue-40001.rs b/tests/ui-fulldeps/plugin/issue-40001.rs
index e14338fdb..e14338fdb 100644
--- a/tests/ui-fulldeps/issue-40001.rs
+++ b/tests/ui-fulldeps/plugin/issue-40001.rs
diff --git a/tests/ui-fulldeps/issue-40001.stderr b/tests/ui-fulldeps/plugin/issue-40001.stderr
index 73ec06924..73ec06924 100644
--- a/tests/ui-fulldeps/issue-40001.stderr
+++ b/tests/ui-fulldeps/plugin/issue-40001.stderr
diff --git a/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.rs b/tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.rs
index 9f8a87960..9f8a87960 100644
--- a/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.rs
+++ b/tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.rs
diff --git a/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr b/tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.stderr
index 20486d596..20486d596 100644
--- a/tests/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr
+++ b/tests/ui-fulldeps/plugin/lint-group-plugin-deny-cmdline.stderr
diff --git a/tests/ui-fulldeps/lint-group-plugin.rs b/tests/ui-fulldeps/plugin/lint-group-plugin.rs
index 7b74be7a9..7b74be7a9 100644
--- a/tests/ui-fulldeps/lint-group-plugin.rs
+++ b/tests/ui-fulldeps/plugin/lint-group-plugin.rs
diff --git a/tests/ui-fulldeps/lint-group-plugin.stderr b/tests/ui-fulldeps/plugin/lint-group-plugin.stderr
index 6f429dad0..6f429dad0 100644
--- a/tests/ui-fulldeps/lint-group-plugin.stderr
+++ b/tests/ui-fulldeps/plugin/lint-group-plugin.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-cmdline-allow.rs b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.rs
index 1cc16e2fd..1cc16e2fd 100644
--- a/tests/ui-fulldeps/lint-plugin-cmdline-allow.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.rs
diff --git a/tests/ui-fulldeps/lint-plugin-cmdline-allow.stderr b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.stderr
index f06703a27..f06703a27 100644
--- a/tests/ui-fulldeps/lint-plugin-cmdline-allow.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-allow.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-cmdline-load.rs b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.rs
index 0bd95dfbd..0bd95dfbd 100644
--- a/tests/ui-fulldeps/lint-plugin-cmdline-load.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.rs
diff --git a/tests/ui-fulldeps/lint-plugin-cmdline-load.stderr b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.stderr
index 82679c9e1..82679c9e1 100644
--- a/tests/ui-fulldeps/lint-plugin-cmdline-load.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-cmdline-load.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-deny-attr.rs b/tests/ui-fulldeps/plugin/lint-plugin-deny-attr.rs
index 04230a8e8..04230a8e8 100644
--- a/tests/ui-fulldeps/lint-plugin-deny-attr.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-deny-attr.rs
diff --git a/tests/ui-fulldeps/lint-plugin-deny-attr.stderr b/tests/ui-fulldeps/plugin/lint-plugin-deny-attr.stderr
index 5e8891bf1..5e8891bf1 100644
--- a/tests/ui-fulldeps/lint-plugin-deny-attr.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-deny-attr.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-deny-cmdline.rs b/tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.rs
index c460cfd5f..c460cfd5f 100644
--- a/tests/ui-fulldeps/lint-plugin-deny-cmdline.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.rs
diff --git a/tests/ui-fulldeps/lint-plugin-deny-cmdline.stderr b/tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.stderr
index d5d6b5352..d5d6b5352 100644
--- a/tests/ui-fulldeps/lint-plugin-deny-cmdline.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-deny-cmdline.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-forbid-attrs.rs b/tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.rs
index cf31b3ec1..cf31b3ec1 100644
--- a/tests/ui-fulldeps/lint-plugin-forbid-attrs.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.rs
diff --git a/tests/ui-fulldeps/lint-plugin-forbid-attrs.stderr b/tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.stderr
index ae34b25cc..ae34b25cc 100644
--- a/tests/ui-fulldeps/lint-plugin-forbid-attrs.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-forbid-attrs.stderr
diff --git a/tests/ui-fulldeps/lint-plugin-forbid-cmdline.rs b/tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.rs
index b9d1aa85a..b9d1aa85a 100644
--- a/tests/ui-fulldeps/lint-plugin-forbid-cmdline.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.rs
diff --git a/tests/ui-fulldeps/lint-plugin-forbid-cmdline.stderr b/tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.stderr
index 491c4d206..491c4d206 100644
--- a/tests/ui-fulldeps/lint-plugin-forbid-cmdline.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin-forbid-cmdline.stderr
diff --git a/tests/ui-fulldeps/lint-plugin.rs b/tests/ui-fulldeps/plugin/lint-plugin.rs
index 66057eea6..66057eea6 100644
--- a/tests/ui-fulldeps/lint-plugin.rs
+++ b/tests/ui-fulldeps/plugin/lint-plugin.rs
diff --git a/tests/ui-fulldeps/lint-plugin.stderr b/tests/ui-fulldeps/plugin/lint-plugin.stderr
index dd5d3d72e..dd5d3d72e 100644
--- a/tests/ui-fulldeps/lint-plugin.stderr
+++ b/tests/ui-fulldeps/plugin/lint-plugin.stderr
diff --git a/tests/ui-fulldeps/lint-tool-cmdline-allow.rs b/tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.rs
index 83a8b3e1a..83a8b3e1a 100644
--- a/tests/ui-fulldeps/lint-tool-cmdline-allow.rs
+++ b/tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.rs
diff --git a/tests/ui-fulldeps/lint-tool-cmdline-allow.stderr b/tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.stderr
index b060e3a3e..b060e3a3e 100644
--- a/tests/ui-fulldeps/lint-tool-cmdline-allow.stderr
+++ b/tests/ui-fulldeps/plugin/lint-tool-cmdline-allow.stderr
diff --git a/tests/ui-fulldeps/lint-tool-test.rs b/tests/ui-fulldeps/plugin/lint-tool-test.rs
index f92bcd213..f92bcd213 100644
--- a/tests/ui-fulldeps/lint-tool-test.rs
+++ b/tests/ui-fulldeps/plugin/lint-tool-test.rs
diff --git a/tests/ui-fulldeps/lint-tool-test.stderr b/tests/ui-fulldeps/plugin/lint-tool-test.stderr
index 027cf8f80..027cf8f80 100644
--- a/tests/ui-fulldeps/lint-tool-test.stderr
+++ b/tests/ui-fulldeps/plugin/lint-tool-test.stderr
diff --git a/tests/ui-fulldeps/lto-syntax-extension.rs b/tests/ui-fulldeps/plugin/lto-syntax-extension.rs
index 5964e70f1..5964e70f1 100644
--- a/tests/ui-fulldeps/lto-syntax-extension.rs
+++ b/tests/ui-fulldeps/plugin/lto-syntax-extension.rs
diff --git a/tests/ui-fulldeps/lto-syntax-extension.stderr b/tests/ui-fulldeps/plugin/lto-syntax-extension.stderr
index 555493f32..555493f32 100644
--- a/tests/ui-fulldeps/lto-syntax-extension.stderr
+++ b/tests/ui-fulldeps/plugin/lto-syntax-extension.stderr
diff --git a/tests/ui-fulldeps/macro-crate-rlib.rs b/tests/ui-fulldeps/plugin/macro-crate-rlib.rs
index 1fd514c61..38bd34053 100644
--- a/tests/ui-fulldeps/macro-crate-rlib.rs
+++ b/tests/ui-fulldeps/plugin/macro-crate-rlib.rs
@@ -1,4 +1,5 @@
// aux-build:rlib-crate-test.rs
+// ignore-stage1
// ignore-cross-compile gives a different error message
#![feature(plugin)]
diff --git a/tests/ui-fulldeps/macro-crate-rlib.stderr b/tests/ui-fulldeps/plugin/macro-crate-rlib.stderr
index 9c2b992b7..0651cee56 100644
--- a/tests/ui-fulldeps/macro-crate-rlib.stderr
+++ b/tests/ui-fulldeps/plugin/macro-crate-rlib.stderr
@@ -1,5 +1,5 @@
error[E0457]: plugin `rlib_crate_test` only found in rlib format, but must be available in dylib format
- --> $DIR/macro-crate-rlib.rs:5:11
+ --> $DIR/macro-crate-rlib.rs:6:11
|
LL | #![plugin(rlib_crate_test)]
| ^^^^^^^^^^^^^^^
diff --git a/tests/ui-fulldeps/multiple-plugins.rs b/tests/ui-fulldeps/plugin/multiple-plugins.rs
index 9af3ebd57..9af3ebd57 100644
--- a/tests/ui-fulldeps/multiple-plugins.rs
+++ b/tests/ui-fulldeps/plugin/multiple-plugins.rs
diff --git a/tests/ui-fulldeps/multiple-plugins.stderr b/tests/ui-fulldeps/plugin/multiple-plugins.stderr
index 878ffabfc..878ffabfc 100644
--- a/tests/ui-fulldeps/multiple-plugins.stderr
+++ b/tests/ui-fulldeps/plugin/multiple-plugins.stderr
diff --git a/tests/ui-fulldeps/outlive-expansion-phase.rs b/tests/ui-fulldeps/plugin/outlive-expansion-phase.rs
index fb22888d9..fb22888d9 100644
--- a/tests/ui-fulldeps/outlive-expansion-phase.rs
+++ b/tests/ui-fulldeps/plugin/outlive-expansion-phase.rs
diff --git a/tests/ui-fulldeps/outlive-expansion-phase.stderr b/tests/ui-fulldeps/plugin/outlive-expansion-phase.stderr
index e40a08ae7..e40a08ae7 100644
--- a/tests/ui-fulldeps/outlive-expansion-phase.stderr
+++ b/tests/ui-fulldeps/plugin/outlive-expansion-phase.stderr
diff --git a/tests/ui-fulldeps/plugin-args.rs b/tests/ui-fulldeps/plugin/plugin-args.rs
index 488f2b775..488f2b775 100644
--- a/tests/ui-fulldeps/plugin-args.rs
+++ b/tests/ui-fulldeps/plugin/plugin-args.rs
diff --git a/tests/ui-fulldeps/plugin-args.stderr b/tests/ui-fulldeps/plugin/plugin-args.stderr
index 177f33005..177f33005 100644
--- a/tests/ui-fulldeps/plugin-args.stderr
+++ b/tests/ui-fulldeps/plugin/plugin-args.stderr
diff --git a/tests/ui-fulldeps/plugin-as-extern-crate.rs b/tests/ui-fulldeps/plugin/plugin-as-extern-crate.rs
index 4d26e08d8..4d26e08d8 100644
--- a/tests/ui-fulldeps/plugin-as-extern-crate.rs
+++ b/tests/ui-fulldeps/plugin/plugin-as-extern-crate.rs
diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.rs b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.rs
new file mode 100644
index 000000000..642b58b07
--- /dev/null
+++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.rs
@@ -0,0 +1,49 @@
+// check-fail
+// Tests that a doc comment will not preclude a field from being considered a diagnostic argument
+// normalize-stderr-test "the following other types implement trait `IntoDiagnosticArg`:(?:.*\n){0,9}\s+and \d+ others" -> "normalized in stderr"
+// normalize-stderr-test "diagnostic_builder\.rs:[0-9]+:[0-9]+" -> "diagnostic_builder.rs:LL:CC"
+
+// The proc_macro2 crate handles spans differently when on beta/stable release rather than nightly,
+// changing the output of this test. Since Subdiagnostic is strictly internal to the compiler
+// the test is just ignored on stable and beta:
+// ignore-stage1
+// ignore-beta
+// ignore-stable
+
+#![feature(rustc_private)]
+#![crate_type = "lib"]
+
+extern crate rustc_errors;
+extern crate rustc_fluent_macro;
+extern crate rustc_macros;
+extern crate rustc_session;
+extern crate rustc_span;
+
+use rustc_errors::{Applicability, DiagnosticMessage, SubdiagnosticMessage};
+use rustc_fluent_macro::fluent_messages;
+use rustc_macros::{Diagnostic, Subdiagnostic};
+use rustc_span::Span;
+
+fluent_messages! { "./example.ftl" }
+
+struct NotIntoDiagnosticArg;
+
+#[derive(Diagnostic)]
+#[diag(no_crate_example)]
+struct Test {
+ #[primary_span]
+ span: Span,
+ /// A doc comment
+ arg: NotIntoDiagnosticArg,
+ //~^ ERROR the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
+}
+
+#[derive(Subdiagnostic)]
+#[label(no_crate_example)]
+struct SubTest {
+ #[primary_span]
+ span: Span,
+ /// A doc comment
+ arg: NotIntoDiagnosticArg,
+ //~^ ERROR the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
+}
diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.stderr b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.stderr
new file mode 100644
index 000000000..e4b8958b4
--- /dev/null
+++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive-doc-comment-field.stderr
@@ -0,0 +1,30 @@
+error[E0277]: the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
+ --> $DIR/diagnostic-derive-doc-comment-field.rs:37:10
+ |
+LL | #[derive(Diagnostic)]
+ | ---------- required by a bound introduced by this call
+...
+LL | arg: NotIntoDiagnosticArg,
+ | ^^^^^^^^^^^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `NotIntoDiagnosticArg`
+ |
+ = help: normalized in stderr
+note: required by a bound in `DiagnosticBuilder::<'a, G>::set_arg`
+ --> $COMPILER_DIR/rustc_errors/src/diagnostic_builder.rs:LL:CC
+ = note: this error originates in the macro `forward` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
+ --> $DIR/diagnostic-derive-doc-comment-field.rs:47:10
+ |
+LL | #[derive(Subdiagnostic)]
+ | ------------- required by a bound introduced by this call
+...
+LL | arg: NotIntoDiagnosticArg,
+ | ^^^^^^^^^^^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `NotIntoDiagnosticArg`
+ |
+ = help: normalized in stderr
+note: required by a bound in `Diagnostic::set_arg`
+ --> $COMPILER_DIR/rustc_errors/src/diagnostic.rs:964:5
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
index 6cc7bab37..39e34d73f 100644
--- a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
+++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
@@ -6,6 +6,7 @@
// The proc_macro2 crate handles spans differently when on beta/stable release rather than nightly,
// changing the output of this test. Since Diagnostic is strictly internal to the compiler
// the test is just ignored on stable and beta:
+// ignore-stage1
// ignore-beta
// ignore-stable
@@ -16,8 +17,10 @@ extern crate rustc_span;
use rustc_span::symbol::Ident;
use rustc_span::Span;
+extern crate rustc_fluent_macro;
extern crate rustc_macros;
-use rustc_macros::{fluent_messages, Diagnostic, LintDiagnostic, Subdiagnostic};
+use rustc_fluent_macro::fluent_messages;
+use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
extern crate rustc_middle;
use rustc_middle::ty::Ty;
@@ -336,12 +339,12 @@ struct ErrorWithDefaultLabelAttr<'a> {
}
#[derive(Diagnostic)]
-//~^ ERROR the trait bound `Hello: IntoDiagnosticArg` is not satisfied
#[diag(no_crate_example, code = "E0123")]
struct ArgFieldWithoutSkip {
#[primary_span]
span: Span,
other: Hello,
+ //~^ ERROR the trait bound `Hello: IntoDiagnosticArg` is not satisfied
}
#[derive(Diagnostic)]
diff --git a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
index a2f3bb527..801e4b579 100644
--- a/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
+++ b/tests/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
@@ -1,11 +1,11 @@
error: unsupported type attribute for diagnostic derive enum
- --> $DIR/diagnostic-derive.rs:41:1
+ --> $DIR/diagnostic-derive.rs:44:1
|
LL | #[diag(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:44:5
+ --> $DIR/diagnostic-derive.rs:47:5
|
LL | Foo,
| ^^^
@@ -13,7 +13,7 @@ LL | Foo,
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:46:5
+ --> $DIR/diagnostic-derive.rs:49:5
|
LL | Bar,
| ^^^
@@ -21,19 +21,19 @@ LL | Bar,
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: expected parentheses: #[diag(...)]
- --> $DIR/diagnostic-derive.rs:52:8
+ --> $DIR/diagnostic-derive.rs:55:8
|
LL | #[diag = "E0123"]
| ^
error: `#[nonsense(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:57:1
+ --> $DIR/diagnostic-derive.rs:60:1
|
LL | #[nonsense(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:57:1
+ --> $DIR/diagnostic-derive.rs:60:1
|
LL | / #[nonsense(no_crate_example, code = "E0123")]
LL | |
@@ -45,7 +45,7 @@ LL | | struct InvalidStructAttr {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:64:1
+ --> $DIR/diagnostic-derive.rs:67:1
|
LL | / #[diag("E0123")]
LL | |
@@ -55,13 +55,13 @@ LL | | struct InvalidLitNestedAttr {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: diagnostic slug must be the first argument
- --> $DIR/diagnostic-derive.rs:74:16
+ --> $DIR/diagnostic-derive.rs:77:16
|
LL | #[diag(nonsense("foo"), code = "E0123", slug = "foo")]
| ^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:74:1
+ --> $DIR/diagnostic-derive.rs:77:1
|
LL | / #[diag(nonsense("foo"), code = "E0123", slug = "foo")]
LL | |
@@ -72,7 +72,7 @@ LL | | struct InvalidNestedStructAttr1 {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: unknown argument
- --> $DIR/diagnostic-derive.rs:80:8
+ --> $DIR/diagnostic-derive.rs:83:8
|
LL | #[diag(nonsense = "...", code = "E0123", slug = "foo")]
| ^^^^^^^^
@@ -80,7 +80,7 @@ LL | #[diag(nonsense = "...", code = "E0123", slug = "foo")]
= note: only the `code` parameter is valid after the slug
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:80:1
+ --> $DIR/diagnostic-derive.rs:83:1
|
LL | / #[diag(nonsense = "...", code = "E0123", slug = "foo")]
LL | |
@@ -91,7 +91,7 @@ LL | | struct InvalidNestedStructAttr2 {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: unknown argument
- --> $DIR/diagnostic-derive.rs:86:8
+ --> $DIR/diagnostic-derive.rs:89:8
|
LL | #[diag(nonsense = 4, code = "E0123", slug = "foo")]
| ^^^^^^^^
@@ -99,7 +99,7 @@ LL | #[diag(nonsense = 4, code = "E0123", slug = "foo")]
= note: only the `code` parameter is valid after the slug
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:86:1
+ --> $DIR/diagnostic-derive.rs:89:1
|
LL | / #[diag(nonsense = 4, code = "E0123", slug = "foo")]
LL | |
@@ -110,7 +110,7 @@ LL | | struct InvalidNestedStructAttr3 {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: unknown argument
- --> $DIR/diagnostic-derive.rs:92:42
+ --> $DIR/diagnostic-derive.rs:95:42
|
LL | #[diag(no_crate_example, code = "E0123", slug = "foo")]
| ^^^^
@@ -118,55 +118,55 @@ LL | #[diag(no_crate_example, code = "E0123", slug = "foo")]
= note: only the `code` parameter is valid after the slug
error: `#[suggestion = ...]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:99:5
+ --> $DIR/diagnostic-derive.rs:102:5
|
LL | #[suggestion = "bar"]
| ^^^^^^^^^^^^^^^^^^^^^
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:106:8
+ --> $DIR/diagnostic-derive.rs:109:8
|
LL | #[diag(no_crate_example, code = "E0456")]
| ^^^^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:105:8
+ --> $DIR/diagnostic-derive.rs:108:8
|
LL | #[diag(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:106:26
+ --> $DIR/diagnostic-derive.rs:109:26
|
LL | #[diag(no_crate_example, code = "E0456")]
| ^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:105:26
+ --> $DIR/diagnostic-derive.rs:108:26
|
LL | #[diag(no_crate_example, code = "E0123")]
| ^^^^
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:112:42
+ --> $DIR/diagnostic-derive.rs:115:42
|
LL | #[diag(no_crate_example, code = "E0456", code = "E0457")]
| ^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:112:26
+ --> $DIR/diagnostic-derive.rs:115:26
|
LL | #[diag(no_crate_example, code = "E0456", code = "E0457")]
| ^^^^
error: diagnostic slug must be the first argument
- --> $DIR/diagnostic-derive.rs:117:43
+ --> $DIR/diagnostic-derive.rs:120:43
|
LL | #[diag(no_crate_example, no_crate::example, code = "E0456")]
| ^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:122:1
+ --> $DIR/diagnostic-derive.rs:125:1
|
LL | struct KindNotProvided {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -174,7 +174,7 @@ LL | struct KindNotProvided {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:125:1
+ --> $DIR/diagnostic-derive.rs:128:1
|
LL | / #[diag(code = "E0456")]
LL | |
@@ -184,31 +184,31 @@ LL | | struct SlugNotProvided {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: the `#[primary_span]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/diagnostic-derive.rs:136:5
+ --> $DIR/diagnostic-derive.rs:139:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
error: `#[nonsense]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:144:5
+ --> $DIR/diagnostic-derive.rs:147:5
|
LL | #[nonsense]
| ^^^^^^^^^^^
error: the `#[label(...)]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/diagnostic-derive.rs:161:5
+ --> $DIR/diagnostic-derive.rs:164:5
|
LL | #[label(no_crate_label)]
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: `name` doesn't refer to a field on this type
- --> $DIR/diagnostic-derive.rs:169:46
+ --> $DIR/diagnostic-derive.rs:172:46
|
LL | #[suggestion(no_crate_suggestion, code = "{name}")]
| ^^^^^^^^
error: invalid format string: expected `'}'` but string was terminated
- --> $DIR/diagnostic-derive.rs:174:10
+ --> $DIR/diagnostic-derive.rs:177:10
|
LL | #[derive(Diagnostic)]
| ^^^^^^^^^^ expected `'}'` in format string
@@ -217,7 +217,7 @@ LL | #[derive(Diagnostic)]
= note: this error originates in the derive macro `Diagnostic` (in Nightly builds, run with -Z macro-backtrace for more info)
error: invalid format string: unmatched `}` found
- --> $DIR/diagnostic-derive.rs:184:10
+ --> $DIR/diagnostic-derive.rs:187:10
|
LL | #[derive(Diagnostic)]
| ^^^^^^^^^^ unmatched `}` in format string
@@ -226,19 +226,19 @@ LL | #[derive(Diagnostic)]
= note: this error originates in the derive macro `Diagnostic` (in Nightly builds, run with -Z macro-backtrace for more info)
error: the `#[label(...)]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/diagnostic-derive.rs:204:5
+ --> $DIR/diagnostic-derive.rs:207:5
|
LL | #[label(no_crate_label)]
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: suggestion without `code = "..."`
- --> $DIR/diagnostic-derive.rs:223:5
+ --> $DIR/diagnostic-derive.rs:226:5
|
LL | #[suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: invalid nested attribute
- --> $DIR/diagnostic-derive.rs:231:18
+ --> $DIR/diagnostic-derive.rs:234:18
|
LL | #[suggestion(nonsense = "bar")]
| ^^^^^^^^
@@ -246,13 +246,13 @@ LL | #[suggestion(nonsense = "bar")]
= help: only `style`, `code` and `applicability` are valid nested attributes
error: suggestion without `code = "..."`
- --> $DIR/diagnostic-derive.rs:231:5
+ --> $DIR/diagnostic-derive.rs:234:5
|
LL | #[suggestion(nonsense = "bar")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: invalid nested attribute
- --> $DIR/diagnostic-derive.rs:240:18
+ --> $DIR/diagnostic-derive.rs:243:18
|
LL | #[suggestion(msg = "bar")]
| ^^^
@@ -260,13 +260,13 @@ LL | #[suggestion(msg = "bar")]
= help: only `style`, `code` and `applicability` are valid nested attributes
error: suggestion without `code = "..."`
- --> $DIR/diagnostic-derive.rs:240:5
+ --> $DIR/diagnostic-derive.rs:243:5
|
LL | #[suggestion(msg = "bar")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
error: wrong field type for suggestion
- --> $DIR/diagnostic-derive.rs:263:5
+ --> $DIR/diagnostic-derive.rs:266:5
|
LL | / #[suggestion(no_crate_suggestion, code = "This is suggested code")]
LL | |
@@ -276,79 +276,79 @@ LL | | suggestion: Applicability,
= help: `#[suggestion(...)]` should be applied to fields of type `Span` or `(Span, Applicability)`
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:279:24
+ --> $DIR/diagnostic-derive.rs:282:24
|
LL | suggestion: (Span, Span, Applicability),
| ^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:279:18
+ --> $DIR/diagnostic-derive.rs:282:18
|
LL | suggestion: (Span, Span, Applicability),
| ^^^^
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:287:33
+ --> $DIR/diagnostic-derive.rs:290:33
|
LL | suggestion: (Applicability, Applicability, Span),
| ^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:287:18
+ --> $DIR/diagnostic-derive.rs:290:18
|
LL | suggestion: (Applicability, Applicability, Span),
| ^^^^^^^^^^^^^
error: `#[label = ...]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:294:5
+ --> $DIR/diagnostic-derive.rs:297:5
|
LL | #[label = "bar"]
| ^^^^^^^^^^^^^^^^
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:445:5
+ --> $DIR/diagnostic-derive.rs:448:5
|
LL | #[suggestion(no_crate_suggestion, code = "...", applicability = "maybe-incorrect")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:447:24
+ --> $DIR/diagnostic-derive.rs:450:24
|
LL | suggestion: (Span, Applicability),
| ^^^^^^^^^^^^^
error: invalid applicability
- --> $DIR/diagnostic-derive.rs:453:69
+ --> $DIR/diagnostic-derive.rs:456:69
|
LL | #[suggestion(no_crate_suggestion, code = "...", applicability = "batman")]
| ^^^^^^^^
error: the `#[help(...)]` attribute can only be applied to fields of type `Span`, `MultiSpan`, `bool` or `()`
- --> $DIR/diagnostic-derive.rs:520:5
+ --> $DIR/diagnostic-derive.rs:523:5
|
LL | #[help(no_crate_help)]
| ^^^^^^^^^^^^^^^^^^^^^^
error: a diagnostic slug must be the first argument to the attribute
- --> $DIR/diagnostic-derive.rs:529:32
+ --> $DIR/diagnostic-derive.rs:532:32
|
LL | #[label(no_crate_label, foo)]
| ^
error: invalid nested attribute
- --> $DIR/diagnostic-derive.rs:537:29
+ --> $DIR/diagnostic-derive.rs:540:29
|
LL | #[label(no_crate_label, foo = "...")]
| ^^^
error: invalid nested attribute
- --> $DIR/diagnostic-derive.rs:545:29
+ --> $DIR/diagnostic-derive.rs:548:29
|
LL | #[label(no_crate_label, foo("..."))]
| ^^^
error: `#[primary_span]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:557:5
+ --> $DIR/diagnostic-derive.rs:560:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
@@ -356,13 +356,13 @@ LL | #[primary_span]
= help: the `primary_span` field attribute is not valid for lint diagnostics
error: `#[error(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:577:1
+ --> $DIR/diagnostic-derive.rs:580:1
|
LL | #[error(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:577:1
+ --> $DIR/diagnostic-derive.rs:580:1
|
LL | / #[error(no_crate_example, code = "E0123")]
LL | |
@@ -374,13 +374,13 @@ LL | | struct ErrorAttribute {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: `#[warn_(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:584:1
+ --> $DIR/diagnostic-derive.rs:587:1
|
LL | #[warn_(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:584:1
+ --> $DIR/diagnostic-derive.rs:587:1
|
LL | / #[warn_(no_crate_example, code = "E0123")]
LL | |
@@ -392,13 +392,13 @@ LL | | struct WarnAttribute {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: `#[lint(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:591:1
+ --> $DIR/diagnostic-derive.rs:594:1
|
LL | #[lint(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:591:1
+ --> $DIR/diagnostic-derive.rs:594:1
|
LL | / #[lint(no_crate_example, code = "E0123")]
LL | |
@@ -410,19 +410,19 @@ LL | | struct LintAttributeOnSessionDiag {}
= help: specify the slug as the first argument to the `#[diag(...)]` attribute, such as `#[diag(hir_analysis_example_error)]`
error: `#[lint(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:598:1
+ --> $DIR/diagnostic-derive.rs:601:1
|
LL | #[lint(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: `#[lint(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:598:1
+ --> $DIR/diagnostic-derive.rs:601:1
|
LL | #[lint(no_crate_example, code = "E0123")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: diagnostic slug not specified
- --> $DIR/diagnostic-derive.rs:598:1
+ --> $DIR/diagnostic-derive.rs:601:1
|
LL | / #[lint(no_crate_example, code = "E0123")]
LL | |
@@ -435,19 +435,19 @@ LL | | struct LintAttributeOnLintDiag {}
= help: specify the slug as the first argument to the attribute, such as `#[diag(compiletest_example)]`
error: specified multiple times
- --> $DIR/diagnostic-derive.rs:608:53
+ --> $DIR/diagnostic-derive.rs:611:53
|
LL | #[suggestion(no_crate_suggestion, code = "...", code = ",,,")]
| ^^^^
|
note: previously specified here
- --> $DIR/diagnostic-derive.rs:608:39
+ --> $DIR/diagnostic-derive.rs:611:39
|
LL | #[suggestion(no_crate_suggestion, code = "...", code = ",,,")]
| ^^^^
error: wrong types for suggestion
- --> $DIR/diagnostic-derive.rs:617:24
+ --> $DIR/diagnostic-derive.rs:620:24
|
LL | suggestion: (Span, usize),
| ^^^^^
@@ -455,7 +455,7 @@ LL | suggestion: (Span, usize),
= help: `#[suggestion(...)]` on a tuple field must be applied to fields of type `(Span, Applicability)`
error: wrong types for suggestion
- --> $DIR/diagnostic-derive.rs:625:17
+ --> $DIR/diagnostic-derive.rs:628:17
|
LL | suggestion: (Span,),
| ^^^^^^^
@@ -463,13 +463,13 @@ LL | suggestion: (Span,),
= help: `#[suggestion(...)]` on a tuple field must be applied to fields of type `(Span, Applicability)`
error: suggestion without `code = "..."`
- --> $DIR/diagnostic-derive.rs:632:5
+ --> $DIR/diagnostic-derive.rs:635:5
|
LL | #[suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: `#[multipart_suggestion(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:639:1
+ --> $DIR/diagnostic-derive.rs:642:1
|
LL | #[multipart_suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -477,7 +477,7 @@ LL | #[multipart_suggestion(no_crate_suggestion)]
= help: consider creating a `Subdiagnostic` instead
error: `#[multipart_suggestion(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:646:5
+ --> $DIR/diagnostic-derive.rs:649:5
|
LL | #[multipart_suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -485,13 +485,13 @@ LL | #[multipart_suggestion(no_crate_suggestion)]
= help: consider creating a `Subdiagnostic` instead
error: unexpected end of input, unexpected token in nested attribute, expected ident
- --> $DIR/diagnostic-derive.rs:642:24
+ --> $DIR/diagnostic-derive.rs:645:24
|
LL | #[multipart_suggestion()]
| ^
error: `#[suggestion(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:654:1
+ --> $DIR/diagnostic-derive.rs:657:1
|
LL | #[suggestion(no_crate_suggestion, code = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -499,7 +499,7 @@ LL | #[suggestion(no_crate_suggestion, code = "...")]
= help: `#[label]` and `#[suggestion]` can only be applied to fields
error: `#[label]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:663:1
+ --> $DIR/diagnostic-derive.rs:666:1
|
LL | #[label]
| ^^^^^^^^
@@ -507,31 +507,31 @@ LL | #[label]
= help: `#[label]` and `#[suggestion]` can only be applied to fields
error: `eager` is the only supported nested attribute for `subdiagnostic`
- --> $DIR/diagnostic-derive.rs:697:7
+ --> $DIR/diagnostic-derive.rs:700:7
|
LL | #[subdiagnostic(bad)]
| ^^^^^^^^^^^^^^^^^^
error: `#[subdiagnostic = ...]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:705:5
+ --> $DIR/diagnostic-derive.rs:708:5
|
LL | #[subdiagnostic = "bad"]
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: `eager` is the only supported nested attribute for `subdiagnostic`
- --> $DIR/diagnostic-derive.rs:713:7
+ --> $DIR/diagnostic-derive.rs:716:7
|
LL | #[subdiagnostic(bad, bad)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error: `eager` is the only supported nested attribute for `subdiagnostic`
- --> $DIR/diagnostic-derive.rs:721:7
+ --> $DIR/diagnostic-derive.rs:724:7
|
LL | #[subdiagnostic("bad")]
| ^^^^^^^^^^^^^^^^^^^^
error: `#[subdiagnostic(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:729:5
+ --> $DIR/diagnostic-derive.rs:732:5
|
LL | #[subdiagnostic(eager)]
| ^^^^^^^^^^^^^^^^^^^^^^^
@@ -539,31 +539,31 @@ LL | #[subdiagnostic(eager)]
= help: eager subdiagnostics are not supported on lints
error: expected at least one string literal for `code(...)`
- --> $DIR/diagnostic-derive.rs:787:23
+ --> $DIR/diagnostic-derive.rs:790:23
|
LL | #[suggestion(code())]
| ^
error: `code(...)` must contain only string literals
- --> $DIR/diagnostic-derive.rs:795:23
+ --> $DIR/diagnostic-derive.rs:798:23
|
LL | #[suggestion(code(foo))]
| ^^^
error: unexpected token
- --> $DIR/diagnostic-derive.rs:795:23
+ --> $DIR/diagnostic-derive.rs:798:23
|
LL | #[suggestion(code(foo))]
| ^^^
error: expected string literal
- --> $DIR/diagnostic-derive.rs:804:25
+ --> $DIR/diagnostic-derive.rs:807:25
|
LL | #[suggestion(code = 3)]
| ^
error: `#[suggestion(...)]` is not a valid attribute
- --> $DIR/diagnostic-derive.rs:819:5
+ --> $DIR/diagnostic-derive.rs:822:5
|
LL | #[suggestion(no_crate_suggestion, code = "")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -573,67 +573,67 @@ LL | #[suggestion(no_crate_suggestion, code = "")]
= help: to show a variable set of suggestions, use a `Vec` of `Subdiagnostic`s annotated with `#[suggestion(...)]`
error: cannot find attribute `nonsense` in this scope
- --> $DIR/diagnostic-derive.rs:57:3
+ --> $DIR/diagnostic-derive.rs:60:3
|
LL | #[nonsense(no_crate_example, code = "E0123")]
| ^^^^^^^^
error: cannot find attribute `nonsense` in this scope
- --> $DIR/diagnostic-derive.rs:144:7
+ --> $DIR/diagnostic-derive.rs:147:7
|
LL | #[nonsense]
| ^^^^^^^^
error: cannot find attribute `error` in this scope
- --> $DIR/diagnostic-derive.rs:577:3
+ --> $DIR/diagnostic-derive.rs:580:3
|
LL | #[error(no_crate_example, code = "E0123")]
| ^^^^^
error: cannot find attribute `warn_` in this scope
- --> $DIR/diagnostic-derive.rs:584:3
+ --> $DIR/diagnostic-derive.rs:587:3
|
LL | #[warn_(no_crate_example, code = "E0123")]
| ^^^^^ help: a built-in attribute with a similar name exists: `warn`
error: cannot find attribute `lint` in this scope
- --> $DIR/diagnostic-derive.rs:591:3
+ --> $DIR/diagnostic-derive.rs:594:3
|
LL | #[lint(no_crate_example, code = "E0123")]
| ^^^^ help: a built-in attribute with a similar name exists: `link`
error: cannot find attribute `lint` in this scope
- --> $DIR/diagnostic-derive.rs:598:3
+ --> $DIR/diagnostic-derive.rs:601:3
|
LL | #[lint(no_crate_example, code = "E0123")]
| ^^^^ help: a built-in attribute with a similar name exists: `link`
error: cannot find attribute `multipart_suggestion` in this scope
- --> $DIR/diagnostic-derive.rs:639:3
+ --> $DIR/diagnostic-derive.rs:642:3
|
LL | #[multipart_suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^
error: cannot find attribute `multipart_suggestion` in this scope
- --> $DIR/diagnostic-derive.rs:642:3
+ --> $DIR/diagnostic-derive.rs:645:3
|
LL | #[multipart_suggestion()]
| ^^^^^^^^^^^^^^^^^^^^
error: cannot find attribute `multipart_suggestion` in this scope
- --> $DIR/diagnostic-derive.rs:646:7
+ --> $DIR/diagnostic-derive.rs:649:7
|
LL | #[multipart_suggestion(no_crate_suggestion)]
| ^^^^^^^^^^^^^^^^^^^^
error[E0425]: cannot find value `nonsense` in module `crate::fluent_generated`
- --> $DIR/diagnostic-derive.rs:69:8
+ --> $DIR/diagnostic-derive.rs:72:8
|
LL | #[diag(nonsense, code = "E0123")]
| ^^^^^^^^ not found in `crate::fluent_generated`
error[E0425]: cannot find value `__code_34` in this scope
- --> $DIR/diagnostic-derive.rs:801:10
+ --> $DIR/diagnostic-derive.rs:804:10
|
LL | #[derive(Diagnostic)]
| ^^^^^^^^^^ not found in this scope
@@ -641,15 +641,18 @@ LL | #[derive(Diagnostic)]
= note: this error originates in the derive macro `Diagnostic` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `Hello: IntoDiagnosticArg` is not satisfied
- --> $DIR/diagnostic-derive.rs:338:10
+ --> $DIR/diagnostic-derive.rs:346:12
|
LL | #[derive(Diagnostic)]
- | ^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `Hello`
+ | ---------- required by a bound introduced by this call
+...
+LL | other: Hello,
+ | ^^^^^ the trait `IntoDiagnosticArg` is not implemented for `Hello`
|
= help: normalized in stderr
note: required by a bound in `DiagnosticBuilder::<'a, G>::set_arg`
--> $COMPILER_DIR/rustc_errors/src/diagnostic_builder.rs:LL:CC
- = note: this error originates in the derive macro `Diagnostic` which comes from the expansion of the macro `forward` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `forward` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 84 previous errors
diff --git a/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs
index 1d928ca93..1bfbb6001 100644
--- a/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs
+++ b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.rs
@@ -4,6 +4,7 @@
// The proc_macro2 crate handles spans differently when on beta/stable release rather than nightly,
// changing the output of this test. Since Subdiagnostic is strictly internal to the compiler
// the test is just ignored on stable and beta:
+// ignore-stage1
// ignore-beta
// ignore-stable
@@ -11,12 +12,14 @@
#![crate_type = "lib"]
extern crate rustc_errors;
+extern crate rustc_fluent_macro;
extern crate rustc_macros;
extern crate rustc_session;
extern crate rustc_span;
use rustc_errors::{Applicability, DiagnosticMessage, SubdiagnosticMessage};
-use rustc_macros::{fluent_messages, Subdiagnostic};
+use rustc_fluent_macro::fluent_messages;
+use rustc_macros::Subdiagnostic;
use rustc_span::Span;
fluent_messages! { "./example.ftl" }
diff --git a/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr
index 4211b91f0..fca4f5068 100644
--- a/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr
+++ b/tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive.stderr
@@ -1,5 +1,5 @@
error: label without `#[primary_span]` field
- --> $DIR/subdiagnostic-derive.rs:49:1
+ --> $DIR/subdiagnostic-derive.rs:52:1
|
LL | / #[label(no_crate_example)]
LL | |
@@ -9,133 +9,133 @@ LL | | }
| |_^
error: diagnostic slug must be first argument of a `#[label(...)]` attribute
- --> $DIR/subdiagnostic-derive.rs:56:1
+ --> $DIR/subdiagnostic-derive.rs:59:1
|
LL | #[label]
| ^^^^^^^^
error: `#[foo]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:65:1
+ --> $DIR/subdiagnostic-derive.rs:68:1
|
LL | #[foo]
| ^^^^^^
error: `#[label = ...]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:75:1
+ --> $DIR/subdiagnostic-derive.rs:78:1
|
LL | #[label = "..."]
| ^^^^^^^^^^^^^^^^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:84:9
+ --> $DIR/subdiagnostic-derive.rs:87:9
|
LL | #[label(bug = "...")]
| ^^^
error: diagnostic slug must be first argument of a `#[label(...)]` attribute
- --> $DIR/subdiagnostic-derive.rs:84:1
+ --> $DIR/subdiagnostic-derive.rs:87:1
|
LL | #[label(bug = "...")]
| ^^^^^^^^^^^^^^^^^^^^^
error: unexpected literal in nested attribute, expected ident
- --> $DIR/subdiagnostic-derive.rs:94:9
+ --> $DIR/subdiagnostic-derive.rs:97:9
|
LL | #[label("...")]
| ^^^^^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:103:9
+ --> $DIR/subdiagnostic-derive.rs:106:9
|
LL | #[label(slug = 4)]
| ^^^^
error: diagnostic slug must be first argument of a `#[label(...)]` attribute
- --> $DIR/subdiagnostic-derive.rs:103:1
+ --> $DIR/subdiagnostic-derive.rs:106:1
|
LL | #[label(slug = 4)]
| ^^^^^^^^^^^^^^^^^^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:113:9
+ --> $DIR/subdiagnostic-derive.rs:116:9
|
LL | #[label(slug("..."))]
| ^^^^
error: diagnostic slug must be first argument of a `#[label(...)]` attribute
- --> $DIR/subdiagnostic-derive.rs:113:1
+ --> $DIR/subdiagnostic-derive.rs:116:1
|
LL | #[label(slug("..."))]
| ^^^^^^^^^^^^^^^^^^^^^
error: unexpected end of input, unexpected token in nested attribute, expected ident
- --> $DIR/subdiagnostic-derive.rs:133:9
+ --> $DIR/subdiagnostic-derive.rs:136:9
|
LL | #[label()]
| ^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:142:27
+ --> $DIR/subdiagnostic-derive.rs:145:27
|
LL | #[label(no_crate_example, code = "...")]
| ^^^^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:151:27
+ --> $DIR/subdiagnostic-derive.rs:154:27
|
LL | #[label(no_crate_example, applicability = "machine-applicable")]
| ^^^^^^^^^^^^^
error: unsupported type attribute for subdiagnostic enum
- --> $DIR/subdiagnostic-derive.rs:160:1
+ --> $DIR/subdiagnostic-derive.rs:163:1
|
LL | #[foo]
| ^^^^^^
error: `#[bar]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:174:5
+ --> $DIR/subdiagnostic-derive.rs:177:5
|
LL | #[bar]
| ^^^^^^
error: `#[bar = ...]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:186:5
+ --> $DIR/subdiagnostic-derive.rs:189:5
|
LL | #[bar = "..."]
| ^^^^^^^^^^^^^^
error: `#[bar = ...]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:198:5
+ --> $DIR/subdiagnostic-derive.rs:201:5
|
LL | #[bar = 4]
| ^^^^^^^^^^
error: `#[bar(...)]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:210:5
+ --> $DIR/subdiagnostic-derive.rs:213:5
|
LL | #[bar("...")]
| ^^^^^^^^^^^^^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:222:13
+ --> $DIR/subdiagnostic-derive.rs:225:13
|
LL | #[label(code = "...")]
| ^^^^
error: diagnostic slug must be first argument of a `#[label(...)]` attribute
- --> $DIR/subdiagnostic-derive.rs:222:5
+ --> $DIR/subdiagnostic-derive.rs:225:5
|
LL | #[label(code = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^
error: the `#[primary_span]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/subdiagnostic-derive.rs:251:5
+ --> $DIR/subdiagnostic-derive.rs:254:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
error: label without `#[primary_span]` field
- --> $DIR/subdiagnostic-derive.rs:248:1
+ --> $DIR/subdiagnostic-derive.rs:251:1
|
LL | / #[label(no_crate_example)]
LL | |
@@ -147,13 +147,13 @@ LL | | }
| |_^
error: `#[applicability]` is only valid on suggestions
- --> $DIR/subdiagnostic-derive.rs:261:5
+ --> $DIR/subdiagnostic-derive.rs:264:5
|
LL | #[applicability]
| ^^^^^^^^^^^^^^^^
error: `#[bar]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:271:5
+ --> $DIR/subdiagnostic-derive.rs:274:5
|
LL | #[bar]
| ^^^^^^
@@ -161,13 +161,13 @@ LL | #[bar]
= help: only `primary_span`, `applicability` and `skip_arg` are valid field attributes
error: `#[bar = ...]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:282:5
+ --> $DIR/subdiagnostic-derive.rs:285:5
|
LL | #[bar = "..."]
| ^^^^^^^^^^^^^^
error: `#[bar(...)]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:293:5
+ --> $DIR/subdiagnostic-derive.rs:296:5
|
LL | #[bar("...")]
| ^^^^^^^^^^^^^
@@ -175,7 +175,7 @@ LL | #[bar("...")]
= help: only `primary_span`, `applicability` and `skip_arg` are valid field attributes
error: unexpected unsupported untagged union
- --> $DIR/subdiagnostic-derive.rs:309:1
+ --> $DIR/subdiagnostic-derive.rs:312:1
|
LL | / union AC {
LL | |
@@ -185,73 +185,73 @@ LL | | }
| |_^
error: a diagnostic slug must be the first argument to the attribute
- --> $DIR/subdiagnostic-derive.rs:324:44
+ --> $DIR/subdiagnostic-derive.rs:327:44
|
LL | #[label(no_crate_example, no_crate::example)]
| ^
error: specified multiple times
- --> $DIR/subdiagnostic-derive.rs:337:5
+ --> $DIR/subdiagnostic-derive.rs:340:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/subdiagnostic-derive.rs:334:5
+ --> $DIR/subdiagnostic-derive.rs:337:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
error: subdiagnostic kind not specified
- --> $DIR/subdiagnostic-derive.rs:343:8
+ --> $DIR/subdiagnostic-derive.rs:346:8
|
LL | struct AG {
| ^^
error: specified multiple times
- --> $DIR/subdiagnostic-derive.rs:380:46
+ --> $DIR/subdiagnostic-derive.rs:383:46
|
LL | #[suggestion(no_crate_example, code = "...", code = "...")]
| ^^^^
|
note: previously specified here
- --> $DIR/subdiagnostic-derive.rs:380:32
+ --> $DIR/subdiagnostic-derive.rs:383:32
|
LL | #[suggestion(no_crate_example, code = "...", code = "...")]
| ^^^^
error: specified multiple times
- --> $DIR/subdiagnostic-derive.rs:398:5
+ --> $DIR/subdiagnostic-derive.rs:401:5
|
LL | #[applicability]
| ^^^^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/subdiagnostic-derive.rs:395:5
+ --> $DIR/subdiagnostic-derive.rs:398:5
|
LL | #[applicability]
| ^^^^^^^^^^^^^^^^
error: the `#[applicability]` attribute can only be applied to fields of type `Applicability`
- --> $DIR/subdiagnostic-derive.rs:408:5
+ --> $DIR/subdiagnostic-derive.rs:411:5
|
LL | #[applicability]
| ^^^^^^^^^^^^^^^^
error: suggestion without `code = "..."`
- --> $DIR/subdiagnostic-derive.rs:421:1
+ --> $DIR/subdiagnostic-derive.rs:424:1
|
LL | #[suggestion(no_crate_example)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: invalid applicability
- --> $DIR/subdiagnostic-derive.rs:431:62
+ --> $DIR/subdiagnostic-derive.rs:434:62
|
LL | #[suggestion(no_crate_example, code = "...", applicability = "foo")]
| ^^^^^
error: suggestion without `#[primary_span]` field
- --> $DIR/subdiagnostic-derive.rs:449:1
+ --> $DIR/subdiagnostic-derive.rs:452:1
|
LL | / #[suggestion(no_crate_example, code = "...")]
LL | |
@@ -261,25 +261,25 @@ LL | | }
| |_^
error: unsupported type attribute for subdiagnostic enum
- --> $DIR/subdiagnostic-derive.rs:463:1
+ --> $DIR/subdiagnostic-derive.rs:466:1
|
LL | #[label]
| ^^^^^^^^
error: `var` doesn't refer to a field on this type
- --> $DIR/subdiagnostic-derive.rs:483:39
+ --> $DIR/subdiagnostic-derive.rs:486:39
|
LL | #[suggestion(no_crate_example, code = "{var}", applicability = "machine-applicable")]
| ^^^^^^^
error: `var` doesn't refer to a field on this type
- --> $DIR/subdiagnostic-derive.rs:502:43
+ --> $DIR/subdiagnostic-derive.rs:505:43
|
LL | #[suggestion(no_crate_example, code = "{var}", applicability = "machine-applicable")]
| ^^^^^^^
error: `#[suggestion_part]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:525:5
+ --> $DIR/subdiagnostic-derive.rs:528:5
|
LL | #[suggestion_part]
| ^^^^^^^^^^^^^^^^^^
@@ -287,7 +287,7 @@ LL | #[suggestion_part]
= help: `#[suggestion_part(...)]` is only valid in multipart suggestions, use `#[primary_span]` instead
error: `#[suggestion_part(...)]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:528:5
+ --> $DIR/subdiagnostic-derive.rs:531:5
|
LL | #[suggestion_part(code = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -295,7 +295,7 @@ LL | #[suggestion_part(code = "...")]
= help: `#[suggestion_part(...)]` is only valid in multipart suggestions
error: suggestion without `#[primary_span]` field
- --> $DIR/subdiagnostic-derive.rs:522:1
+ --> $DIR/subdiagnostic-derive.rs:525:1
|
LL | / #[suggestion(no_crate_example, code = "...")]
LL | |
@@ -307,7 +307,7 @@ LL | | }
| |_^
error: invalid nested attribute
- --> $DIR/subdiagnostic-derive.rs:537:42
+ --> $DIR/subdiagnostic-derive.rs:540:42
|
LL | #[multipart_suggestion(no_crate_example, code = "...", applicability = "machine-applicable")]
| ^^^^
@@ -315,7 +315,7 @@ LL | #[multipart_suggestion(no_crate_example, code = "...", applicability = "mac
= help: only `style` and `applicability` are valid nested attributes
error: multipart suggestion without any `#[suggestion_part(...)]` fields
- --> $DIR/subdiagnostic-derive.rs:537:1
+ --> $DIR/subdiagnostic-derive.rs:540:1
|
LL | / #[multipart_suggestion(no_crate_example, code = "...", applicability = "machine-applicable")]
LL | |
@@ -326,19 +326,19 @@ LL | | }
| |_^
error: `#[suggestion_part(...)]` attribute without `code = "..."`
- --> $DIR/subdiagnostic-derive.rs:547:5
+ --> $DIR/subdiagnostic-derive.rs:550:5
|
LL | #[suggestion_part]
| ^^^^^^^^^^^^^^^^^^
error: unexpected end of input, unexpected token in nested attribute, expected ident
- --> $DIR/subdiagnostic-derive.rs:555:23
+ --> $DIR/subdiagnostic-derive.rs:558:23
|
LL | #[suggestion_part()]
| ^
error: `#[primary_span]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:564:5
+ --> $DIR/subdiagnostic-derive.rs:567:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
@@ -346,7 +346,7 @@ LL | #[primary_span]
= help: multipart suggestions use one or more `#[suggestion_part]`s rather than one `#[primary_span]`
error: multipart suggestion without any `#[suggestion_part(...)]` fields
- --> $DIR/subdiagnostic-derive.rs:561:1
+ --> $DIR/subdiagnostic-derive.rs:564:1
|
LL | / #[multipart_suggestion(no_crate_example)]
LL | |
@@ -358,121 +358,121 @@ LL | | }
| |_^
error: `#[suggestion_part(...)]` attribute without `code = "..."`
- --> $DIR/subdiagnostic-derive.rs:572:5
+ --> $DIR/subdiagnostic-derive.rs:575:5
|
LL | #[suggestion_part]
| ^^^^^^^^^^^^^^^^^^
error: `code` is the only valid nested attribute
- --> $DIR/subdiagnostic-derive.rs:578:23
+ --> $DIR/subdiagnostic-derive.rs:581:23
|
LL | #[suggestion_part(foo = "bar")]
| ^^^
error: the `#[suggestion_part(...)]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/subdiagnostic-derive.rs:582:5
+ --> $DIR/subdiagnostic-derive.rs:585:5
|
LL | #[suggestion_part(code = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: the `#[suggestion_part(...)]` attribute can only be applied to fields of type `Span` or `MultiSpan`
- --> $DIR/subdiagnostic-derive.rs:585:5
+ --> $DIR/subdiagnostic-derive.rs:588:5
|
LL | #[suggestion_part()]
| ^^^^^^^^^^^^^^^^^^^^
error: unexpected end of input, unexpected token in nested attribute, expected ident
- --> $DIR/subdiagnostic-derive.rs:575:23
+ --> $DIR/subdiagnostic-derive.rs:578:23
|
LL | #[suggestion_part()]
| ^
error: expected `,`
- --> $DIR/subdiagnostic-derive.rs:578:27
+ --> $DIR/subdiagnostic-derive.rs:581:27
|
LL | #[suggestion_part(foo = "bar")]
| ^
error: specified multiple times
- --> $DIR/subdiagnostic-derive.rs:593:37
+ --> $DIR/subdiagnostic-derive.rs:596:37
|
LL | #[suggestion_part(code = "...", code = ",,,")]
| ^^^^
|
note: previously specified here
- --> $DIR/subdiagnostic-derive.rs:593:23
+ --> $DIR/subdiagnostic-derive.rs:596:23
|
LL | #[suggestion_part(code = "...", code = ",,,")]
| ^^^^
error: `#[applicability]` has no effect if all `#[suggestion]`/`#[multipart_suggestion]` attributes have a static `applicability = "..."`
- --> $DIR/subdiagnostic-derive.rs:622:5
+ --> $DIR/subdiagnostic-derive.rs:625:5
|
LL | #[applicability]
| ^^^^^^^^^^^^^^^^
error: expected exactly one string literal for `code = ...`
- --> $DIR/subdiagnostic-derive.rs:670:34
+ --> $DIR/subdiagnostic-derive.rs:673:34
|
LL | #[suggestion_part(code("foo"))]
| ^
error: unexpected token
- --> $DIR/subdiagnostic-derive.rs:670:28
+ --> $DIR/subdiagnostic-derive.rs:673:28
|
LL | #[suggestion_part(code("foo"))]
| ^^^^^
error: expected exactly one string literal for `code = ...`
- --> $DIR/subdiagnostic-derive.rs:680:41
+ --> $DIR/subdiagnostic-derive.rs:683:41
|
LL | #[suggestion_part(code("foo", "bar"))]
| ^
error: unexpected token
- --> $DIR/subdiagnostic-derive.rs:680:28
+ --> $DIR/subdiagnostic-derive.rs:683:28
|
LL | #[suggestion_part(code("foo", "bar"))]
| ^^^^^
error: expected exactly one string literal for `code = ...`
- --> $DIR/subdiagnostic-derive.rs:690:30
+ --> $DIR/subdiagnostic-derive.rs:693:30
|
LL | #[suggestion_part(code(3))]
| ^
error: unexpected token
- --> $DIR/subdiagnostic-derive.rs:690:28
+ --> $DIR/subdiagnostic-derive.rs:693:28
|
LL | #[suggestion_part(code(3))]
| ^
error: expected exactly one string literal for `code = ...`
- --> $DIR/subdiagnostic-derive.rs:700:29
+ --> $DIR/subdiagnostic-derive.rs:703:29
|
LL | #[suggestion_part(code())]
| ^
error: expected string literal
- --> $DIR/subdiagnostic-derive.rs:712:30
+ --> $DIR/subdiagnostic-derive.rs:715:30
|
LL | #[suggestion_part(code = 3)]
| ^
error: specified multiple times
- --> $DIR/subdiagnostic-derive.rs:754:1
+ --> $DIR/subdiagnostic-derive.rs:757:1
|
LL | #[suggestion(no_crate_example, code = "", style = "hidden", style = "normal")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: previously specified here
- --> $DIR/subdiagnostic-derive.rs:754:1
+ --> $DIR/subdiagnostic-derive.rs:757:1
|
LL | #[suggestion(no_crate_example, code = "", style = "hidden", style = "normal")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: `#[suggestion_hidden(...)]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:763:1
+ --> $DIR/subdiagnostic-derive.rs:766:1
|
LL | #[suggestion_hidden(no_crate_example, code = "")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -480,7 +480,7 @@ LL | #[suggestion_hidden(no_crate_example, code = "")]
= help: Use `#[suggestion(..., style = "hidden")]` instead
error: `#[suggestion_hidden(...)]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:771:1
+ --> $DIR/subdiagnostic-derive.rs:774:1
|
LL | #[suggestion_hidden(no_crate_example, code = "", style = "normal")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -488,7 +488,7 @@ LL | #[suggestion_hidden(no_crate_example, code = "", style = "normal")]
= help: Use `#[suggestion(..., style = "hidden")]` instead
error: invalid suggestion style
- --> $DIR/subdiagnostic-derive.rs:779:51
+ --> $DIR/subdiagnostic-derive.rs:782:51
|
LL | #[suggestion(no_crate_example, code = "", style = "foo")]
| ^^^^^
@@ -496,31 +496,31 @@ LL | #[suggestion(no_crate_example, code = "", style = "foo")]
= help: valid styles are `normal`, `short`, `hidden`, `verbose` and `tool-only`
error: expected `= "xxx"`
- --> $DIR/subdiagnostic-derive.rs:787:49
+ --> $DIR/subdiagnostic-derive.rs:790:49
|
LL | #[suggestion(no_crate_example, code = "", style = 42)]
| ^
error: a diagnostic slug must be the first argument to the attribute
- --> $DIR/subdiagnostic-derive.rs:795:48
+ --> $DIR/subdiagnostic-derive.rs:798:48
|
LL | #[suggestion(no_crate_example, code = "", style)]
| ^
error: expected `= "xxx"`
- --> $DIR/subdiagnostic-derive.rs:803:48
+ --> $DIR/subdiagnostic-derive.rs:806:48
|
LL | #[suggestion(no_crate_example, code = "", style("foo"))]
| ^
error: expected `,`
- --> $DIR/subdiagnostic-derive.rs:803:48
+ --> $DIR/subdiagnostic-derive.rs:806:48
|
LL | #[suggestion(no_crate_example, code = "", style("foo"))]
| ^
error: `#[primary_span]` is not a valid attribute
- --> $DIR/subdiagnostic-derive.rs:815:5
+ --> $DIR/subdiagnostic-derive.rs:818:5
|
LL | #[primary_span]
| ^^^^^^^^^^^^^^^
@@ -529,7 +529,7 @@ LL | #[primary_span]
= help: to create a suggestion with multiple spans, use `#[multipart_suggestion]` instead
error: suggestion without `#[primary_span]` field
- --> $DIR/subdiagnostic-derive.rs:812:1
+ --> $DIR/subdiagnostic-derive.rs:815:1
|
LL | / #[suggestion(no_crate_example, code = "")]
LL | |
@@ -541,67 +541,67 @@ LL | | }
| |_^
error: cannot find attribute `foo` in this scope
- --> $DIR/subdiagnostic-derive.rs:65:3
+ --> $DIR/subdiagnostic-derive.rs:68:3
|
LL | #[foo]
| ^^^
error: cannot find attribute `foo` in this scope
- --> $DIR/subdiagnostic-derive.rs:160:3
+ --> $DIR/subdiagnostic-derive.rs:163:3
|
LL | #[foo]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:174:7
+ --> $DIR/subdiagnostic-derive.rs:177:7
|
LL | #[bar]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:186:7
+ --> $DIR/subdiagnostic-derive.rs:189:7
|
LL | #[bar = "..."]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:198:7
+ --> $DIR/subdiagnostic-derive.rs:201:7
|
LL | #[bar = 4]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:210:7
+ --> $DIR/subdiagnostic-derive.rs:213:7
|
LL | #[bar("...")]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:271:7
+ --> $DIR/subdiagnostic-derive.rs:274:7
|
LL | #[bar]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:282:7
+ --> $DIR/subdiagnostic-derive.rs:285:7
|
LL | #[bar = "..."]
| ^^^
error: cannot find attribute `bar` in this scope
- --> $DIR/subdiagnostic-derive.rs:293:7
+ --> $DIR/subdiagnostic-derive.rs:296:7
|
LL | #[bar("...")]
| ^^^
error[E0425]: cannot find value `slug` in module `crate::fluent_generated`
- --> $DIR/subdiagnostic-derive.rs:123:9
+ --> $DIR/subdiagnostic-derive.rs:126:9
|
LL | #[label(slug)]
| ^^^^ not found in `crate::fluent_generated`
error[E0425]: cannot find value `__code_29` in this scope
- --> $DIR/subdiagnostic-derive.rs:706:10
+ --> $DIR/subdiagnostic-derive.rs:709:10
|
LL | #[derive(Subdiagnostic)]
| ^^^^^^^^^^^^^ not found in this scope
diff --git a/tests/ui-fulldeps/stable-mir/crate-info.rs b/tests/ui-fulldeps/stable-mir/crate-info.rs
index dfde8c97e..a3db2e9ef 100644
--- a/tests/ui-fulldeps/stable-mir/crate-info.rs
+++ b/tests/ui-fulldeps/stable-mir/crate-info.rs
@@ -33,7 +33,6 @@ fn test_stable_mir(tcx: TyCtxt<'_>) {
// Find items in the local crate.
let items = stable_mir::all_local_items();
- assert!(get_item(tcx, &items, (DefKind::Fn, "foo_bar")).is_some());
assert!(get_item(tcx, &items, (DefKind::Fn, "foo::bar")).is_some());
// Find the `std` crate.
@@ -41,6 +40,7 @@ fn test_stable_mir(tcx: TyCtxt<'_>) {
let bar = get_item(tcx, &items, (DefKind::Fn, "bar")).unwrap();
let body = bar.body();
+ assert_eq!(body.locals.len(), 2);
assert_eq!(body.blocks.len(), 1);
let block = &body.blocks[0];
assert_eq!(block.statements.len(), 1);
@@ -52,6 +52,34 @@ fn test_stable_mir(tcx: TyCtxt<'_>) {
stable_mir::mir::Terminator::Return => {}
other => panic!("{other:?}"),
}
+
+ let foo_bar = get_item(tcx, &items, (DefKind::Fn, "foo_bar")).unwrap();
+ let body = foo_bar.body();
+ assert_eq!(body.locals.len(), 7);
+ assert_eq!(body.blocks.len(), 4);
+ let block = &body.blocks[0];
+ match &block.terminator {
+ stable_mir::mir::Terminator::Call { .. } => {}
+ other => panic!("{other:?}"),
+ }
+
+ let drop = get_item(tcx, &items, (DefKind::Fn, "drop")).unwrap();
+ let body = drop.body();
+ assert_eq!(body.blocks.len(), 2);
+ let block = &body.blocks[0];
+ match &block.terminator {
+ stable_mir::mir::Terminator::Drop { .. } => {}
+ other => panic!("{other:?}"),
+ }
+
+ let assert = get_item(tcx, &items, (DefKind::Fn, "assert")).unwrap();
+ let body = assert.body();
+ assert_eq!(body.blocks.len(), 2);
+ let block = &body.blocks[0];
+ match &block.terminator {
+ stable_mir::mir::Terminator::Assert { .. } => {}
+ other => panic!("{other:?}"),
+ }
}
// Use internal API to find a function in a crate.
@@ -97,7 +125,7 @@ impl Callbacks for SMirCalls {
queries: &'tcx Queries<'tcx>,
) -> Compilation {
queries.global_ctxt().unwrap().enter(|tcx| {
- test_stable_mir(tcx);
+ rustc_smir::rustc_internal::run(tcx, || test_stable_mir(tcx));
});
// No need to keep going.
Compilation::Stop
@@ -123,6 +151,12 @@ fn generate_input(path: &str) -> std::io::Result<()> {
let x_64 = foo::bar(x);
let y_64 = foo::bar(y);
x_64.wrapping_add(y_64)
+ }}
+
+ pub fn drop(_: String) {{}}
+
+ pub fn assert(x: i32) -> i32 {{
+ x + 1
}}"#
)?;
Ok(())