Skip to content

Commit 374173c

Browse files
TypeWellFormedInEnv
1 parent fbdef58 commit 374173c

File tree

26 files changed

+75
-74
lines changed

26 files changed

+75
-74
lines changed

compiler/rustc_hir_analysis/src/astconv/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,8 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
965965
ty::ClauseKind::RegionOutlives(_)
966966
| ty::ClauseKind::ConstArgHasType(..)
967967
| ty::ClauseKind::WellFormed(_)
968-
| ty::ClauseKind::ConstEvaluatable(_) => {
968+
| ty::ClauseKind::ConstEvaluatable(_)
969+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => {
969970
bug!()
970971
}
971972
}

compiler/rustc_hir_analysis/src/impl_wf_check/min_specialization.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,6 @@ fn trait_predicate_kind<'tcx>(
554554
| ty::PredicateKind::Clause(ty::ClauseKind::ConstEvaluatable(..))
555555
| ty::PredicateKind::ConstEquate(..)
556556
| ty::PredicateKind::Ambiguous
557-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => None,
557+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => None,
558558
}
559559
}

compiler/rustc_hir_analysis/src/outlives/explicit.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ impl<'tcx> ExplicitPredicatesMap<'tcx> {
5353
| ty::ClauseKind::Projection(_)
5454
| ty::ClauseKind::ConstArgHasType(_, _)
5555
| ty::ClauseKind::WellFormed(_)
56-
| ty::ClauseKind::ConstEvaluatable(_) => {}
56+
| ty::ClauseKind::ConstEvaluatable(_)
57+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => {}
5758
}
5859
}
5960

compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
683683
// inference variable.
684684
| ty::PredicateKind::ClosureKind(..)
685685
| ty::PredicateKind::Ambiguous
686-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => None,
686+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => None,
687687
},
688688
)
689689
}

compiler/rustc_hir_typeck/src/method/probe.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,8 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
847847
| ty::ClauseKind::Projection(_)
848848
| ty::ClauseKind::ConstArgHasType(_, _)
849849
| ty::ClauseKind::WellFormed(_)
850-
| ty::ClauseKind::ConstEvaluatable(_) => None,
850+
| ty::ClauseKind::ConstEvaluatable(_)
851+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => None,
851852
}
852853
});
853854

compiler/rustc_infer/src/infer/outlives/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ pub fn explicit_outlives_bounds<'tcx>(
3131
| ty::ClauseKind::Projection(_)
3232
| ty::ClauseKind::ConstArgHasType(_, _)
3333
| ty::ClauseKind::WellFormed(_)
34-
| ty::ClauseKind::ConstEvaluatable(_) => None,
34+
| ty::ClauseKind::ConstEvaluatable(_)
35+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => None,
3536
})
3637
}
3738

compiler/rustc_infer/src/traits/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ impl<'tcx, O: Elaboratable<'tcx>> Elaborator<'tcx, O> {
368368
.map(|predicate| elaboratable.child(predicate)),
369369
);
370370
}
371-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
371+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
372372
// Nothing to elaborate
373373
}
374374
ty::PredicateKind::Ambiguous => {}

compiler/rustc_lint/src/builtin.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1610,7 +1610,8 @@ impl<'tcx> LateLintPass<'tcx> for TrivialConstraints {
16101610
// Ignore bounds that a user can't type
16111611
| ClauseKind::WellFormed(..)
16121612
// FIXME(generic_const_exprs): `ConstEvaluatable` can be written
1613-
| ClauseKind::ConstEvaluatable(..) => continue,
1613+
| ClauseKind::ConstEvaluatable(..)
1614+
| ClauseKind::TypeWellFormedFromEnv(_) => continue,
16141615
};
16151616
if predicate.is_global() {
16161617
cx.emit_spanned_lint(

compiler/rustc_middle/src/ty/flags.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ impl FlagComputation {
287287
self.add_const(expected);
288288
self.add_const(found);
289289
}
290-
ty::PredicateKind::TypeWellFormedFromEnv(ty) => {
290+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(ty)) => {
291291
self.add_ty(ty);
292292
}
293293
ty::PredicateKind::Ambiguous => {}

compiler/rustc_middle/src/ty/mod.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ impl<'tcx> Predicate<'tcx> {
555555
| PredicateKind::Clause(ClauseKind::ConstEvaluatable(_))
556556
| PredicateKind::ConstEquate(_, _)
557557
| PredicateKind::Ambiguous
558-
| PredicateKind::TypeWellFormedFromEnv(_) => true,
558+
| PredicateKind::Clause(ClauseKind::TypeWellFormedFromEnv(_)) => true,
559559
}
560560
}
561561
}
@@ -661,6 +661,11 @@ pub enum ClauseKind<'tcx> {
661661

662662
/// Constant initializer must evaluate successfully.
663663
ConstEvaluatable(ty::Const<'tcx>),
664+
665+
/// Represents a type found in the environment that we can use for implied bounds.
666+
///
667+
/// Only used for Chalk.
668+
TypeWellFormedFromEnv(Ty<'tcx>),
664669
}
665670

666671
#[derive(Clone, Copy, PartialEq, Eq, Hash, TyEncodable, TyDecodable)]
@@ -697,11 +702,6 @@ pub enum PredicateKind<'tcx> {
697702
/// Constants must be equal. The first component is the const that is expected.
698703
ConstEquate(Const<'tcx>, Const<'tcx>),
699704

700-
/// Represents a type found in the environment that we can use for implied bounds.
701-
///
702-
/// Only used for Chalk.
703-
TypeWellFormedFromEnv(Ty<'tcx>),
704-
705705
/// A marker predicate that is always ambiguous.
706706
/// Used for coherence to mark opaque types as possibly equal to each other but ambiguous.
707707
Ambiguous,
@@ -1425,7 +1425,7 @@ impl<'tcx> Predicate<'tcx> {
14251425
| PredicateKind::Clause(ClauseKind::ConstEvaluatable(..))
14261426
| PredicateKind::ConstEquate(..)
14271427
| PredicateKind::Ambiguous
1428-
| PredicateKind::TypeWellFormedFromEnv(..) => None,
1428+
| PredicateKind::Clause(ClauseKind::TypeWellFormedFromEnv(..)) => None,
14291429
}
14301430
}
14311431

@@ -1446,7 +1446,7 @@ impl<'tcx> Predicate<'tcx> {
14461446
| PredicateKind::Clause(ClauseKind::ConstEvaluatable(..))
14471447
| PredicateKind::ConstEquate(..)
14481448
| PredicateKind::Ambiguous
1449-
| PredicateKind::TypeWellFormedFromEnv(..) => None,
1449+
| PredicateKind::Clause(ClauseKind::TypeWellFormedFromEnv(..)) => None,
14501450
}
14511451
}
14521452

@@ -1467,7 +1467,7 @@ impl<'tcx> Predicate<'tcx> {
14671467
| PredicateKind::Clause(ClauseKind::ConstEvaluatable(..))
14681468
| PredicateKind::ConstEquate(..)
14691469
| PredicateKind::Ambiguous
1470-
| PredicateKind::TypeWellFormedFromEnv(..) => None,
1470+
| PredicateKind::Clause(ClauseKind::TypeWellFormedFromEnv(..)) => None,
14711471
}
14721472
}
14731473

@@ -1483,7 +1483,7 @@ impl<'tcx> Predicate<'tcx> {
14831483
pub fn expect_clause(self) -> Clause<'tcx> {
14841484
match self.kind().skip_binder() {
14851485
PredicateKind::Clause(..) => Clause(self.0),
1486-
_ => bug!(),
1486+
_ => bug!("{self} is not a clause"),
14871487
}
14881488
}
14891489
}

compiler/rustc_middle/src/ty/print/pretty.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2883,6 +2883,9 @@ define_print_and_forward_display! {
28832883
ty::ClauseKind::ConstEvaluatable(ct) => {
28842884
p!("the constant `", print(ct), "` can be evaluated")
28852885
}
2886+
ty::ClauseKind::TypeWellFormedFromEnv(ty) => {
2887+
p!("the type `", print(ty), "` is found in the environment")
2888+
}
28862889
}
28872890
}
28882891

@@ -2904,9 +2907,6 @@ define_print_and_forward_display! {
29042907
ty::PredicateKind::ConstEquate(c1, c2) => {
29052908
p!("the constant `", print(c1), "` equals `", print(c2), "`")
29062909
}
2907-
ty::PredicateKind::TypeWellFormedFromEnv(ty) => {
2908-
p!("the type `", print(ty), "` is found in the environment")
2909-
}
29102910
ty::PredicateKind::Ambiguous => p!("ambiguous"),
29112911
ty::PredicateKind::AliasRelate(t1, t2, dir) => p!(print(t1), write(" {} ", dir), print(t2)),
29122912
}

compiler/rustc_middle/src/ty/structural_impls.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,9 @@ impl<'tcx> fmt::Debug for ty::ClauseKind<'tcx> {
189189
ty::ClauseKind::ConstEvaluatable(ct) => {
190190
write!(f, "ConstEvaluatable({ct:?})")
191191
}
192+
ty::ClauseKind::TypeWellFormedFromEnv(ty) => {
193+
write!(f, "TypeWellFormedFromEnv({:?})", ty)
194+
}
192195
}
193196
}
194197
}
@@ -206,9 +209,6 @@ impl<'tcx> fmt::Debug for ty::PredicateKind<'tcx> {
206209
write!(f, "ClosureKind({:?}, {:?}, {:?})", closure_def_id, closure_substs, kind)
207210
}
208211
ty::PredicateKind::ConstEquate(c1, c2) => write!(f, "ConstEquate({:?}, {:?})", c1, c2),
209-
ty::PredicateKind::TypeWellFormedFromEnv(ty) => {
210-
write!(f, "TypeWellFormedFromEnv({:?})", ty)
211-
}
212212
ty::PredicateKind::Ambiguous => write!(f, "Ambiguous"),
213213
ty::PredicateKind::AliasRelate(t1, t2, dir) => {
214214
write!(f, "AliasRelate({t1:?}, {dir:?}, {t2:?})")

compiler/rustc_privacy/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ where
182182
}
183183
ty::ClauseKind::ConstEvaluatable(ct) => ct.visit_with(self),
184184
ty::ClauseKind::WellFormed(arg) => arg.visit_with(self),
185+
ty::ClauseKind::TypeWellFormedFromEnv(_) => bug!("unexpected clause: {clause}"),
185186
}
186187
}
187188

compiler/rustc_trait_selection/src/solve/eval_ctxt.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
395395
ty::PredicateKind::ConstEquate(_, _) => {
396396
bug!("ConstEquate should not be emitted when `-Ztrait-solver=next` is active")
397397
}
398-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
398+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
399399
bug!("TypeWellFormedFromEnv is only used for Chalk")
400400
}
401401
ty::PredicateKind::AliasRelate(lhs, rhs, direction) => self

compiler/rustc_trait_selection/src/solve/fulfill.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentCtxt<'tcx> {
132132
SelectionError::Unimplemented,
133133
)
134134
}
135-
ty::PredicateKind::ConstEquate(..)
136-
| ty::PredicateKind::TypeWellFormedFromEnv(_) => {
135+
ty::PredicateKind::ConstEquate(..) => {
137136
bug!("unexpected goal: {goal:?}")
138137
}
139138
},

compiler/rustc_trait_selection/src/traits/auto_trait.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,7 @@ impl<'tcx> AutoTraitFinder<'tcx> {
836836
// FIXME(generic_const_exprs): you can absolutely add this as a where clauses
837837
| ty::PredicateKind::Clause(ty::ClauseKind::ConstEvaluatable(..))
838838
| ty::PredicateKind::Coerce(..) => {}
839-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
839+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
840840
bug!("predicate should only exist in the environment: {bound_predicate:?}")
841841
}
842842
ty::PredicateKind::Ambiguous => return false,

compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1094,10 +1094,12 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
10941094

10951095
ty::PredicateKind::Ambiguous => span_bug!(span, "ambiguous"),
10961096

1097-
ty::PredicateKind::TypeWellFormedFromEnv(..) => span_bug!(
1098-
span,
1099-
"TypeWellFormedFromEnv predicate should only exist in the environment"
1100-
),
1097+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
1098+
span_bug!(
1099+
span,
1100+
"TypeWellFormedFromEnv predicate should only exist in the environment"
1101+
)
1102+
}
11011103

11021104
ty::PredicateKind::AliasRelate(..) => span_bug!(
11031105
span,

compiler/rustc_trait_selection/src/traits/fulfill.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ impl<'a, 'tcx> ObligationProcessor for FulfillProcessor<'a, 'tcx> {
366366
ProcessResult::Changed(mk_pending(vec![obligation.with(infcx.tcx, pred)]))
367367
}
368368
ty::PredicateKind::Ambiguous => ProcessResult::Unchanged,
369-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
369+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
370370
bug!("TypeWellFormedFromEnv is only used for Chalk")
371371
}
372372
ty::PredicateKind::AliasRelate(..) => {
@@ -634,7 +634,7 @@ impl<'a, 'tcx> ObligationProcessor for FulfillProcessor<'a, 'tcx> {
634634
}
635635
}
636636
ty::PredicateKind::Ambiguous => ProcessResult::Unchanged,
637-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
637+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
638638
bug!("TypeWellFormedFromEnv is only used for Chalk")
639639
}
640640
ty::PredicateKind::AliasRelate(..) => {

compiler/rustc_trait_selection/src/traits/object_safety.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,8 @@ fn predicate_references_self<'tcx>(
310310
| ty::ClauseKind::TypeOutlives(..)
311311
| ty::ClauseKind::RegionOutlives(..)
312312
// FIXME(generic_const_exprs): this can mention `Self`
313-
| ty::ClauseKind::ConstEvaluatable(..) => None,
313+
| ty::ClauseKind::ConstEvaluatable(..)
314+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => None,
314315
}
315316
}
316317

@@ -350,7 +351,8 @@ fn generics_require_sized_self(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
350351
| ty::ClauseKind::Projection(_)
351352
| ty::ClauseKind::ConstArgHasType(_, _)
352353
| ty::ClauseKind::WellFormed(_)
353-
| ty::ClauseKind::ConstEvaluatable(_) => false,
354+
| ty::ClauseKind::ConstEvaluatable(_)
355+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => false,
354356
})
355357
}
356358

compiler/rustc_trait_selection/src/traits/query/type_op/implied_outlives_bounds.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ pub fn compute_implied_outlives_bounds_inner<'tcx>(
134134
| ty::PredicateKind::ConstEquate(..)
135135
| ty::PredicateKind::Ambiguous
136136
| ty::PredicateKind::AliasRelate(..)
137-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => {}
137+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {}
138138

139139
// We need to search through *all* WellFormed predicates
140140
ty::PredicateKind::Clause(ty::ClauseKind::WellFormed(arg)) => {

compiler/rustc_trait_selection/src/traits/select/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -967,7 +967,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
967967
}
968968
}
969969
}
970-
ty::PredicateKind::TypeWellFormedFromEnv(..) => {
970+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
971971
bug!("TypeWellFormedFromEnv is only used for chalk")
972972
}
973973
ty::PredicateKind::AliasRelate(..) => {

compiler/rustc_trait_selection/src/traits/wf.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ pub fn predicate_obligations<'tcx>(
185185
| ty::PredicateKind::ConstEquate(..)
186186
| ty::PredicateKind::Ambiguous
187187
| ty::PredicateKind::AliasRelate(..)
188-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => {
188+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
189189
bug!("We should only wf check where clauses, unexpected predicate: {predicate:?}")
190190
}
191191
}
@@ -1005,7 +1005,8 @@ pub(crate) fn required_region_bounds<'tcx>(
10051005
| ty::ClauseKind::Projection(_)
10061006
| ty::ClauseKind::ConstArgHasType(_, _)
10071007
| ty::ClauseKind::WellFormed(_)
1008-
| ty::ClauseKind::ConstEvaluatable(_) => None,
1008+
| ty::ClauseKind::ConstEvaluatable(_)
1009+
| ty::ClauseKind::TypeWellFormedFromEnv(_) => None,
10091010
}
10101011
})
10111012
.collect()

compiler/rustc_traits/src/chalk/lowering.rs

+9-8
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,9 @@ impl<'tcx> LowerInto<'tcx, chalk_ir::InEnvironment<chalk_ir::Goal<RustInterner<'
9393
let (predicate, binders, _named_regions) =
9494
collect_bound_vars(interner, interner.tcx, predicate.kind());
9595
let consequence = match predicate {
96-
// TODO: FIXME
97-
/*ty::PredicateKind::TypeWellFormedFromEnv(ty) => {
96+
ty::ClauseKind::TypeWellFormedFromEnv(ty) => {
9897
chalk_ir::DomainGoal::FromEnv(chalk_ir::FromEnv::Ty(ty.lower_into(interner)))
99-
}*/
98+
}
10099
ty::ClauseKind::Trait(predicate) => chalk_ir::DomainGoal::FromEnv(
101100
chalk_ir::FromEnv::Trait(predicate.trait_ref.lower_into(interner)),
102101
),
@@ -223,9 +222,11 @@ impl<'tcx> LowerInto<'tcx, chalk_ir::GoalData<RustInterner<'tcx>>> for ty::Predi
223222
| ty::PredicateKind::ConstEquate(..) => {
224223
chalk_ir::GoalData::All(chalk_ir::Goals::empty(interner))
225224
}
226-
ty::PredicateKind::TypeWellFormedFromEnv(ty) => chalk_ir::GoalData::DomainGoal(
227-
chalk_ir::DomainGoal::FromEnv(chalk_ir::FromEnv::Ty(ty.lower_into(interner))),
228-
),
225+
ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(ty)) => {
226+
chalk_ir::GoalData::DomainGoal(chalk_ir::DomainGoal::FromEnv(
227+
chalk_ir::FromEnv::Ty(ty.lower_into(interner)),
228+
))
229+
}
229230
};
230231

231232
chalk_ir::GoalData::Quantified(
@@ -670,7 +671,7 @@ impl<'tcx> LowerInto<'tcx, Option<chalk_ir::QuantifiedWhereClause<RustInterner<'
670671
| ty::PredicateKind::Clause(ty::ClauseKind::ConstEvaluatable(..))
671672
| ty::PredicateKind::ConstEquate(..)
672673
| ty::PredicateKind::Ambiguous
673-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => {
674+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
674675
bug!("unexpected predicate {self}")
675676
}
676677
};
@@ -806,7 +807,7 @@ impl<'tcx> LowerInto<'tcx, Option<chalk_solve::rust_ir::QuantifiedInlineBound<Ru
806807
| ty::PredicateKind::Clause(ty::ClauseKind::ConstEvaluatable(..))
807808
| ty::PredicateKind::ConstEquate(..)
808809
| ty::PredicateKind::Ambiguous
809-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => {
810+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => {
810811
bug!("unexpected predicate {}", &self)
811812
}
812813
}

compiler/rustc_traits/src/normalize_erasing_regions.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,6 @@ fn not_outlives_predicate(p: ty::Predicate<'_>) -> bool {
7070
| ty::PredicateKind::Clause(ty::ClauseKind::ConstEvaluatable(..))
7171
| ty::PredicateKind::ConstEquate(..)
7272
| ty::PredicateKind::Ambiguous
73-
| ty::PredicateKind::TypeWellFormedFromEnv(..) => true,
73+
| ty::PredicateKind::Clause(ty::ClauseKind::TypeWellFormedFromEnv(..)) => true,
7474
}
7575
}

0 commit comments

Comments
 (0)