Auto merge of #120619 - compiler-errors:param, r= · rust-lang/rust@1a2b8c3 (original) (raw)
`@@ -65,37 +65,49 @@ pub(crate) fn try_inline(
`
65
65
`let kind = match res {
`
66
66
`Res::Def(DefKind::Trait, did) => {
`
67
67
`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
`+
})
`
70
72
`}
`
71
73
`Res::Def(DefKind::Fn, did) => {
`
72
74
`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)))
`
74
76
`}
`
75
77
`Res::Def(DefKind::Struct, did) => {
`
76
78
`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
`+
})
`
79
83
`}
`
80
84
`Res::Def(DefKind::Union, did) => {
`
81
85
`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
`+
})
`
84
90
`}
`
85
91
`Res::Def(DefKind::TyAlias, did) => {
`
86
92
`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
`+
})
`
89
97
`}
`
90
98
`Res::Def(DefKind::Enum, did) => {
`
91
99
`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
`+
})
`
94
104
`}
`
95
105
`Res::Def(DefKind::ForeignTy, did) => {
`
96
106
`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
`+
})
`
99
111
`}
`
100
112
`// Never inline enum variants but leave them shown as re-exports.
`
101
113
`Res::Def(DefKind::Variant, _) => return None,
`
`@@ -108,11 +120,13 @@ pub(crate) fn try_inline(
`
108
120
`}
`
109
121
`Res::Def(DefKind::Static(_), did) => {
`
110
122
`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
`+
})
`
112
126
`}
`
113
127
`Res::Def(DefKind::Const, did) => {
`
114
128
`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)))
`
116
130
`}
`
117
131
`Res::Def(DefKind::Macro(kind), did) => {
`
118
132
`let mac = build_macro(cx, did, name, import_def_id, kind);
`
`@@ -313,7 +327,9 @@ pub(crate) fn build_impls(
`
313
327
``
314
328
`` // for each implementation of an item represented by did
, build the clean::Item for that impl
``
315
329
`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
`+
});
`
317
333
`}
`
318
334
``
319
335
`` // This pretty much exists expressly for dyn Error
traits that exist in the alloc
crate.
``
`@@ -326,7 +342,9 @@ pub(crate) fn build_impls(
`
326
342
`let type_ =
`
327
343
`if tcx.is_trait(did) { SimplifiedType::Trait(did) } else { SimplifiedType::Adt(did) };
`
328
344
`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
`+
});
`
330
348
`}
`
331
349
`}
`
332
350
`}
`
`@@ -528,7 +546,9 @@ pub(crate) fn build_impl(
`
528
546
`}
`
529
547
``
530
548
`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
`+
});
`
532
552
`}
`
533
553
``
534
554
`let (merged_attrs, cfg) = merge_attrs(cx, load_attrs(cx, did), attrs);
`