| //@ 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 `IntoDiagArg`:(?:.*\n){0,9}\s+and \d+ others" -> "normalized in stderr" |
| //@ normalize-stderr-test: "(COMPILER_DIR/.*\.rs):[0-9]+:[0-9]+" -> "$1: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, DiagMessage, SubdiagMessage}; |
| use rustc_macros::{Diagnostic, Subdiagnostic}; |
| use rustc_span::Span; |
| |
| rustc_fluent_macro::fluent_messages! { "./example.ftl" } |
| |
| struct NotIntoDiagArg; |
| |
| #[derive(Diagnostic)] |
| #[diag(no_crate_example)] |
| struct Test { |
| #[primary_span] |
| span: Span, |
| /// A doc comment |
| arg: NotIntoDiagArg, |
| //~^ ERROR the trait bound `NotIntoDiagArg: IntoDiagArg` is not satisfied |
| } |
| |
| #[derive(Subdiagnostic)] |
| #[label(no_crate_example)] |
| struct SubTest { |
| #[primary_span] |
| span: Span, |
| /// A doc comment |
| arg: NotIntoDiagArg, |
| //~^ ERROR the trait bound `NotIntoDiagArg: IntoDiagArg` is not satisfied |
| } |