}
/// Stash a given diagnostic with the given `Span` and `StashKey` as the key for later stealing.
- /// If the diagnostic with this `(span, key)` already exists, this will result in an ICE.
pub fn stash_diagnostic(&self, span: Span, key: StashKey, diag: Diagnostic) {
let mut inner = self.inner.borrow_mut();
- if let Some(mut old_diag) = inner.stashed_diagnostics.insert((span, key), diag) {
- // We are removing a previously stashed diagnostic which should not happen.
- old_diag.level = Bug;
- old_diag.note(&format!(
- "{}:{}: already existing stashed diagnostic with (span = {:?}, key = {:?})",
- file!(),
- line!(),
- span,
- key
- ));
- inner.emit_diag_at_span(old_diag, span);
- panic!(ExplicitBug);
- }
+ // FIXME(Centril, #69537): Consider reintroducing panic on overwriting a stashed diagnostic
+ // if/when we have a more robust macro-friendly replacement for `(span, key)` as a key.
+ // See the PR for a discussion.
+ inner.stashed_diagnostics.insert((span, key), diag);
}
/// Steal a previously stashed diagnostic with the given `Span` and `StashKey` as the key.
--- /dev/null
+error[E0428]: the name `A` is defined multiple times
+ --> $DIR/issue-69396-const-no-type-in-macro.rs:4:13
+ |
+LL | const A = "A".$fn();
+ | ^^^^^^^^^^^^^^^^^^^^
+ | |
+ | `A` redefined here
+ | previous definition of the value `A` here
+...
+LL | / suite! {
+LL | | len;
+LL | | is_empty;
+LL | | }
+ | |_- in this macro invocation
+ |
+ = note: `A` must be defined only once in the value namespace of this module
+ = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: missing type for `const` item
+ --> $DIR/issue-69396-const-no-type-in-macro.rs:4:19
+ |
+LL | const A = "A".$fn();
+ | ^ help: provide a type for the item: `A: usize`
+...
+LL | / suite! {
+LL | | len;
+LL | | is_empty;
+LL | | }
+ | |_- in this macro invocation
+ |
+ = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0121]: the type placeholder `_` is not allowed within types on item signatures
+ --> $DIR/issue-69396-const-no-type-in-macro.rs:4:19
+ |
+LL | const A = "A".$fn();
+ | ^
+ | |
+ | not allowed in type signatures
+ | help: replace `_` with the correct type: `bool`
+...
+LL | / suite! {
+LL | | len;
+LL | | is_empty;
+LL | | }
+ | |_- in this macro invocation
+ |
+ = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0121, E0428.
+For more information about an error, try `rustc --explain E0121`.