@@ -1354,9 +1354,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
13541354
13551355 for local_id in tcx. iter_local_def_id ( ) {
13561356 let def_id = local_id. to_def_id ( ) ;
1357- let def_kind = tcx. opt_def_kind ( local_id) ;
1358- let Some ( def_kind) = def_kind else { continue } ;
1359- self . tables . opt_def_kind . set_some ( def_id. index , def_kind) ;
1357+ let def_kind = tcx. def_kind ( local_id) ;
1358+ self . tables . def_kind . set_some ( def_id. index , def_kind) ;
13601359 if should_encode_span ( def_kind) {
13611360 let def_span = tcx. def_span ( local_id) ;
13621361 record ! ( self . tables. def_span[ def_id] <- def_span) ;
@@ -1393,7 +1392,13 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
13931392 if should_encode_fn_sig ( def_kind) {
13941393 record ! ( self . tables. fn_sig[ def_id] <- tcx. fn_sig( def_id) ) ;
13951394 }
1396- if should_encode_generics ( def_kind) {
1395+ // FIXME: Some anonymous constants produced by `#[rustc_legacy_const_generics]`
1396+ // do not have corresponding HIR nodes, so some queries usually making sense for
1397+ // anonymous constants will not work on them and panic. It's not clear whether it
1398+ // can cause any observable issues or not.
1399+ let anon_const_without_hir = def_kind == DefKind :: AnonConst
1400+ && tcx. hir ( ) . find ( tcx. local_def_id_to_hir_id ( local_id) ) . is_none ( ) ;
1401+ if should_encode_generics ( def_kind) && !anon_const_without_hir {
13971402 let g = tcx. generics_of ( def_id) ;
13981403 record ! ( self . tables. generics_of[ def_id] <- g) ;
13991404 record ! ( self . tables. explicit_predicates_of[ def_id] <- self . tcx. explicit_predicates_of( def_id) ) ;
@@ -1407,7 +1412,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14071412 }
14081413 }
14091414 }
1410- if should_encode_type ( tcx, local_id, def_kind) {
1415+ if should_encode_type ( tcx, local_id, def_kind) && !anon_const_without_hir {
14111416 record ! ( self . tables. type_of[ def_id] <- self . tcx. type_of( def_id) ) ;
14121417 }
14131418 if should_encode_constness ( def_kind) {
@@ -1785,7 +1790,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
17851790 self . tables . proc_macro_quoted_spans . set_some ( i, span) ;
17861791 }
17871792
1788- self . tables . opt_def_kind . set_some ( LOCAL_CRATE . as_def_id ( ) . index , DefKind :: Mod ) ;
1793+ self . tables . def_kind . set_some ( LOCAL_CRATE . as_def_id ( ) . index , DefKind :: Mod ) ;
17891794 record ! ( self . tables. def_span[ LOCAL_CRATE . as_def_id( ) ] <- tcx. def_span( LOCAL_CRATE . as_def_id( ) ) ) ;
17901795 self . encode_attrs ( LOCAL_CRATE . as_def_id ( ) . expect_local ( ) ) ;
17911796 let vis = tcx. local_visibility ( CRATE_DEF_ID ) . map_id ( |def_id| def_id. local_def_index ) ;
@@ -1833,7 +1838,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
18331838 def_key. disambiguated_data . data = DefPathData :: MacroNs ( name) ;
18341839
18351840 let def_id = id. to_def_id ( ) ;
1836- self . tables . opt_def_kind . set_some ( def_id. index , DefKind :: Macro ( macro_kind) ) ;
1841+ self . tables . def_kind . set_some ( def_id. index , DefKind :: Macro ( macro_kind) ) ;
18371842 self . tables . proc_macro . set_some ( def_id. index , macro_kind) ;
18381843 self . encode_attrs ( id) ;
18391844 record ! ( self . tables. def_keys[ def_id] <- def_key) ;
0 commit comments