Skip to content

Commit fdfb126

Browse files
committed
Auto merge of #58376 - ljedrz:postpone_HirIdification, r=<try>
Postpone HirIdification until HirId functions are optimized Perf took a pretty big hit today and I'm suspecting that one of the HirIdification methods might be the cause, because they aren't optimized yet (some of them convert `HirId` to `NodeId` and call the old `NodeId` function for now). If this is indeed the cause, we will want to optimize these functions before using them. Can I get a try+perf run?
2 parents 57d7cfc + 5fa4351 commit fdfb126

File tree

29 files changed

+103
-99
lines changed

29 files changed

+103
-99
lines changed

src/librustc/hir/map/mod.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -934,9 +934,7 @@ impl<'hir> Map<'hir> {
934934
}
935935
}
936936

937-
pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData {
938-
let id = self.hir_to_node_id(id); // FIXME(@ljedrz): remove when possible
939-
937+
pub fn expect_variant_data(&self, id: NodeId) -> &'hir VariantData {
940938
match self.find(id) {
941939
Some(Node::Item(i)) => {
942940
match i.node {
@@ -951,9 +949,7 @@ impl<'hir> Map<'hir> {
951949
}
952950
}
953951

954-
pub fn expect_variant(&self, id: HirId) -> &'hir Variant {
955-
let id = self.hir_to_node_id(id); // FIXME(@ljedrz): remove when possible
956-
952+
pub fn expect_variant(&self, id: NodeId) -> &'hir Variant {
957953
match self.find(id) {
958954
Some(Node::Variant(variant)) => variant,
959955
_ => bug!("expected variant, found {}", self.node_to_string(id)),

src/librustc/infer/error_reporting/mod.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ use crate::hir::def_id::DefId;
5656
use crate::hir::Node;
5757
use crate::middle::region;
5858
use std::{cmp, fmt};
59+
use syntax::ast::DUMMY_NODE_ID;
5960
use syntax_pos::{Pos, Span};
6061
use crate::traits::{ObligationCause, ObligationCauseCode};
6162
use crate::ty::error::TypeError;
@@ -181,8 +182,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
181182
let cm = self.sess.source_map();
182183

183184
let scope = region.free_region_binding_scope(self);
184-
let node = self.hir().as_local_hir_id(scope).unwrap_or(hir::DUMMY_HIR_ID);
185-
let tag = match self.hir().find_by_hir_id(node) {
185+
let node = self.hir().as_local_node_id(scope).unwrap_or(DUMMY_NODE_ID);
186+
let tag = match self.hir().find(node) {
186187
Some(Node::Block(_)) | Some(Node::Expr(_)) => "body",
187188
Some(Node::Item(it)) => Self::item_scope_tag(&it),
188189
Some(Node::TraitItem(it)) => Self::trait_item_scope_tag(&it),
@@ -191,7 +192,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
191192
};
192193
let (prefix, span) = match *region {
193194
ty::ReEarlyBound(ref br) => {
194-
let mut sp = cm.def_span(self.hir().span_by_hir_id(node));
195+
let mut sp = cm.def_span(self.hir().span(node));
195196
if let Some(param) = self.hir()
196197
.get_generics(scope)
197198
.and_then(|generics| generics.get_named(&br.name))
@@ -204,7 +205,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
204205
bound_region: ty::BoundRegion::BrNamed(_, ref name),
205206
..
206207
}) => {
207-
let mut sp = cm.def_span(self.hir().span_by_hir_id(node));
208+
let mut sp = cm.def_span(self.hir().span(node));
208209
if let Some(param) = self.hir()
209210
.get_generics(scope)
210211
.and_then(|generics| generics.get_named(&name))
@@ -216,15 +217,15 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
216217
ty::ReFree(ref fr) => match fr.bound_region {
217218
ty::BrAnon(idx) => (
218219
format!("the anonymous lifetime #{} defined on", idx + 1),
219-
self.hir().span_by_hir_id(node),
220+
self.hir().span(node),
220221
),
221222
ty::BrFresh(_) => (
222223
"an anonymous lifetime defined on".to_owned(),
223-
self.hir().span_by_hir_id(node),
224+
self.hir().span(node),
224225
),
225226
_ => (
226227
format!("the lifetime {} as defined on", fr.bound_region),
227-
cm.def_span(self.hir().span_by_hir_id(node)),
228+
cm.def_span(self.hir().span(node)),
228229
),
229230
},
230231
_ => bug!(),
@@ -1450,7 +1451,8 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
14501451
format!(" for lifetime parameter `{}` in coherence check", name)
14511452
}
14521453
infer::UpvarRegion(ref upvar_id, _) => {
1453-
let var_name = self.tcx.hir().name_by_hir_id(upvar_id.var_path.hir_id);
1454+
let var_node_id = self.tcx.hir().hir_to_node_id(upvar_id.var_path.hir_id);
1455+
let var_name = self.tcx.hir().name(var_node_id);
14541456
format!(" for capture of `{}` by closure", var_name)
14551457
}
14561458
infer::NLL(..) => bug!("NLL variable found in lexical phase"),

src/librustc/infer/error_reporting/note.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
3131
"...so that reference does not outlive borrowed content");
3232
}
3333
infer::ReborrowUpvar(span, ref upvar_id) => {
34-
let var_name = self.tcx.hir().name_by_hir_id(upvar_id.var_path.hir_id);
34+
let var_node_id = self.tcx.hir().hir_to_node_id(upvar_id.var_path.hir_id);
35+
let var_name = self.tcx.hir().name(var_node_id);
3536
err.span_note(span,
3637
&format!("...so that closure can access `{}`", var_name));
3738
}
@@ -163,7 +164,8 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
163164
err
164165
}
165166
infer::ReborrowUpvar(span, ref upvar_id) => {
166-
let var_name = self.tcx.hir().name_by_hir_id(upvar_id.var_path.hir_id);
167+
let var_node_id = self.tcx.hir().hir_to_node_id(upvar_id.var_path.hir_id);
168+
let var_name = self.tcx.hir().name(var_node_id);
167169
let mut err = struct_span_err!(self.tcx.sess,
168170
span,
169171
E0313,

src/librustc/middle/reachable.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ impl<'a, 'tcx> ReachableContext<'a, 'tcx> {
177177
// Check the impl. If the generics on the self
178178
// type of the impl require inlining, this method
179179
// does too.
180-
let impl_hir_id = self.tcx.hir().as_local_hir_id(impl_did).unwrap();
181-
match self.tcx.hir().expect_item_by_hir_id(impl_hir_id).node {
180+
let impl_node_id = self.tcx.hir().as_local_node_id(impl_did).unwrap();
181+
match self.tcx.hir().expect_item(impl_node_id).node {
182182
hir::ItemKind::Impl(..) => {
183183
let generics = self.tcx.generics_of(impl_did);
184184
generics.requires_monomorphization(self.tcx)

src/librustc/middle/resolve_lifetime.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1248,12 +1248,12 @@ fn extract_labels(ctxt: &mut LifetimeContext<'_, '_>, body: &hir::Body) {
12481248
} => {
12491249
// FIXME (#24278): non-hygienic comparison
12501250
if let Some(def) = lifetimes.get(&hir::ParamName::Plain(label.modern())) {
1251-
let hir_id = tcx.hir().as_local_hir_id(def.id().unwrap()).unwrap();
1251+
let node_id = tcx.hir().as_local_node_id(def.id().unwrap()).unwrap();
12521252

12531253
signal_shadowing_problem(
12541254
tcx,
12551255
label.name,
1256-
original_lifetime(tcx.hir().span_by_hir_id(hir_id)),
1256+
original_lifetime(tcx.hir().span(node_id)),
12571257
shadower_label(label.span),
12581258
);
12591259
return;
@@ -2593,12 +2593,12 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
25932593
ref lifetimes, s, ..
25942594
} => {
25952595
if let Some(&def) = lifetimes.get(&param.name.modern()) {
2596-
let hir_id = self.tcx.hir().as_local_hir_id(def.id().unwrap()).unwrap();
2596+
let node_id = self.tcx.hir().as_local_node_id(def.id().unwrap()).unwrap();
25972597

25982598
signal_shadowing_problem(
25992599
self.tcx,
26002600
param.name.ident().name,
2601-
original_lifetime(self.tcx.hir().span_by_hir_id(hir_id)),
2601+
original_lifetime(self.tcx.hir().span(node_id)),
26022602
shadower_lifetime(&param),
26032603
);
26042604
return;

src/librustc/traits/error_reporting.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1035,8 +1035,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
10351035
).collect::<Vec<_>>())
10361036
}
10371037
Node::StructCtor(ref variant_data) => {
1038-
(self.tcx.sess.source_map().def_span(
1039-
self.tcx.hir().span_by_hir_id(variant_data.hir_id())),
1038+
(self.tcx.sess.source_map().def_span(self.tcx.hir().span(variant_data.id())),
10401039
vec![ArgKind::empty(); variant_data.fields().len()])
10411040
}
10421041
_ => panic!("non-FnLike node found: {:?}", node),

src/librustc/traits/util.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -525,9 +525,9 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
525525
}
526526

527527
pub fn impl_is_default(self, node_item_def_id: DefId) -> bool {
528-
match self.hir().as_local_hir_id(node_item_def_id) {
529-
Some(hir_id) => {
530-
let item = self.hir().expect_item_by_hir_id(hir_id);
528+
match self.hir().as_local_node_id(node_item_def_id) {
529+
Some(node_id) => {
530+
let item = self.hir().expect_item(node_id);
531531
if let hir::ItemKind::Impl(_, _, defaultness, ..) = item.node {
532532
defaultness.is_default()
533533
} else {

src/librustc/ty/item_path.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
462462
// only occur very early in the compiler pipeline.
463463
let parent_def_id = self.parent_def_id(impl_def_id).unwrap();
464464
self.push_item_path(buffer, parent_def_id, pushed_prelude_crate);
465-
let hir_id = self.hir().as_local_hir_id(impl_def_id).unwrap();
466-
let item = self.hir().expect_item_by_hir_id(hir_id);
465+
let node_id = self.hir().as_local_node_id(impl_def_id).unwrap();
466+
let item = self.hir().expect_item(node_id);
467467
let span_str = self.sess.source_map().span_to_string(item.span);
468468
buffer.push(&format!("<impl at {}>", span_str));
469469
}

src/librustc/ty/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -2939,8 +2939,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
29392939

29402940
/// Get the attributes of a definition.
29412941
pub fn get_attrs(self, did: DefId) -> Attributes<'gcx> {
2942-
if let Some(id) = self.hir().as_local_hir_id(did) {
2943-
Attributes::Borrowed(self.hir().attrs_by_hir_id(id))
2942+
if let Some(id) = self.hir().as_local_node_id(did) {
2943+
Attributes::Borrowed(self.hir().attrs(id))
29442944
} else {
29452945
Attributes::Owned(self.item_attrs(did))
29462946
}
@@ -2991,8 +2991,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
29912991
/// with the name of the crate containing the impl.
29922992
pub fn span_of_impl(self, impl_did: DefId) -> Result<Span, Symbol> {
29932993
if impl_did.is_local() {
2994-
let hir_id = self.hir().as_local_hir_id(impl_did).unwrap();
2995-
Ok(self.hir().span_by_hir_id(hir_id))
2994+
let node_id = self.hir().as_local_node_id(impl_did).unwrap();
2995+
Ok(self.hir().span(node_id))
29962996
} else {
29972997
Err(self.crate_name(impl_did.krate))
29982998
}
@@ -3110,8 +3110,8 @@ fn adt_sized_constraint<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
31103110
fn associated_item_def_ids<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
31113111
def_id: DefId)
31123112
-> Lrc<Vec<DefId>> {
3113-
let id = tcx.hir().as_local_hir_id(def_id).unwrap();
3114-
let item = tcx.hir().expect_item_by_hir_id(id);
3113+
let id = tcx.hir().as_local_node_id(def_id).unwrap();
3114+
let item = tcx.hir().expect_item(id);
31153115
let vec: Vec<_> = match item.node {
31163116
hir::ItemKind::Trait(.., ref trait_item_refs) => {
31173117
trait_item_refs.iter()

src/librustc/util/ppaux.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ impl fmt::Debug for ty::UpvarId {
802802
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
803803
write!(f, "UpvarId({:?};`{}`;{:?})",
804804
self.var_path.hir_id,
805-
ty::tls::with(|tcx| tcx.hir().name_by_hir_id(self.var_path.hir_id)),
805+
ty::tls::with(|tcx| tcx.hir().name(tcx.hir().hir_to_node_id(self.var_path.hir_id))),
806806
self.closure_expr_id)
807807
}
808808
}

src/librustc_metadata/encoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,7 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
674674
let def_id = field.did;
675675
debug!("IsolatedEncoder::encode_field({:?})", def_id);
676676

677-
let variant_id = tcx.hir().as_local_hir_id(variant.did).unwrap();
677+
let variant_id = tcx.hir().as_local_node_id(variant.did).unwrap();
678678
let variant_data = tcx.hir().expect_variant_data(variant_id);
679679

680680
Entry {

src/librustc_mir/borrow_check/error_reporting.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -833,13 +833,13 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
833833
format!("`{}` would have to be valid for `{}`...", name, region_name),
834834
);
835835

836-
if let Some(fn_hir_id) = self.infcx.tcx.hir().as_local_hir_id(self.mir_def_id) {
836+
if let Some(fn_node_id) = self.infcx.tcx.hir().as_local_node_id(self.mir_def_id) {
837837
err.span_label(
838838
drop_span,
839839
format!(
840840
"...but `{}` will be dropped here, when the function `{}` returns",
841841
name,
842-
self.infcx.tcx.hir().name_by_hir_id(fn_hir_id),
842+
self.infcx.tcx.hir().name(fn_node_id),
843843
),
844844
);
845845

src/librustc_mir/borrow_check/move_errors.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,9 @@ impl<'a, 'gcx, 'tcx> MirBorrowckCtxt<'a, 'gcx, 'tcx> {
308308
let upvar_decl = &self.mir.upvar_decls[field.index()];
309309
let upvar_hir_id =
310310
upvar_decl.var_hir_id.assert_crate_local();
311-
let upvar_span = self.infcx.tcx.hir().span_by_hir_id(
312-
upvar_hir_id);
311+
let upvar_node_id =
312+
self.infcx.tcx.hir().hir_to_node_id(upvar_hir_id);
313+
let upvar_span = self.infcx.tcx.hir().span(upvar_node_id);
313314
diag.span_label(upvar_span, "captured outer variable");
314315
break;
315316
}

src/librustc_mir/borrow_check/nll/region_infer/error_reporting/region_name.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use rustc::ty::subst::{Substs, UnpackedKind};
1010
use rustc::ty::{self, RegionKind, RegionVid, Ty, TyCtxt};
1111
use rustc::util::ppaux::RegionHighlightMode;
1212
use rustc_errors::DiagnosticBuilder;
13-
use syntax::ast::Name;
13+
use syntax::ast::{Name, DUMMY_NODE_ID};
1414
use syntax::symbol::keywords;
1515
use syntax_pos::Span;
1616
use syntax_pos::symbol::InternedString;
@@ -293,9 +293,9 @@ impl<'tcx> RegionInferenceContext<'tcx> {
293293
name: &InternedString,
294294
) -> Span {
295295
let scope = error_region.free_region_binding_scope(tcx);
296-
let node = tcx.hir().as_local_hir_id(scope).unwrap_or(hir::DUMMY_HIR_ID);
296+
let node = tcx.hir().as_local_node_id(scope).unwrap_or(DUMMY_NODE_ID);
297297

298-
let span = tcx.sess.source_map().def_span(tcx.hir().span_by_hir_id(node));
298+
let span = tcx.sess.source_map().def_span(tcx.hir().span(node));
299299
if let Some(param) = tcx.hir()
300300
.get_generics(scope)
301301
.and_then(|generics| generics.get_named(name))

src/librustc_mir/borrow_check/nll/region_infer/error_reporting/var_name.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ impl<'tcx> RegionInferenceContext<'tcx> {
7171
upvar_index: usize,
7272
) -> (Symbol, Span) {
7373
let upvar_hir_id = mir.upvar_decls[upvar_index].var_hir_id.assert_crate_local();
74-
debug!("get_upvar_name_and_span_for_region: upvar_hir_id={:?}", upvar_hir_id);
74+
let upvar_node_id = tcx.hir().hir_to_node_id(upvar_hir_id);
75+
debug!("get_upvar_name_and_span_for_region: upvar_node_id={:?}", upvar_node_id);
7576

76-
let upvar_name = tcx.hir().name_by_hir_id(upvar_hir_id);
77-
let upvar_span = tcx.hir().span_by_hir_id(upvar_hir_id);
77+
let upvar_name = tcx.hir().name(upvar_node_id);
78+
let upvar_span = tcx.hir().span(upvar_node_id);
7879
debug!("get_upvar_name_and_span_for_region: upvar_name={:?} upvar_span={:?}",
7980
upvar_name, upvar_span);
8081

src/librustc_mir/borrow_check/nll/universal_regions.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -771,8 +771,9 @@ fn for_each_late_bound_region_defined_on<'tcx>(
771771
owner: fn_def_id.index,
772772
local_id: *late_bound,
773773
};
774-
let name = tcx.hir().name_by_hir_id(hir_id).as_interned_str();
775-
let region_def_id = tcx.hir().local_def_id_from_hir_id(hir_id);
774+
let region_node_id = tcx.hir().hir_to_node_id(hir_id);
775+
let name = tcx.hir().name(region_node_id).as_interned_str();
776+
let region_def_id = tcx.hir().local_def_id(region_node_id);
776777
let liberated_region = tcx.mk_region(ty::ReFree(ty::FreeRegion {
777778
scope: fn_def_id,
778779
bound_region: ty::BoundRegion::BrNamed(region_def_id, name),

src/librustc_mir/build/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ pub fn mir_build<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> Mir<'t
6464
) => {
6565
(*body_id, ty.span)
6666
}
67-
Node::AnonConst(hir::AnonConst { body, hir_id, .. }) => {
68-
(*body, tcx.hir().span_by_hir_id(*hir_id))
67+
Node::AnonConst(hir::AnonConst { body, id, .. }) => {
68+
(*body, tcx.hir().span(*id))
6969
}
7070

7171
_ => span_bug!(tcx.hir().span(id), "can't build MIR for {:?}", def_id),
@@ -114,7 +114,7 @@ pub fn mir_build<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> Mir<'t
114114
let self_arg;
115115
if let Some(ref fn_decl) = tcx.hir().fn_decl(owner_id) {
116116
let ty_hir_id = fn_decl.inputs[index].hir_id;
117-
let ty_span = tcx.hir().span_by_hir_id(ty_hir_id);
117+
let ty_span = tcx.hir().span(tcx.hir().hir_to_node_id(ty_hir_id));
118118
opt_ty_info = Some(ty_span);
119119
self_arg = if index == 0 && fn_decl.implicit_self.has_implicit_self() {
120120
match fn_decl.implicit_self {

src/librustc_mir/hair/cx/block.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fn mirror_stmts<'a, 'gcx, 'tcx>(cx: &mut Cx<'a, 'gcx, 'tcx>,
4848
for (index, stmt) in stmts.iter().enumerate() {
4949
let hir_id = stmt.hir_id;
5050
let opt_dxn_ext = cx.region_scope_tree.opt_destruction_scope(hir_id.local_id);
51-
let stmt_span = StatementSpan(cx.tcx.hir().span_by_hir_id(hir_id));
51+
let stmt_span = StatementSpan(cx.tcx.hir().span(stmt.id));
5252
match stmt.node {
5353
hir::StmtKind::Expr(ref expr) |
5454
hir::StmtKind::Semi(ref expr) => {

src/librustc_mir/monomorphize/collector.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -450,8 +450,8 @@ fn check_recursion_limit<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
450450
if recursion_depth > *tcx.sess.recursion_limit.get() {
451451
let error = format!("reached the recursion limit while instantiating `{}`",
452452
instance);
453-
if let Some(hir_id) = tcx.hir().as_local_hir_id(def_id) {
454-
tcx.sess.span_fatal(tcx.hir().span_by_hir_id(hir_id), &error);
453+
if let Some(node_id) = tcx.hir().as_local_node_id(def_id) {
454+
tcx.sess.span_fatal(tcx.hir().span(node_id), &error);
455455
} else {
456456
tcx.sess.fatal(&error);
457457
}
@@ -482,8 +482,8 @@ fn check_type_length_limit<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
482482
let instance_name = instance.to_string();
483483
let msg = format!("reached the type-length limit while instantiating `{:.64}...`",
484484
instance_name);
485-
let mut diag = if let Some(hir_id) = tcx.hir().as_local_hir_id(instance.def_id()) {
486-
tcx.sess.struct_span_fatal(tcx.hir().span_by_hir_id(hir_id), &msg)
485+
let mut diag = if let Some(node_id) = tcx.hir().as_local_node_id(instance.def_id()) {
486+
tcx.sess.struct_span_fatal(tcx.hir().span(node_id), &msg)
487487
} else {
488488
tcx.sess.struct_fatal(&msg)
489489
};

0 commit comments

Comments
 (0)