@@ -65,37 +65,49 @@ pub(crate) fn try_inline(
6565 let kind = match res {
6666 Res :: Def ( DefKind :: Trait , did) => {
6767 record_extern_fqn ( cx, did, ItemType :: Trait ) ;
68- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
69- clean:: TraitItem ( Box :: new ( build_external_trait ( cx, did) ) )
68+ cx. with_param_env ( did, |cx| {
69+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
70+ clean:: TraitItem ( Box :: new ( build_external_trait ( cx, did) ) )
71+ } )
7072 }
7173 Res :: Def ( DefKind :: Fn , did) => {
7274 record_extern_fqn ( cx, did, ItemType :: Function ) ;
73- clean:: FunctionItem ( build_external_function ( cx, did) )
75+ cx . with_param_env ( did , |cx| clean:: FunctionItem ( build_external_function ( cx, did) ) )
7476 }
7577 Res :: Def ( DefKind :: Struct , did) => {
7678 record_extern_fqn ( cx, did, ItemType :: Struct ) ;
77- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
78- clean:: StructItem ( build_struct ( cx, did) )
79+ cx. with_param_env ( did, |cx| {
80+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
81+ clean:: StructItem ( build_struct ( cx, did) )
82+ } )
7983 }
8084 Res :: Def ( DefKind :: Union , did) => {
8185 record_extern_fqn ( cx, did, ItemType :: Union ) ;
82- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
83- clean:: UnionItem ( build_union ( cx, did) )
86+ cx. with_param_env ( did, |cx| {
87+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
88+ clean:: UnionItem ( build_union ( cx, did) )
89+ } )
8490 }
8591 Res :: Def ( DefKind :: TyAlias , did) => {
8692 record_extern_fqn ( cx, did, ItemType :: TypeAlias ) ;
87- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
88- clean:: TypeAliasItem ( build_type_alias ( cx, did, & mut ret) )
93+ cx. with_param_env ( did, |cx| {
94+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
95+ clean:: TypeAliasItem ( build_type_alias ( cx, did, & mut ret) )
96+ } )
8997 }
9098 Res :: Def ( DefKind :: Enum , did) => {
9199 record_extern_fqn ( cx, did, ItemType :: Enum ) ;
92- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
93- clean:: EnumItem ( build_enum ( cx, did) )
100+ cx. with_param_env ( did, |cx| {
101+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
102+ clean:: EnumItem ( build_enum ( cx, did) )
103+ } )
94104 }
95105 Res :: Def ( DefKind :: ForeignTy , did) => {
96106 record_extern_fqn ( cx, did, ItemType :: ForeignType ) ;
97- build_impls ( cx, did, attrs_without_docs, & mut ret) ;
98- clean:: ForeignTypeItem
107+ cx. with_param_env ( did, |cx| {
108+ build_impls ( cx, did, attrs_without_docs, & mut ret) ;
109+ clean:: ForeignTypeItem
110+ } )
99111 }
100112 // Never inline enum variants but leave them shown as re-exports.
101113 Res :: Def ( DefKind :: Variant , _) => return None ,
@@ -108,11 +120,13 @@ pub(crate) fn try_inline(
108120 }
109121 Res :: Def ( DefKind :: Static ( _) , did) => {
110122 record_extern_fqn ( cx, did, ItemType :: Static ) ;
111- clean:: StaticItem ( build_static ( cx, did, cx. tcx . is_mutable_static ( did) ) )
123+ cx. with_param_env ( did, |cx| {
124+ clean:: StaticItem ( build_static ( cx, did, cx. tcx . is_mutable_static ( did) ) )
125+ } )
112126 }
113127 Res :: Def ( DefKind :: Const , did) => {
114128 record_extern_fqn ( cx, did, ItemType :: Constant ) ;
115- clean:: ConstantItem ( build_const ( cx, did) )
129+ cx . with_param_env ( did , |cx| clean:: ConstantItem ( build_const ( cx, did) ) )
116130 }
117131 Res :: Def ( DefKind :: Macro ( kind) , did) => {
118132 let mac = build_macro ( cx, did, name, import_def_id, kind) ;
@@ -313,7 +327,9 @@ pub(crate) fn build_impls(
313327
314328 // for each implementation of an item represented by `did`, build the clean::Item for that impl
315329 for & did in tcx. inherent_impls ( did) . into_iter ( ) . flatten ( ) {
316- build_impl ( cx, did, attrs, ret) ;
330+ cx. with_param_env ( did, |cx| {
331+ build_impl ( cx, did, attrs, ret) ;
332+ } ) ;
317333 }
318334
319335 // This pretty much exists expressly for `dyn Error` traits that exist in the `alloc` crate.
@@ -326,7 +342,9 @@ pub(crate) fn build_impls(
326342 let type_ =
327343 if tcx. is_trait ( did) { SimplifiedType :: Trait ( did) } else { SimplifiedType :: Adt ( did) } ;
328344 for & did in tcx. incoherent_impls ( type_) . into_iter ( ) . flatten ( ) {
329- build_impl ( cx, did, attrs, ret) ;
345+ cx. with_param_env ( did, |cx| {
346+ build_impl ( cx, did, attrs, ret) ;
347+ } ) ;
330348 }
331349 }
332350}
@@ -528,7 +546,9 @@ pub(crate) fn build_impl(
528546 }
529547
530548 if let Some ( did) = trait_. as_ref ( ) . map ( |t| t. def_id ( ) ) {
531- record_extern_trait ( cx, did) ;
549+ cx. with_param_env ( did, |cx| {
550+ record_extern_trait ( cx, did) ;
551+ } ) ;
532552 }
533553
534554 let ( merged_attrs, cfg) = merge_attrs ( cx, load_attrs ( cx, did) , attrs) ;
0 commit comments