diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs | 24 | ||||
| -rw-r--r-- | src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr | 23 | ||||
| -rw-r--r-- | src/tools/compiletest/src/runtest.rs | 19 |
3 files changed, 48 insertions, 18 deletions
diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs index c63410fa35b..1cdc5d18c28 100644 --- a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs +++ b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs @@ -327,7 +327,7 @@ struct ErrorWithDefaultLabelAttr<'a> { } #[derive(SessionDiagnostic)] -//~^ ERROR no method named `into_diagnostic_arg` found for struct `Hello` in the current scope +//~^ ERROR the trait bound `Hello: IntoDiagnosticArg` is not satisfied #[error(code = "E0123", slug = "foo")] struct ArgFieldWithoutSkip { #[primary_span] @@ -482,3 +482,25 @@ struct VecField { #[label] spans: Vec<Span>, } + +#[derive(SessionDiagnostic)] +#[error(code = "E0123", slug = "foo")] +struct UnitField { + #[primary_span] + spans: Span, + #[help] + foo: (), + #[help = "a"] + bar: (), +} + +#[derive(SessionDiagnostic)] +#[error(code = "E0123", slug = "foo")] +struct OptUnitField { + #[primary_span] + spans: Span, + #[help] + foo: Option<()>, + #[help = "a"] + bar: Option<()>, +} diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr index b1738b60bc0..2583363120a 100644 --- a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr +++ b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr @@ -349,17 +349,26 @@ error: cannot find attribute `nonsense` in this scope LL | #[nonsense] | ^^^^^^^^ -error[E0599]: no method named `into_diagnostic_arg` found for struct `Hello` in the current scope +error[E0277]: the trait bound `Hello: IntoDiagnosticArg` is not satisfied --> $DIR/diagnostic-derive.rs:329:10 | -LL | struct Hello {} - | ------------ method `into_diagnostic_arg` not found for this -... LL | #[derive(SessionDiagnostic)] - | ^^^^^^^^^^^^^^^^^ method not found in `Hello` - | + | ^^^^^^^^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `Hello` + | + = help: the following other types implement trait `IntoDiagnosticArg`: + &'a str + Ident + String + Symbol + rustc_middle::ty::Ty<'tcx> + usize +note: required by a bound in `DiagnosticBuilder::<'a, G>::set_arg` + --> $COMPILER_DIR/rustc_errors/src/diagnostic_builder.rs:531:19 + | +LL | arg: impl IntoDiagnosticArg, + | ^^^^^^^^^^^^^^^^^ required by this bound in `DiagnosticBuilder::<'a, G>::set_arg` = note: this error originates in the derive macro `SessionDiagnostic` (in Nightly builds, run with -Z macro-backtrace for more info) error: aborting due to 43 previous errors -For more information about this error, try `rustc --explain E0599`. +For more information about this error, try `rustc --explain E0277`. diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 6d94fe3ebb9..a59a0584d5e 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -3494,22 +3494,21 @@ impl<'test> TestCx<'test> { normalize_path(parent_dir, "$DIR"); // Paths into the libstd/libcore - let src_dir = self - .config - .src_base - .parent() - .unwrap() - .parent() - .unwrap() - .parent() - .unwrap() - .join("library"); + let base_dir = self.config.src_base.parent().unwrap().parent().unwrap().parent().unwrap(); + let src_dir = base_dir.join("library"); normalize_path(&src_dir, "$SRC_DIR"); + // `ui-fulldeps` tests can show paths to the compiler source when testing macros from + // `rustc_macros` + // eg. /home/user/rust/compiler + let compiler_src_dir = base_dir.join("compiler"); + normalize_path(&compiler_src_dir, "$COMPILER_DIR"); + if let Some(virtual_rust_source_base_dir) = option_env!("CFG_VIRTUAL_RUST_SOURCE_BASE_DIR").map(PathBuf::from) { normalize_path(&virtual_rust_source_base_dir.join("library"), "$SRC_DIR"); + normalize_path(&virtual_rust_source_base_dir.join("compiler"), "$COMPILER_DIR"); } // Paths into the build directory |
