diff --git a/compiler/rustc_expand/src/base.rs b/compiler/rustc_expand/src/base.rs
index 86b12f6be4e6a..e055dd3dd3319 100644
--- a/compiler/rustc_expand/src/base.rs
+++ b/compiler/rustc_expand/src/base.rs
@@ -23,7 +23,7 @@ use rustc_parse::parser::Parser;
 use rustc_session::config::CollapseMacroDebuginfo;
 use rustc_session::parse::ParseSess;
 use rustc_session::{Limit, Session};
-use rustc_span::def_id::{CrateNum, DefId, LocalDefId};
+use rustc_span::def_id::{DefId, LocalDefId};
 use rustc_span::edition::Edition;
 use rustc_span::hygiene::{AstPass, ExpnData, ExpnKind, LocalExpnId, MacroKind};
 use rustc_span::source_map::SourceMap;
@@ -1072,10 +1072,6 @@ pub trait ResolverExpand {
         path: &ast::Path,
     ) -> Result<bool, Indeterminate>;
 
-    /// Decodes the proc-macro quoted span in the specified crate, with the specified id.
-    /// No caching is performed.
-    fn get_proc_macro_quoted_span(&self, krate: CrateNum, id: usize) -> Span;
-
     /// The order of items in the HIR is unrelated to the order of
     /// items in the AST. However, we generate proc macro harnesses
     /// based on the AST order, and later refer to these harnesses
diff --git a/compiler/rustc_expand/src/proc_macro_server.rs b/compiler/rustc_expand/src/proc_macro_server.rs
index 007241437eccf..9da8f24533a92 100644
--- a/compiler/rustc_expand/src/proc_macro_server.rs
+++ b/compiler/rustc_expand/src/proc_macro_server.rs
@@ -11,13 +11,11 @@ use rustc_ast::token;
 use rustc_ast::tokenstream::{self, DelimSpacing, Spacing, TokenStream};
 use rustc_ast::util::literal::escape_byte_str_symbol;
 use rustc_ast_pretty::pprust;
-use rustc_data_structures::fx::FxHashMap;
 use rustc_errors::{Diag, ErrorGuaranteed, MultiSpan, PResult};
 use rustc_parse::lexer::nfc_normalize;
 use rustc_parse::parser::Parser;
 use rustc_parse::{exp, new_parser_from_source_str, source_str_to_stream, unwrap_or_emit_fatal};
 use rustc_session::parse::ParseSess;
-use rustc_span::def_id::CrateNum;
 use rustc_span::{BytePos, FileName, Pos, SourceFile, Span, Symbol, sym};
 use smallvec::{SmallVec, smallvec};
 
@@ -419,8 +417,6 @@ pub(crate) struct Rustc<'a, 'b> {
     def_site: Span,
     call_site: Span,
     mixed_site: Span,
-    krate: CrateNum,
-    rebased_spans: FxHashMap<usize, Span>,
 }
 
 impl<'a, 'b> Rustc<'a, 'b> {
@@ -430,8 +426,6 @@ impl<'a, 'b> Rustc<'a, 'b> {
             def_site: ecx.with_def_site_ctxt(expn_data.def_site),
             call_site: ecx.with_call_site_ctxt(expn_data.call_site),
             mixed_site: ecx.with_mixed_site_ctxt(expn_data.call_site),
-            krate: expn_data.macro_def_id.unwrap().krate,
-            rebased_spans: FxHashMap::default(),
             ecx,
         }
     }
@@ -773,43 +767,6 @@ impl server::Span for Rustc<'_, '_> {
     fn source_text(&mut self, span: Self::Span) -> Option<String> {
         self.psess().source_map().span_to_snippet(span).ok()
     }
-
-    /// Saves the provided span into the metadata of
-    /// *the crate we are currently compiling*, which must
-    /// be a proc-macro crate. This id can be passed to
-    /// `recover_proc_macro_span` when our current crate
-    /// is *run* as a proc-macro.
-    ///
-    /// Let's suppose that we have two crates - `my_client`
-    /// and `my_proc_macro`. The `my_proc_macro` crate
-    /// contains a procedural macro `my_macro`, which
-    /// is implemented as: `quote! { "hello" }`
-    ///
-    /// When we *compile* `my_proc_macro`, we will execute
-    /// the `quote` proc-macro. This will save the span of
-    /// "hello" into the metadata of `my_proc_macro`. As a result,
-    /// the body of `my_proc_macro` (after expansion) will end
-    /// up containing a call that looks like this:
-    /// `proc_macro::Ident::new("hello", proc_macro::Span::recover_proc_macro_span(0))`
-    ///
-    /// where `0` is the id returned by this function.
-    /// When `my_proc_macro` *executes* (during the compilation of `my_client`),
-    /// the call to `recover_proc_macro_span` will load the corresponding
-    /// span from the metadata of `my_proc_macro` (which we have access to,
-    /// since we've loaded `my_proc_macro` from disk in order to execute it).
-    /// In this way, we have obtained a span pointing into `my_proc_macro`
-    fn save_span(&mut self, span: Self::Span) -> usize {
-        self.psess().save_proc_macro_span(span)
-    }
-
-    fn recover_proc_macro_span(&mut self, id: usize) -> Self::Span {
-        let (resolver, krate, def_site) = (&*self.ecx.resolver, self.krate, self.def_site);
-        *self.rebased_spans.entry(id).or_insert_with(|| {
-            // FIXME: `SyntaxContext` for spans from proc macro crates is lost during encoding,
-            // replace it with a def-site context until we are encoding it properly.
-            resolver.get_proc_macro_quoted_span(krate, id).with_ctxt(def_site.ctxt())
-        })
-    }
 }
 
 impl server::Symbol for Rustc<'_, '_> {
diff --git a/compiler/rustc_metadata/src/rmeta/decoder.rs b/compiler/rustc_metadata/src/rmeta/decoder.rs
index 6ffbebfffd5a5..8df8154e7a15f 100644
--- a/compiler/rustc_metadata/src/rmeta/decoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/decoder.rs
@@ -1461,15 +1461,6 @@ impl<'a> CrateMetadataRef<'a> {
         self.root.native_libraries.decode((self, sess))
     }
 
-    fn get_proc_macro_quoted_span(self, index: usize, sess: &Session) -> Span {
-        self.root
-            .tables
-            .proc_macro_quoted_spans
-            .get(self, index)
-            .unwrap_or_else(|| panic!("Missing proc macro quoted span: {index:?}"))
-            .decode((self, sess))
-    }
-
     fn get_foreign_modules(self, sess: &'a Session) -> impl Iterator<Item = ForeignModule> {
         self.root.foreign_modules.decode((self, sess))
     }
diff --git a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
index 776b081a4630f..c7d18418bc002 100644
--- a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
+++ b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
@@ -618,15 +618,6 @@ impl CStore {
         self.get_crate_data(cnum).num_def_ids()
     }
 
-    pub fn get_proc_macro_quoted_span_untracked(
-        &self,
-        cnum: CrateNum,
-        id: usize,
-        sess: &Session,
-    ) -> Span {
-        self.get_crate_data(cnum).get_proc_macro_quoted_span(id, sess)
-    }
-
     pub fn set_used_recursively(&mut self, cnum: CrateNum) {
         let cmeta = self.get_crate_data_mut(cnum);
         if !cmeta.used {
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index 88a88847e6b8b..3144d36e4223e 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -1891,10 +1891,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
             let stability = tcx.lookup_stability(CRATE_DEF_ID);
             let macros =
                 self.lazy_array(tcx.resolutions(()).proc_macros.iter().map(|p| p.local_def_index));
-            for (i, span) in self.tcx.sess.psess.proc_macro_quoted_spans() {
-                let span = self.lazy(span);
-                self.tables.proc_macro_quoted_spans.set_some(i, span);
-            }
 
             self.tables.def_kind.set_some(LOCAL_CRATE.as_def_id().index, DefKind::Mod);
             record!(self.tables.def_span[LOCAL_CRATE.as_def_id()] <- tcx.def_span(LOCAL_CRATE.as_def_id()));
diff --git a/compiler/rustc_metadata/src/rmeta/mod.rs b/compiler/rustc_metadata/src/rmeta/mod.rs
index 7b34e605c5307..df34aab07f4c5 100644
--- a/compiler/rustc_metadata/src/rmeta/mod.rs
+++ b/compiler/rustc_metadata/src/rmeta/mod.rs
@@ -458,7 +458,6 @@ define_tables! {
     // `DefPathTable` up front, since we may only ever use a few
     // definitions from any given crate.
     def_keys: Table<DefIndex, LazyValue<DefKey>>,
-    proc_macro_quoted_spans: Table<usize, LazyValue<Span>>,
     variant_data: Table<DefIndex, LazyValue<VariantData>>,
     assoc_container: Table<DefIndex, ty::AssocItemContainer>,
     macro_definition: Table<DefIndex, LazyValue<ast::DelimArgs>>,
diff --git a/compiler/rustc_resolve/src/macros.rs b/compiler/rustc_resolve/src/macros.rs
index 984dfff3ea56e..634843d3dfcec 100644
--- a/compiler/rustc_resolve/src/macros.rs
+++ b/compiler/rustc_resolve/src/macros.rs
@@ -19,7 +19,7 @@ use rustc_expand::expand::{
     AstFragment, AstFragmentKind, Invocation, InvocationKind, SupportsMacroExpansion,
 };
 use rustc_hir::def::{self, DefKind, Namespace, NonMacroAttrKind};
-use rustc_hir::def_id::{CrateNum, DefId, LocalDefId};
+use rustc_hir::def_id::{DefId, LocalDefId};
 use rustc_middle::middle::stability;
 use rustc_middle::ty::{RegisteredTools, TyCtxt, Visibility};
 use rustc_session::lint::BuiltinLintDiag;
@@ -457,10 +457,6 @@ impl<'ra, 'tcx> ResolverExpand for Resolver<'ra, 'tcx> {
         self.path_accessible(expn_id, path, &[MacroNS])
     }
 
-    fn get_proc_macro_quoted_span(&self, krate: CrateNum, id: usize) -> Span {
-        self.cstore().get_proc_macro_quoted_span_untracked(krate, id, self.tcx.sess)
-    }
-
     fn declare_proc_macro(&mut self, id: NodeId) {
         self.proc_macros.push(id)
     }
diff --git a/compiler/rustc_session/src/parse.rs b/compiler/rustc_session/src/parse.rs
index 1fe521bd32d54..833a9d931e962 100644
--- a/compiler/rustc_session/src/parse.rs
+++ b/compiler/rustc_session/src/parse.rs
@@ -229,9 +229,6 @@ pub struct ParseSess {
     pub file_depinfo: Lock<FxIndexSet<Symbol>>,
     /// Whether cfg(version) should treat the current release as incomplete
     pub assume_incomplete_release: bool,
-    /// Spans passed to `proc_macro::quote_span`. Each span has a numerical
-    /// identifier represented by its position in the vector.
-    proc_macro_quoted_spans: AppendOnlyVec<Span>,
     /// Used to generate new `AttrId`s. Every `AttrId` is unique.
     pub attr_id_generator: AttrIdGenerator,
 }
@@ -266,7 +263,6 @@ impl ParseSess {
             env_depinfo: Default::default(),
             file_depinfo: Default::default(),
             assume_incomplete_release: false,
-            proc_macro_quoted_spans: Default::default(),
             attr_id_generator: AttrIdGenerator::new(),
         }
     }
@@ -325,16 +321,6 @@ impl ParseSess {
         });
     }
 
-    pub fn save_proc_macro_span(&self, span: Span) -> usize {
-        self.proc_macro_quoted_spans.push(span)
-    }
-
-    pub fn proc_macro_quoted_spans(&self) -> impl Iterator<Item = (usize, Span)> {
-        // This is equivalent to `.iter().copied().enumerate()`, but that isn't possible for
-        // AppendOnlyVec, so we resort to this scheme.
-        self.proc_macro_quoted_spans.iter_enumerated()
-    }
-
     pub fn dcx(&self) -> DiagCtxtHandle<'_> {
         self.dcx.handle()
     }
diff --git a/library/proc_macro/src/bridge/mod.rs b/library/proc_macro/src/bridge/mod.rs
index 03c3e697cfe2b..52d98a92950e8 100644
--- a/library/proc_macro/src/bridge/mod.rs
+++ b/library/proc_macro/src/bridge/mod.rs
@@ -99,8 +99,6 @@ macro_rules! with_api {
                 fn subspan($self: $S::Span, start: Bound<usize>, end: Bound<usize>) -> Option<$S::Span>;
                 fn resolved_at($self: $S::Span, at: $S::Span) -> $S::Span;
                 fn source_text($self: $S::Span) -> Option<String>;
-                fn save_span($self: $S::Span) -> usize;
-                fn recover_proc_macro_span(id: usize) -> $S::Span;
             },
             Symbol {
                 fn normalize_and_validate_ident(string: &str) -> Result<$S::Symbol, ()>;
diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs
index d9141eab5919f..0b22d61429d02 100644
--- a/library/proc_macro/src/lib.rs
+++ b/library/proc_macro/src/lib.rs
@@ -222,7 +222,7 @@ impl Default for TokenStream {
 }
 
 #[unstable(feature = "proc_macro_quote", issue = "54722")]
-pub use quote::{quote, quote_span};
+pub use quote::quote;
 
 fn tree_to_bridge_tree(
     tree: TokenTree,
@@ -572,20 +572,6 @@ impl Span {
         self.0.source_text()
     }
 
-    // Used by the implementation of `Span::quote`
-    #[doc(hidden)]
-    #[unstable(feature = "proc_macro_internals", issue = "27812")]
-    pub fn save_span(&self) -> usize {
-        self.0.save_span()
-    }
-
-    // Used by the implementation of `Span::quote`
-    #[doc(hidden)]
-    #[unstable(feature = "proc_macro_internals", issue = "27812")]
-    pub fn recover_proc_macro_span(id: usize) -> Span {
-        Span(bridge::client::Span::recover_proc_macro_span(id))
-    }
-
     diagnostic_method!(error, Level::Error);
     diagnostic_method!(warning, Level::Warning);
     diagnostic_method!(note, Level::Note);
diff --git a/library/proc_macro/src/quote.rs b/library/proc_macro/src/quote.rs
index bcb15912bb65e..a24645dca565b 100644
--- a/library/proc_macro/src/quote.rs
+++ b/library/proc_macro/src/quote.rs
@@ -67,7 +67,6 @@ pub fn quote(stream: TokenStream) -> TokenStream {
     if stream.is_empty() {
         return minimal_quote!(crate::TokenStream::new());
     }
-    let proc_macro_crate = minimal_quote!(crate);
     let mut after_dollar = false;
 
     let mut tokens = crate::TokenStream::new();
@@ -120,7 +119,7 @@ pub fn quote(stream: TokenStream) -> TokenStream {
                 };
                 minimal_quote!(crate::ToTokens::to_tokens(&crate::TokenTree::Ident((@ ctor)(
                     (@ TokenTree::from(Literal::string(literal))),
-                    (@ quote_span(proc_macro_crate.clone(), tt.span())),
+                    crate::Span::def_site(),
                 )), &mut ts);)
             }
             TokenTree::Literal(tt) => {
@@ -132,7 +131,7 @@ pub fn quote(stream: TokenStream) -> TokenStream {
                     if let (Some(crate::TokenTree::Literal(mut lit)), None) =
                         (iter.next(), iter.next())
                     {
-                        lit.set_span((@ quote_span(proc_macro_crate.clone(), tt.span())));
+                        lit.set_span(crate::Span::def_site());
                         lit
                     } else {
                         unreachable!()
@@ -154,11 +153,3 @@ pub fn quote(stream: TokenStream) -> TokenStream {
         }
     }
 }
-
-/// Quote a `Span` into a `TokenStream`.
-/// This is needed to implement a custom quoter.
-#[unstable(feature = "proc_macro_quote", issue = "54722")]
-pub fn quote_span(proc_macro_crate: TokenStream, span: Span) -> TokenStream {
-    let id = span.save_span();
-    minimal_quote!((@ proc_macro_crate ) ::Span::recover_proc_macro_span((@ TokenTree::from(Literal::usize_unsuffixed(id)))))
-}
diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
index 59293ee3f9659..8dec4904984ad 100644
--- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
+++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
@@ -265,18 +265,6 @@ impl server::Span for RaSpanServer {
     fn source_file(&mut self, span: Self::Span) -> Self::SourceFile {
         SourceFile { file_id: span.anchor.file_id.file_id() }
     }
-    fn save_span(&mut self, _span: Self::Span) -> usize {
-        // FIXME, quote is incompatible with third-party tools
-        // This is called by the quote proc-macro which is expanded when the proc-macro is compiled
-        // As such, r-a will never observe this
-        0
-    }
-    fn recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
-        // FIXME, quote is incompatible with third-party tools
-        // This is called by the expansion of quote!, r-a will observe this, but we don't have
-        // access to the spans that were encoded
-        self.call_site
-    }
     /// Recent feature, not yet in the proc_macro
     ///
     /// See PR:
diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs
index 409cf3cc78134..55d5cce7188e0 100644
--- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs
+++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs
@@ -242,12 +242,6 @@ impl server::Span for TokenIdServer {
     fn source_file(&mut self, _span: Self::Span) -> Self::SourceFile {
         SourceFile {}
     }
-    fn save_span(&mut self, _span: Self::Span) -> usize {
-        0
-    }
-    fn recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
-        self.call_site
-    }
     /// Recent feature, not yet in the proc_macro
     ///
     /// See PR:
diff --git a/tests/ui/macros/same-sequence-span.stderr b/tests/ui/macros/same-sequence-span.stderr
index 34df201f5a5c7..24275bcee99c8 100644
--- a/tests/ui/macros/same-sequence-span.stderr
+++ b/tests/ui/macros/same-sequence-span.stderr
@@ -17,8 +17,8 @@ LL |                $(= $z:tt)*
 error: `$x:expr` may be followed by `$y:tt`, which is not allowed for `expr` fragments
   --> $DIR/same-sequence-span.rs:19:1
    |
-LL | | macro_rules! manual_foo {
-   | |__________________________^not allowed after `expr` fragments
+LL | |
+   | |_^not allowed after `expr` fragments
 ...
 LL |   proc_macro_sequence::make_foo!();
    |   ^-------------------------------
diff --git a/tests/ui/proc-macro/auxiliary/custom-quote.rs b/tests/ui/proc-macro/auxiliary/custom-quote.rs
deleted file mode 100644
index bccbed8a6b492..0000000000000
--- a/tests/ui/proc-macro/auxiliary/custom-quote.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// ignore-tidy-linelength
-
-#![feature(proc_macro_quote)]
-
-extern crate proc_macro;
-use std::iter::FromIterator;
-use std::str::FromStr;
-use proc_macro::*;
-
-#[proc_macro]
-pub fn custom_quote(input: TokenStream) -> TokenStream {
-    let mut tokens: Vec<_> = input.into_iter().collect();
-    assert_eq!(tokens.len(), 1, "Unexpected input: {:?}", tokens);
-    match tokens.pop() {
-        Some(TokenTree::Ident(ident)) => {
-            assert_eq!(ident.to_string(), "my_ident");
-
-            let proc_macro_crate = TokenStream::from_str("::proc_macro").unwrap();
-            let quoted_span = proc_macro::quote_span(proc_macro_crate, ident.span());
-            let prefix = TokenStream::from_str(r#"let mut ident = proc_macro::Ident::new("my_ident", proc_macro::Span::call_site());"#).unwrap();
-            let set_span_method = TokenStream::from_str("ident.set_span").unwrap();
-            let set_span_arg = TokenStream::from(TokenTree::Group(Group::new(Delimiter::Parenthesis, quoted_span)));
-            let suffix = TokenStream::from_str(";proc_macro::TokenStream::from(proc_macro::TokenTree::Ident(ident))").unwrap();
-            let full_stream = TokenStream::from_iter([prefix, set_span_method, set_span_arg, suffix]);
-            full_stream
-        }
-        _ => unreachable!()
-    }
-}
diff --git a/tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs b/tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs
index 16ca5e3f9e2d1..98dd665984e26 100644
--- a/tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs
+++ b/tests/ui/proc-macro/auxiliary/span-from-proc-macro.rs
@@ -1,8 +1,6 @@
 #![feature(proc_macro_quote)]
-#![feature(proc_macro_internals)] // FIXME - this shouldn't be necessary
 
 extern crate proc_macro;
-extern crate custom_quote;
 
 use proc_macro::{quote, TokenStream};
 
@@ -19,13 +17,6 @@ pub fn error_from_bang(_input: TokenStream) -> TokenStream {
     expand_to_quote!()
 }
 
-#[proc_macro]
-pub fn other_error_from_bang(_input: TokenStream) -> TokenStream {
-    custom_quote::custom_quote! {
-        my_ident
-    }
-}
-
 #[proc_macro_attribute]
 pub fn error_from_attribute(_args: TokenStream, _input: TokenStream) -> TokenStream {
     quote! {
diff --git a/tests/ui/proc-macro/span-from-proc-macro.rs b/tests/ui/proc-macro/span-from-proc-macro.rs
index 4e12a695a5c09..7f2901c2c7a54 100644
--- a/tests/ui/proc-macro/span-from-proc-macro.rs
+++ b/tests/ui/proc-macro/span-from-proc-macro.rs
@@ -1,4 +1,3 @@
-//@ proc-macro: custom-quote.rs
 //@ proc-macro: span-from-proc-macro.rs
 //@ compile-flags: -Z macro-backtrace
 
@@ -13,5 +12,4 @@ struct Kept;
 
 fn main() {
     error_from_bang!(); //~ ERROR mismatched types
-    other_error_from_bang!(); //~ ERROR cannot find value `my_ident`
 }
diff --git a/tests/ui/proc-macro/span-from-proc-macro.stderr b/tests/ui/proc-macro/span-from-proc-macro.stderr
index 452c04df8779e..32e41a4543a0e 100644
--- a/tests/ui/proc-macro/span-from-proc-macro.stderr
+++ b/tests/ui/proc-macro/span-from-proc-macro.stderr
@@ -1,62 +1,47 @@
 error[E0412]: cannot find type `MissingType` in this scope
-  --> $DIR/auxiliary/span-from-proc-macro.rs:33:20
+  --> $DIR/auxiliary/span-from-proc-macro.rs:21:1
    |
 LL | pub fn error_from_attribute(_args: TokenStream, _input: TokenStream) -> TokenStream {
-   | ----------------------------------------------------------------------------------- in this expansion of `#[error_from_attribute]`
-...
-LL |             field: MissingType
-   |                    ^^^^^^^^^^^ not found in this scope
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   | |
+   | not found in this scope
+   | in this expansion of `#[error_from_attribute]`
    |
-  ::: $DIR/span-from-proc-macro.rs:8:1
+  ::: $DIR/span-from-proc-macro.rs:7:1
    |
 LL | #[error_from_attribute]
    | ----------------------- in this procedural macro expansion
 
 error[E0412]: cannot find type `OtherMissingType` in this scope
-  --> $DIR/auxiliary/span-from-proc-macro.rs:42:21
+  --> $DIR/auxiliary/span-from-proc-macro.rs:30:1
    |
 LL | pub fn error_from_derive(_input: TokenStream) -> TokenStream {
-   | ------------------------------------------------------------ in this expansion of `#[derive(ErrorFromDerive)]`
-...
-LL |             Variant(OtherMissingType)
-   |                     ^^^^^^^^^^^^^^^^ not found in this scope
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   | |
+   | not found in this scope
+   | in this expansion of `#[derive(ErrorFromDerive)]`
    |
-  ::: $DIR/span-from-proc-macro.rs:11:10
+  ::: $DIR/span-from-proc-macro.rs:10:10
    |
 LL | #[derive(ErrorFromDerive)]
    |          --------------- in this derive macro expansion
 
-error[E0425]: cannot find value `my_ident` in this scope
-  --> $DIR/auxiliary/span-from-proc-macro.rs:25:9
-   |
-LL | pub fn other_error_from_bang(_input: TokenStream) -> TokenStream {
-   | ---------------------------------------------------------------- in this expansion of `other_error_from_bang!`
-LL |     custom_quote::custom_quote! {
-LL |         my_ident
-   |         ^^^^^^^^ not found in this scope
-   |
-  ::: $DIR/span-from-proc-macro.rs:16:5
-   |
-LL |     other_error_from_bang!();
-   |     ------------------------ in this macro invocation
-
 error[E0308]: mismatched types
-  --> $DIR/auxiliary/span-from-proc-macro.rs:12:36
+  --> $DIR/auxiliary/span-from-proc-macro.rs:16:1
    |
-LL |             let bang_error: bool = 25;
-   |                             ----   ^^ expected `bool`, found integer
-   |                             |
-   |                             expected due to this
-...
 LL | pub fn error_from_bang(_input: TokenStream) -> TokenStream {
-   | ---------------------------------------------------------- in this expansion of `error_from_bang!`
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   | |
+   | expected `bool`, found integer
+   | expected due to this
+   | in this expansion of `error_from_bang!`
    |
-  ::: $DIR/span-from-proc-macro.rs:15:5
+  ::: $DIR/span-from-proc-macro.rs:14:5
    |
 LL |     error_from_bang!();
    |     ------------------ in this macro invocation
 
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
 
-Some errors have detailed explanations: E0308, E0412, E0425.
+Some errors have detailed explanations: E0308, E0412.
 For more information about an error, try `rustc --explain E0308`.