Skip to content

Commit 7e0afd1

Browse files
committed
early return on duplicate span lowerings
1 parent 2fcbda6 commit 7e0afd1

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

compiler/rustc_ast_lowering/src/item.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
104104
items: &[Box<Item>],
105105
spans: &ModSpans,
106106
) -> &'hir hir::Mod<'hir> {
107+
println!("{:?} {:?}", spans.inner_span, spans.inner_span.parent());
107108
self.arena.alloc(hir::Mod {
108109
spans: hir::ModSpans {
109110
inner_span: self.lower_span(spans.inner_span),

compiler/rustc_ast_lowering/src/lib.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,23 @@ struct SpanLowerer {
220220
impl SpanLowerer {
221221
fn lower(&self, span: Span) -> Span {
222222
if self.is_incremental {
223+
// early return
224+
if span.parent().is_some_and(|i| i == self.def_id) {
225+
return span;
226+
}
227+
228+
// #[cfg(debug_assertions)]
229+
// {
230+
// if !span.is_dummy()
231+
// && let Some(p) = span.parent()
232+
// {
233+
// assert!(
234+
// p != self.def_id,
235+
// "duplicate span lowering detected, parent of span {span:?} was already set to {:?}",
236+
// self.def_id
237+
// );
238+
// }
239+
// }
223240
span.with_parent(Some(self.def_id))
224241
} else {
225242
// Do not make spans relative when not using incremental compilation.

0 commit comments

Comments
 (0)