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);

`