@@ -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) ;
@@ -334,7 +348,9 @@ pub(crate) fn build_impls(
334348
335349 // for each implementation of an item represented by `did`, build the clean::Item for that impl
336350 for & did in tcx. inherent_impls ( did) . into_iter ( ) . flatten ( ) {
337- build_impl ( cx, did, attrs, ret) ;
351+ cx. with_param_env ( did, |cx| {
352+ build_impl ( cx, did, attrs, ret) ;
353+ } ) ;
338354 }
339355
340356 // This pretty much exists expressly for `dyn Error` traits that exist in the `alloc` crate.
@@ -347,7 +363,9 @@ pub(crate) fn build_impls(
347363 let type_ =
348364 if tcx. is_trait ( did) { SimplifiedType :: Trait ( did) } else { SimplifiedType :: Adt ( did) } ;
349365 for & did in tcx. incoherent_impls ( type_) . into_iter ( ) . flatten ( ) {
350- build_impl ( cx, did, attrs, ret) ;
366+ cx. with_param_env ( did, |cx| {
367+ build_impl ( cx, did, attrs, ret) ;
368+ } ) ;
351369 }
352370 }
353371}
@@ -549,7 +567,9 @@ pub(crate) fn build_impl(
549567 }
550568
551569 if let Some ( did) = trait_. as_ref ( ) . map ( |t| t. def_id ( ) ) {
552- record_extern_trait ( cx, did) ;
570+ cx. with_param_env ( did, |cx| {
571+ record_extern_trait ( cx, did) ;
572+ } ) ;
553573 }
554574
555575 let ( merged_attrs, cfg) = merge_attrs ( cx, load_attrs ( cx, did) , attrs) ;
0 commit comments