mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Add reference annotations for diagnostic attributes
This adds reference annotations for `diagnostic::on_unimplmented` and the `diagnostic` namespace in general.
This commit is contained in:
parent
5319425128
commit
1b0e78738b
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.namespace.unknown-invalid-syntax
|
||||
|
||||
#![deny(unknown_or_malformed_diagnostic_attributes)]
|
||||
|
||||
#[diagnostic::unknown_attribute]
|
||||
|
@ -1,11 +1,11 @@
|
||||
error: unknown diagnostic attribute
|
||||
--> $DIR/deny_malformed_attribute.rs:3:15
|
||||
--> $DIR/deny_malformed_attribute.rs:5:15
|
||||
|
|
||||
LL | #[diagnostic::unknown_attribute]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/deny_malformed_attribute.rs:1:9
|
||||
--> $DIR/deny_malformed_attribute.rs:3:9
|
||||
|
|
||||
LL | #![deny(unknown_or_malformed_diagnostic_attributes)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,5 +1,6 @@
|
||||
//@ edition:2021
|
||||
//@ aux-build:bad_on_unimplemented.rs
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.syntax
|
||||
|
||||
// Do not ICE when encountering a malformed `#[diagnostic::on_unimplemented]` annotation in a
|
||||
// dependency when incorrectly used (#124651).
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::MissingAttr` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:22:18
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:23:18
|
||||
|
|
||||
LL | missing_attr(());
|
||||
| ------------ ^^ the trait `bad_on_unimplemented::MissingAttr` is not implemented for `()`
|
||||
@ -7,13 +7,13 @@ LL | missing_attr(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `missing_attr`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:11:20
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:12:20
|
||||
|
|
||||
LL | fn missing_attr<T: MissingAttr>(_: T) {}
|
||||
| ^^^^^^^^^^^ required by this bound in `missing_attr`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::DuplicateAttr` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:23:20
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:24:20
|
||||
|
|
||||
LL | duplicate_attr(());
|
||||
| -------------- ^^ a
|
||||
@ -22,13 +22,13 @@ LL | duplicate_attr(());
|
||||
|
|
||||
= help: the trait `bad_on_unimplemented::DuplicateAttr` is not implemented for `()`
|
||||
note: required by a bound in `duplicate_attr`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:12:22
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:13:22
|
||||
|
|
||||
LL | fn duplicate_attr<T: DuplicateAttr>(_: T) {}
|
||||
| ^^^^^^^^^^^^^ required by this bound in `duplicate_attr`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::NotMetaList` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:24:19
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:25:19
|
||||
|
|
||||
LL | not_meta_list(());
|
||||
| ------------- ^^ the trait `bad_on_unimplemented::NotMetaList` is not implemented for `()`
|
||||
@ -36,13 +36,13 @@ LL | not_meta_list(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `not_meta_list`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:13:21
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:14:21
|
||||
|
|
||||
LL | fn not_meta_list<T: NotMetaList>(_: T) {}
|
||||
| ^^^^^^^^^^^ required by this bound in `not_meta_list`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::Empty` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:25:11
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:26:11
|
||||
|
|
||||
LL | empty(());
|
||||
| ----- ^^ the trait `bad_on_unimplemented::Empty` is not implemented for `()`
|
||||
@ -50,13 +50,13 @@ LL | empty(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `empty`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:14:13
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:15:13
|
||||
|
|
||||
LL | fn empty<T: Empty>(_: T) {}
|
||||
| ^^^^^ required by this bound in `empty`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::WrongDelim` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:26:17
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:27:17
|
||||
|
|
||||
LL | wrong_delim(());
|
||||
| ----------- ^^ the trait `bad_on_unimplemented::WrongDelim` is not implemented for `()`
|
||||
@ -64,13 +64,13 @@ LL | wrong_delim(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
note: required by a bound in `wrong_delim`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:15:19
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:16:19
|
||||
|
|
||||
LL | fn wrong_delim<T: WrongDelim>(_: T) {}
|
||||
| ^^^^^^^^^^ required by this bound in `wrong_delim`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::BadFormatter<()>` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:27:19
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:28:19
|
||||
|
|
||||
LL | bad_formatter(());
|
||||
| ------------- ^^ ()
|
||||
@ -79,13 +79,13 @@ LL | bad_formatter(());
|
||||
|
|
||||
= help: the trait `bad_on_unimplemented::BadFormatter<()>` is not implemented for `()`
|
||||
note: required by a bound in `bad_formatter`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:16:21
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:17:21
|
||||
|
|
||||
LL | fn bad_formatter<T: BadFormatter<()>>(_: T) {}
|
||||
| ^^^^^^^^^^^^^^^^ required by this bound in `bad_formatter`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::NoImplicitArgs` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:28:22
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:29:22
|
||||
|
|
||||
LL | no_implicit_args(());
|
||||
| ---------------- ^^ test {}
|
||||
@ -94,13 +94,13 @@ LL | no_implicit_args(());
|
||||
|
|
||||
= help: the trait `bad_on_unimplemented::NoImplicitArgs` is not implemented for `()`
|
||||
note: required by a bound in `no_implicit_args`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:17:24
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:18:24
|
||||
|
|
||||
LL | fn no_implicit_args<T: NoImplicitArgs>(_: T) {}
|
||||
| ^^^^^^^^^^^^^^ required by this bound in `no_implicit_args`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::MissingArg` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:29:17
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:30:17
|
||||
|
|
||||
LL | missing_arg(());
|
||||
| ----------- ^^ {missing}
|
||||
@ -109,13 +109,13 @@ LL | missing_arg(());
|
||||
|
|
||||
= help: the trait `bad_on_unimplemented::MissingArg` is not implemented for `()`
|
||||
note: required by a bound in `missing_arg`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:18:19
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:19:19
|
||||
|
|
||||
LL | fn missing_arg<T: MissingArg>(_: T) {}
|
||||
| ^^^^^^^^^^ required by this bound in `missing_arg`
|
||||
|
||||
error[E0277]: the trait bound `(): bad_on_unimplemented::BadArg` is not satisfied
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:30:13
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:31:13
|
||||
|
|
||||
LL | bad_arg(());
|
||||
| ------- ^^ {_}
|
||||
@ -124,7 +124,7 @@ LL | bad_arg(());
|
||||
|
|
||||
= help: the trait `bad_on_unimplemented::BadArg` is not implemented for `()`
|
||||
note: required by a bound in `bad_arg`
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:19:15
|
||||
--> $DIR/malformed_foreign_on_unimplemented.rs:20:15
|
||||
|
|
||||
LL | fn bad_arg<T: BadArg>(_: T) {}
|
||||
| ^^^^^^ required by this bound in `bad_arg`
|
||||
|
@ -1,4 +1,5 @@
|
||||
//@ check-pass
|
||||
//@ reference: attributes.diagnostic.namespace.unknown-invalid-syntax
|
||||
#[diagnostic::non_existing_attribute]
|
||||
//~^WARN unknown diagnostic attribute
|
||||
pub trait Bar {
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: unknown diagnostic attribute
|
||||
--> $DIR/non_existing_attributes_accepted.rs:2:15
|
||||
--> $DIR/non_existing_attributes_accepted.rs:3:15
|
||||
|
|
||||
LL | #[diagnostic::non_existing_attribute]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -7,7 +7,7 @@ LL | #[diagnostic::non_existing_attribute]
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: unknown diagnostic attribute
|
||||
--> $DIR/non_existing_attributes_accepted.rs:7:15
|
||||
--> $DIR/non_existing_attributes_accepted.rs:8:15
|
||||
|
|
||||
LL | #[diagnostic::non_existing_attribute(with_option = "foo")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,3 +1,4 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.invalid-string
|
||||
#[diagnostic::on_unimplemented(message = "{{Test } thing")]
|
||||
//~^WARN unmatched `}` found
|
||||
//~|WARN unmatched `}` found
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: unmatched `}` found
|
||||
--> $DIR/broken_format.rs:1:32
|
||||
--> $DIR/broken_format.rs:2:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "{{Test } thing")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -7,7 +7,7 @@ LL | #[diagnostic::on_unimplemented(message = "{{Test } thing")]
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: positional format arguments are not allowed here
|
||||
--> $DIR/broken_format.rs:6:32
|
||||
--> $DIR/broken_format.rs:7:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
@ -15,7 +15,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {}")]
|
||||
= help: only named format arguments with the name of one of the generic types are allowed in this context
|
||||
|
||||
warning: positional format arguments are not allowed here
|
||||
--> $DIR/broken_format.rs:11:32
|
||||
--> $DIR/broken_format.rs:12:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {1:}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -23,7 +23,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {1:}")]
|
||||
= help: only named format arguments with the name of one of the generic types are allowed in this context
|
||||
|
||||
warning: invalid format specifier
|
||||
--> $DIR/broken_format.rs:16:32
|
||||
--> $DIR/broken_format.rs:17:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:123}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -31,19 +31,19 @@ LL | #[diagnostic::on_unimplemented(message = "Test {Self:123}")]
|
||||
= help: no format specifier are supported in this position
|
||||
|
||||
warning: expected `}`, found `!`
|
||||
--> $DIR/broken_format.rs:21:32
|
||||
--> $DIR/broken_format.rs:22:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: unmatched `}` found
|
||||
--> $DIR/broken_format.rs:21:32
|
||||
--> $DIR/broken_format.rs:22:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: unmatched `}` found
|
||||
--> $DIR/broken_format.rs:1:32
|
||||
--> $DIR/broken_format.rs:2:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "{{Test } thing")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -51,7 +51,7 @@ LL | #[diagnostic::on_unimplemented(message = "{{Test } thing")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: {{Test } thing
|
||||
--> $DIR/broken_format.rs:35:13
|
||||
--> $DIR/broken_format.rs:36:13
|
||||
|
|
||||
LL | check_1(());
|
||||
| ------- ^^ the trait `ImportantTrait1` is not implemented for `()`
|
||||
@ -59,18 +59,18 @@ LL | check_1(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/broken_format.rs:4:1
|
||||
--> $DIR/broken_format.rs:5:1
|
||||
|
|
||||
LL | trait ImportantTrait1 {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `check_1`
|
||||
--> $DIR/broken_format.rs:28:20
|
||||
--> $DIR/broken_format.rs:29:20
|
||||
|
|
||||
LL | fn check_1(_: impl ImportantTrait1) {}
|
||||
| ^^^^^^^^^^^^^^^ required by this bound in `check_1`
|
||||
|
||||
warning: positional format arguments are not allowed here
|
||||
--> $DIR/broken_format.rs:6:32
|
||||
--> $DIR/broken_format.rs:7:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
@ -79,7 +79,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Test {}
|
||||
--> $DIR/broken_format.rs:37:13
|
||||
--> $DIR/broken_format.rs:38:13
|
||||
|
|
||||
LL | check_2(());
|
||||
| ------- ^^ the trait `ImportantTrait2` is not implemented for `()`
|
||||
@ -87,18 +87,18 @@ LL | check_2(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/broken_format.rs:9:1
|
||||
--> $DIR/broken_format.rs:10:1
|
||||
|
|
||||
LL | trait ImportantTrait2 {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `check_2`
|
||||
--> $DIR/broken_format.rs:29:20
|
||||
--> $DIR/broken_format.rs:30:20
|
||||
|
|
||||
LL | fn check_2(_: impl ImportantTrait2) {}
|
||||
| ^^^^^^^^^^^^^^^ required by this bound in `check_2`
|
||||
|
||||
warning: positional format arguments are not allowed here
|
||||
--> $DIR/broken_format.rs:11:32
|
||||
--> $DIR/broken_format.rs:12:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {1:}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -107,7 +107,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {1:}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Test {1}
|
||||
--> $DIR/broken_format.rs:39:13
|
||||
--> $DIR/broken_format.rs:40:13
|
||||
|
|
||||
LL | check_3(());
|
||||
| ------- ^^ the trait `ImportantTrait3` is not implemented for `()`
|
||||
@ -115,18 +115,18 @@ LL | check_3(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/broken_format.rs:14:1
|
||||
--> $DIR/broken_format.rs:15:1
|
||||
|
|
||||
LL | trait ImportantTrait3 {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `check_3`
|
||||
--> $DIR/broken_format.rs:30:20
|
||||
--> $DIR/broken_format.rs:31:20
|
||||
|
|
||||
LL | fn check_3(_: impl ImportantTrait3) {}
|
||||
| ^^^^^^^^^^^^^^^ required by this bound in `check_3`
|
||||
|
||||
warning: invalid format specifier
|
||||
--> $DIR/broken_format.rs:16:32
|
||||
--> $DIR/broken_format.rs:17:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:123}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -135,7 +135,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {Self:123}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Test ()
|
||||
--> $DIR/broken_format.rs:41:13
|
||||
--> $DIR/broken_format.rs:42:13
|
||||
|
|
||||
LL | check_4(());
|
||||
| ------- ^^ the trait `ImportantTrait4` is not implemented for `()`
|
||||
@ -143,18 +143,18 @@ LL | check_4(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/broken_format.rs:19:1
|
||||
--> $DIR/broken_format.rs:20:1
|
||||
|
|
||||
LL | trait ImportantTrait4 {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `check_4`
|
||||
--> $DIR/broken_format.rs:31:20
|
||||
--> $DIR/broken_format.rs:32:20
|
||||
|
|
||||
LL | fn check_4(_: impl ImportantTrait4) {}
|
||||
| ^^^^^^^^^^^^^^^ required by this bound in `check_4`
|
||||
|
||||
warning: expected `}`, found `!`
|
||||
--> $DIR/broken_format.rs:21:32
|
||||
--> $DIR/broken_format.rs:22:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -162,7 +162,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: unmatched `}` found
|
||||
--> $DIR/broken_format.rs:21:32
|
||||
--> $DIR/broken_format.rs:22:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -170,7 +170,7 @@ LL | #[diagnostic::on_unimplemented(message = "Test {Self:!}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Test {Self:!}
|
||||
--> $DIR/broken_format.rs:43:13
|
||||
--> $DIR/broken_format.rs:44:13
|
||||
|
|
||||
LL | check_5(());
|
||||
| ------- ^^ the trait `ImportantTrait5` is not implemented for `()`
|
||||
@ -178,12 +178,12 @@ LL | check_5(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/broken_format.rs:26:1
|
||||
--> $DIR/broken_format.rs:27:1
|
||||
|
|
||||
LL | trait ImportantTrait5 {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: required by a bound in `check_5`
|
||||
--> $DIR/broken_format.rs:32:20
|
||||
--> $DIR/broken_format.rs:33:20
|
||||
|
|
||||
LL | fn check_5(_: impl ImportantTrait5) {}
|
||||
| ^^^^^^^^^^^^^^^ required by this bound in `check_5`
|
||||
|
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.intro
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.keys
|
||||
#[diagnostic::on_unimplemented(message = "my message", label = "my label", note = "my note")]
|
||||
pub trait ProviderLt {}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0599]: my message
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:15:7
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:17:7
|
||||
|
|
||||
LL | struct B;
|
||||
| -------- method `request` not found for this struct because it doesn't satisfy `B: ProviderExt` or `B: ProviderLt`
|
||||
@ -8,7 +8,7 @@ LL | B.request();
|
||||
| ^^^^^^^ my label
|
||||
|
|
||||
note: trait bound `B: ProviderLt` was not satisfied
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:10:18
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:12:18
|
||||
|
|
||||
LL | impl<T: ?Sized + ProviderLt> ProviderExt for T {}
|
||||
| ^^^^^^^^^^ ----------- -
|
||||
@ -16,13 +16,13 @@ LL | impl<T: ?Sized + ProviderLt> ProviderExt for T {}
|
||||
| unsatisfied trait bound introduced here
|
||||
= note: my note
|
||||
note: the trait `ProviderLt` must be implemented
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:2:1
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:4:1
|
||||
|
|
||||
LL | pub trait ProviderLt {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= help: items from traits can only be used if the trait is implemented and in scope
|
||||
note: `ProviderExt` defines an item `request`, perhaps you need to implement it
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:4:1
|
||||
--> $DIR/custom-on-unimplemented-diagnostic.rs:6:1
|
||||
|
|
||||
LL | pub trait ProviderExt {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,3 +1,7 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.format-parameters
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.keys
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.syntax
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.invalid-formats
|
||||
#[diagnostic::on_unimplemented(
|
||||
on(_Self = "&str"),
|
||||
//~^WARN malformed `on_unimplemented` attribute
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: `#[diagnostic::on_unimplemented]` can only be applied to trait definitions
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:22:1
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:26:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Not allowed to apply it on a impl")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -7,7 +7,7 @@ LL | #[diagnostic::on_unimplemented(message = "Not allowed to apply it on a impl
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:2:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:6:5
|
||||
|
|
||||
LL | on(_Self = "&str"),
|
||||
| ^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -15,7 +15,7 @@ LL | on(_Self = "&str"),
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:8:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:12:5
|
||||
|
|
||||
LL | parent_label = "in this scope",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -23,7 +23,7 @@ LL | parent_label = "in this scope",
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:11:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:15:5
|
||||
|
|
||||
LL | append_const_msg
|
||||
| ^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -31,7 +31,7 @@ LL | append_const_msg
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:17:32
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:21:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented = "Message"]
|
||||
| ^^^^^^^^^^^ invalid option found here
|
||||
@ -39,7 +39,7 @@ LL | #[diagnostic::on_unimplemented = "Message"]
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: there is no parameter `from_desugaring` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -47,7 +47,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `direct` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -55,7 +55,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `cause` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -63,7 +63,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `integral` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -71,7 +71,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `integer` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -79,7 +79,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `float` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -87,7 +87,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `_Self` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -95,7 +95,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `crate_local` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -103,7 +103,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `Trait` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -111,7 +111,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: there is no parameter `ItemContext` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -119,7 +119,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:2:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:6:5
|
||||
|
|
||||
LL | on(_Self = "&str"),
|
||||
| ^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -128,7 +128,7 @@ LL | on(_Self = "&str"),
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:8:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:12:5
|
||||
|
|
||||
LL | parent_label = "in this scope",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -137,7 +137,7 @@ LL | parent_label = "in this scope",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:11:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:15:5
|
||||
|
|
||||
LL | append_const_msg
|
||||
| ^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -146,7 +146,7 @@ LL | append_const_msg
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: trait has `()` and `i32` as params
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:59:15
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:63:15
|
||||
|
|
||||
LL | takes_foo(());
|
||||
| --------- ^^ trait has `()` and `i32` as params
|
||||
@ -156,18 +156,18 @@ LL | takes_foo(());
|
||||
= help: the trait `Foo<i32>` is not implemented for `()`
|
||||
= note: trait has `()` and `i32` as params
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:15:1
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:19:1
|
||||
|
|
||||
LL | trait Foo<T> {}
|
||||
| ^^^^^^^^^^^^
|
||||
note: required by a bound in `takes_foo`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:54:22
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:58:22
|
||||
|
|
||||
LL | fn takes_foo(_: impl Foo<i32>) {}
|
||||
| ^^^^^^^^ required by this bound in `takes_foo`
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:17:32
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:21:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented = "Message"]
|
||||
| ^^^^^^^^^^^ invalid option found here
|
||||
@ -176,7 +176,7 @@ LL | #[diagnostic::on_unimplemented = "Message"]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: the trait bound `(): Bar` is not satisfied
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:61:15
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:65:15
|
||||
|
|
||||
LL | takes_bar(());
|
||||
| --------- ^^ the trait `Bar` is not implemented for `()`
|
||||
@ -185,13 +185,13 @@ LL | takes_bar(());
|
||||
|
|
||||
= help: the trait `Bar` is implemented for `i32`
|
||||
note: required by a bound in `takes_bar`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:55:22
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:59:22
|
||||
|
|
||||
LL | fn takes_bar(_: impl Bar) {}
|
||||
| ^^^ required by this bound in `takes_bar`
|
||||
|
||||
warning: there is no parameter `from_desugaring` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -200,7 +200,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `direct` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -209,7 +209,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `cause` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -218,7 +218,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `integral` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -227,7 +227,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `integer` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:29:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:33:5
|
||||
|
|
||||
LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -236,7 +236,7 @@ LL | message = "{from_desugaring}{direct}{cause}{integral}{integer}",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `float` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -245,7 +245,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `_Self` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -254,7 +254,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `crate_local` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -263,7 +263,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `Trait` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -272,7 +272,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: there is no parameter `ItemContext` on trait `Baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:40:5
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:44:5
|
||||
|
|
||||
LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -281,7 +281,7 @@ LL | label = "{float}{_Self}{crate_local}{Trait}{ItemContext}"
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: {from_desugaring}{direct}{cause}{integral}{integer}
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:63:15
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:67:15
|
||||
|
|
||||
LL | takes_baz(());
|
||||
| --------- ^^ {float}{_Self}{crate_local}{Trait}{ItemContext}
|
||||
@ -290,12 +290,12 @@ LL | takes_baz(());
|
||||
|
|
||||
= help: the trait `Baz` is not implemented for `()`
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:52:1
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:56:1
|
||||
|
|
||||
LL | trait Baz {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_baz`
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:56:22
|
||||
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:60:22
|
||||
|
|
||||
LL | fn takes_baz(_: impl Baz) {}
|
||||
| ^^^ required by this bound in `takes_baz`
|
||||
|
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.syntax
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.unknown-keys
|
||||
#[diagnostic::on_unimplemented(unsupported = "foo")]
|
||||
//~^WARN malformed `on_unimplemented` attribute
|
||||
//~|WARN malformed `on_unimplemented` attribute
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: `#[diagnostic::on_unimplemented]` can only be applied to trait definitions
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:6:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:8:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Baz")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -7,7 +7,7 @@ LL | #[diagnostic::on_unimplemented(message = "Baz")]
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:1:32
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:3:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(unsupported = "foo")]
|
||||
| ^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -15,7 +15,7 @@ LL | #[diagnostic::on_unimplemented(unsupported = "foo")]
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:10:50
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:12:50
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Boom", unsupported = "Bar")]
|
||||
| ^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -23,7 +23,7 @@ LL | #[diagnostic::on_unimplemented(message = "Boom", unsupported = "Bar")]
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:15:50
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:17:50
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Boom", on(_Self = "i32", message = "whatever"))]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -31,7 +31,7 @@ LL | #[diagnostic::on_unimplemented(message = "Boom", on(_Self = "i32", message
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:20:32
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:22:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented = "boom"]
|
||||
| ^^^^^^^^ invalid option found here
|
||||
@ -39,7 +39,7 @@ LL | #[diagnostic::on_unimplemented = "boom"]
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
warning: missing options for `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:24:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:26:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -47,7 +47,7 @@ LL | #[diagnostic::on_unimplemented]
|
||||
= help: at least one of the `message`, `note` and `label` options are expected
|
||||
|
||||
warning: there is no parameter `DoesNotExist` on trait `Test`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:29:32
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:31:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "{DoesNotExist}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -55,7 +55,7 @@ LL | #[diagnostic::on_unimplemented(message = "{DoesNotExist}")]
|
||||
= help: expect either a generic argument name or `{Self}` as format argument
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:1:32
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:3:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(unsupported = "foo")]
|
||||
| ^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -64,7 +64,7 @@ LL | #[diagnostic::on_unimplemented(unsupported = "foo")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: the trait bound `i32: Foo` is not satisfied
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:41:14
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:43:14
|
||||
|
|
||||
LL | take_foo(1_i32);
|
||||
| -------- ^^^^^ the trait `Foo` is not implemented for `i32`
|
||||
@ -72,18 +72,18 @@ LL | take_foo(1_i32);
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:4:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:6:1
|
||||
|
|
||||
LL | trait Foo {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `take_foo`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:34:21
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:36:21
|
||||
|
|
||||
LL | fn take_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `take_foo`
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:10:50
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:12:50
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Boom", unsupported = "Bar")]
|
||||
| ^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -92,7 +92,7 @@ LL | #[diagnostic::on_unimplemented(message = "Boom", unsupported = "Bar")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Boom
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:43:14
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:45:14
|
||||
|
|
||||
LL | take_baz(1_i32);
|
||||
| -------- ^^^^^ the trait `Baz` is not implemented for `i32`
|
||||
@ -100,18 +100,18 @@ LL | take_baz(1_i32);
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:13:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:15:1
|
||||
|
|
||||
LL | trait Baz {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `take_baz`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:35:21
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:37:21
|
||||
|
|
||||
LL | fn take_baz(_: impl Baz) {}
|
||||
| ^^^ required by this bound in `take_baz`
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:15:50
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:17:50
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "Boom", on(_Self = "i32", message = "whatever"))]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -120,7 +120,7 @@ LL | #[diagnostic::on_unimplemented(message = "Boom", on(_Self = "i32", message
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: Boom
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:45:15
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:47:15
|
||||
|
|
||||
LL | take_boom(1_i32);
|
||||
| --------- ^^^^^ the trait `Boom` is not implemented for `i32`
|
||||
@ -128,18 +128,18 @@ LL | take_boom(1_i32);
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:18:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:20:1
|
||||
|
|
||||
LL | trait Boom {}
|
||||
| ^^^^^^^^^^
|
||||
note: required by a bound in `take_boom`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:36:22
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:38:22
|
||||
|
|
||||
LL | fn take_boom(_: impl Boom) {}
|
||||
| ^^^^ required by this bound in `take_boom`
|
||||
|
||||
warning: missing options for `on_unimplemented` attribute
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:24:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:26:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -148,7 +148,7 @@ LL | #[diagnostic::on_unimplemented]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: the trait bound `i32: Whatever` is not satisfied
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:47:19
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:49:19
|
||||
|
|
||||
LL | take_whatever(1_i32);
|
||||
| ------------- ^^^^^ the trait `Whatever` is not implemented for `i32`
|
||||
@ -156,18 +156,18 @@ LL | take_whatever(1_i32);
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:27:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:29:1
|
||||
|
|
||||
LL | trait Whatever {}
|
||||
| ^^^^^^^^^^^^^^
|
||||
note: required by a bound in `take_whatever`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:37:26
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:39:26
|
||||
|
|
||||
LL | fn take_whatever(_: impl Whatever) {}
|
||||
| ^^^^^^^^ required by this bound in `take_whatever`
|
||||
|
||||
warning: there is no parameter `DoesNotExist` on trait `Test`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:29:32
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:31:32
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented(message = "{DoesNotExist}")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -176,7 +176,7 @@ LL | #[diagnostic::on_unimplemented(message = "{DoesNotExist}")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: {DoesNotExist}
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:49:15
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:51:15
|
||||
|
|
||||
LL | take_test(());
|
||||
| --------- ^^ the trait `Test` is not implemented for `()`
|
||||
@ -184,12 +184,12 @@ LL | take_test(());
|
||||
| required by a bound introduced by this call
|
||||
|
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:32:1
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:34:1
|
||||
|
|
||||
LL | trait Test {}
|
||||
| ^^^^^^^^^^
|
||||
note: required by a bound in `take_test`
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:38:22
|
||||
--> $DIR/do_not_fail_parsing_on_invalid_options_1.rs:40:22
|
||||
|
|
||||
LL | fn take_test(_: impl Test) {}
|
||||
| ^^^^ required by this bound in `take_test`
|
||||
|
@ -1,4 +1,5 @@
|
||||
//@ aux-build:other.rs
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.intro
|
||||
|
||||
extern crate other;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: Message
|
||||
--> $DIR/error_is_shown_in_downstream_crates.rs:10:14
|
||||
--> $DIR/error_is_shown_in_downstream_crates.rs:11:14
|
||||
|
|
||||
LL | take_foo(());
|
||||
| -------- ^^ label
|
||||
@ -9,7 +9,7 @@ LL | take_foo(());
|
||||
= help: the trait `Foo` is not implemented for `()`
|
||||
= note: Note
|
||||
note: required by a bound in `take_foo`
|
||||
--> $DIR/error_is_shown_in_downstream_crates.rs:7:21
|
||||
--> $DIR/error_is_shown_in_downstream_crates.rs:8:21
|
||||
|
|
||||
LL | fn take_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `take_foo`
|
||||
|
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.repetition
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.syntax
|
||||
#[diagnostic::on_unimplemented(
|
||||
if(Self = "()"),
|
||||
//~^WARN malformed `on_unimplemented` attribute
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:2:5
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:4:5
|
||||
|
|
||||
LL | if(Self = "()"),
|
||||
| ^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -8,7 +8,7 @@ LL | if(Self = "()"),
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: `message` is ignored due to previous definition of `message`
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:8:32
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:10:32
|
||||
|
|
||||
LL | message = "custom message",
|
||||
| -------------------------- `message` is first declared here
|
||||
@ -17,7 +17,7 @@ LL | #[diagnostic::on_unimplemented(message = "fallback!!")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ `message` is already declared here
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:2:5
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:4:5
|
||||
|
|
||||
LL | if(Self = "()"),
|
||||
| ^^^^^^^^^^^^^^^ invalid option found here
|
||||
@ -26,7 +26,7 @@ LL | if(Self = "()"),
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: `message` is ignored due to previous definition of `message`
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:8:32
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:10:32
|
||||
|
|
||||
LL | message = "custom message",
|
||||
| -------------------------- `message` is first declared here
|
||||
@ -37,7 +37,7 @@ LL | #[diagnostic::on_unimplemented(message = "fallback!!")]
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: custom message
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:18:15
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:20:15
|
||||
|
|
||||
LL | takes_foo(());
|
||||
| --------- ^^ fallback label
|
||||
@ -48,12 +48,12 @@ LL | takes_foo(());
|
||||
= note: custom note
|
||||
= note: fallback note
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:13:1
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:15:1
|
||||
|
|
||||
LL | trait Foo {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_foo`
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:15:22
|
||||
--> $DIR/ignore_unsupported_options_and_continue_to_use_fallback.rs:17:22
|
||||
|
|
||||
LL | fn takes_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `takes_foo`
|
||||
|
@ -1,3 +1,4 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.note-repetition
|
||||
#[diagnostic::on_unimplemented(message = "Foo", label = "Bar", note = "Baz", note = "Boom")]
|
||||
trait Foo {}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: Foo
|
||||
--> $DIR/multiple_notes.rs:12:15
|
||||
--> $DIR/multiple_notes.rs:13:15
|
||||
|
|
||||
LL | takes_foo(());
|
||||
| --------- ^^ Bar
|
||||
@ -10,18 +10,18 @@ LL | takes_foo(());
|
||||
= note: Baz
|
||||
= note: Boom
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/multiple_notes.rs:2:1
|
||||
--> $DIR/multiple_notes.rs:3:1
|
||||
|
|
||||
LL | trait Foo {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_foo`
|
||||
--> $DIR/multiple_notes.rs:8:22
|
||||
--> $DIR/multiple_notes.rs:9:22
|
||||
|
|
||||
LL | fn takes_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `takes_foo`
|
||||
|
||||
error[E0277]: Bar
|
||||
--> $DIR/multiple_notes.rs:14:15
|
||||
--> $DIR/multiple_notes.rs:15:15
|
||||
|
|
||||
LL | takes_bar(());
|
||||
| --------- ^^ Foo
|
||||
@ -32,12 +32,12 @@ LL | takes_bar(());
|
||||
= note: Baz
|
||||
= note: Baz2
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/multiple_notes.rs:6:1
|
||||
--> $DIR/multiple_notes.rs:7:1
|
||||
|
|
||||
LL | trait Bar {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_bar`
|
||||
--> $DIR/multiple_notes.rs:9:22
|
||||
--> $DIR/multiple_notes.rs:10:22
|
||||
|
|
||||
LL | fn takes_bar(_: impl Bar) {}
|
||||
| ^^^ required by this bound in `takes_bar`
|
||||
|
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.intro
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.keys
|
||||
#[diagnostic::on_unimplemented(message = "Foo", label = "Bar", note = "Baz")]
|
||||
trait Foo {}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: Foo
|
||||
--> $DIR/on_unimplemented_simple.rs:7:15
|
||||
--> $DIR/on_unimplemented_simple.rs:9:15
|
||||
|
|
||||
LL | takes_foo(());
|
||||
| --------- ^^ Bar
|
||||
@ -9,12 +9,12 @@ LL | takes_foo(());
|
||||
= help: the trait `Foo` is not implemented for `()`
|
||||
= note: Baz
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/on_unimplemented_simple.rs:2:1
|
||||
--> $DIR/on_unimplemented_simple.rs:4:1
|
||||
|
|
||||
LL | trait Foo {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_foo`
|
||||
--> $DIR/on_unimplemented_simple.rs:4:22
|
||||
--> $DIR/on_unimplemented_simple.rs:6:22
|
||||
|
|
||||
LL | fn takes_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `takes_foo`
|
||||
|
@ -1,3 +1,4 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.repetition
|
||||
#[diagnostic::on_unimplemented(
|
||||
message = "first message",
|
||||
label = "first label",
|
||||
|
@ -1,5 +1,5 @@
|
||||
warning: `message` is ignored due to previous definition of `message`
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:7:5
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:8:5
|
||||
|
|
||||
LL | message = "first message",
|
||||
| ------------------------- `message` is first declared here
|
||||
@ -10,7 +10,7 @@ LL | message = "second message",
|
||||
= note: `#[warn(unknown_or_malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: `label` is ignored due to previous definition of `label`
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:10:5
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:11:5
|
||||
|
|
||||
LL | label = "first label",
|
||||
| --------------------- `label` is first declared here
|
||||
@ -19,7 +19,7 @@ LL | label = "second label",
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ `label` is already declared here
|
||||
|
||||
warning: `message` is ignored due to previous definition of `message`
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:7:5
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:8:5
|
||||
|
|
||||
LL | message = "first message",
|
||||
| ------------------------- `message` is first declared here
|
||||
@ -30,7 +30,7 @@ LL | message = "second message",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
warning: `label` is ignored due to previous definition of `label`
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:10:5
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:11:5
|
||||
|
|
||||
LL | label = "first label",
|
||||
| --------------------- `label` is first declared here
|
||||
@ -41,7 +41,7 @@ LL | label = "second label",
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: first message
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:21:15
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:22:15
|
||||
|
|
||||
LL | takes_foo(());
|
||||
| --------- ^^ first label
|
||||
@ -52,12 +52,12 @@ LL | takes_foo(());
|
||||
= note: custom note
|
||||
= note: second note
|
||||
help: this trait has no implementations, consider adding one
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:15:1
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:16:1
|
||||
|
|
||||
LL | trait Foo {}
|
||||
| ^^^^^^^^^
|
||||
note: required by a bound in `takes_foo`
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:18:22
|
||||
--> $DIR/report_warning_on_duplicated_options.rs:19:22
|
||||
|
|
||||
LL | fn takes_foo(_: impl Foo) {}
|
||||
| ^^^ required by this bound in `takes_foo`
|
||||
|
@ -1,3 +1,4 @@
|
||||
//@ reference: attributes.diagnostic.namespace.unknown-invalid-syntax
|
||||
#![deny(unknown_or_malformed_diagnostic_attributes)]
|
||||
|
||||
#[diagnostic::onunimplemented]
|
||||
|
@ -1,11 +1,11 @@
|
||||
error: unknown diagnostic attribute
|
||||
--> $DIR/suggest_typos.rs:3:15
|
||||
--> $DIR/suggest_typos.rs:4:15
|
||||
|
|
||||
LL | #[diagnostic::onunimplemented]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/suggest_typos.rs:1:9
|
||||
--> $DIR/suggest_typos.rs:2:9
|
||||
|
|
||||
LL | #![deny(unknown_or_malformed_diagnostic_attributes)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -15,7 +15,7 @@ LL | #[diagnostic::on_unimplemented]
|
||||
| ~~~~~~~~~~~~~~~~
|
||||
|
||||
error: unknown diagnostic attribute
|
||||
--> $DIR/suggest_typos.rs:8:15
|
||||
--> $DIR/suggest_typos.rs:9:15
|
||||
|
|
||||
LL | #[diagnostic::un_onimplemented]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@ -26,7 +26,7 @@ LL | #[diagnostic::on_unimplemented]
|
||||
| ~~~~~~~~~~~~~~~~
|
||||
|
||||
error: unknown diagnostic attribute
|
||||
--> $DIR/suggest_typos.rs:13:15
|
||||
--> $DIR/suggest_typos.rs:14:15
|
||||
|
|
||||
LL | #[diagnostic::on_implemented]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
@ -1,3 +1,5 @@
|
||||
//@ reference: attributes.diagnostic.on_unimplemented.intro
|
||||
|
||||
#![feature(negative_bounds)]
|
||||
|
||||
#[diagnostic::on_unimplemented(message = "this ain't fooing")]
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: the trait bound `NotFoo: !Foo` is not satisfied
|
||||
--> $DIR/on-unimplemented.rs:7:15
|
||||
--> $DIR/on-unimplemented.rs:9:15
|
||||
|
|
||||
LL | fn hello() -> impl !Foo {
|
||||
| ^^^^^^^^^ the trait bound `NotFoo: !Foo` is not satisfied
|
||||
|
Loading…
Reference in New Issue
Block a user