remove flag
This commit is contained in:
parent
e7eaed21d5
commit
4f2001aab7
4 changed files with 178 additions and 234 deletions
|
@ -1095,17 +1095,8 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pick_core(&self) -> Option<PickResult<'tcx>> {
|
fn pick_core(&self) -> Option<PickResult<'tcx>> {
|
||||||
let pick = self.pick_all_method(Some(&mut vec![]));
|
// Pick stable methods only first, and consider unstable candidates if not found.
|
||||||
|
self.pick_all_method(Some(&mut vec![])).or_else(|| self.pick_all_method(None))
|
||||||
// In this case unstable picking is done by `pick_method`.
|
|
||||||
if !self.tcx.sess.opts.unstable_opts.pick_stable_methods_before_any_unstable {
|
|
||||||
return pick;
|
|
||||||
}
|
|
||||||
|
|
||||||
if pick.is_none() {
|
|
||||||
return self.pick_all_method(None);
|
|
||||||
}
|
|
||||||
pick
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pick_all_method(
|
fn pick_all_method(
|
||||||
|
@ -1244,54 +1235,11 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pick_method_with_unstable(&self, self_ty: Ty<'tcx>) -> Option<PickResult<'tcx>> {
|
|
||||||
debug!("pick_method_with_unstable(self_ty={})", self.ty_to_string(self_ty));
|
|
||||||
|
|
||||||
let mut possibly_unsatisfied_predicates = Vec::new();
|
|
||||||
|
|
||||||
for (kind, candidates) in
|
|
||||||
&[("inherent", &self.inherent_candidates), ("extension", &self.extension_candidates)]
|
|
||||||
{
|
|
||||||
debug!("searching {} candidates", kind);
|
|
||||||
let res = self.consider_candidates(
|
|
||||||
self_ty,
|
|
||||||
candidates,
|
|
||||||
&mut possibly_unsatisfied_predicates,
|
|
||||||
Some(&mut vec![]),
|
|
||||||
);
|
|
||||||
if res.is_some() {
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (kind, candidates) in
|
|
||||||
&[("inherent", &self.inherent_candidates), ("extension", &self.extension_candidates)]
|
|
||||||
{
|
|
||||||
debug!("searching unstable {kind} candidates");
|
|
||||||
let res = self.consider_candidates(
|
|
||||||
self_ty,
|
|
||||||
candidates,
|
|
||||||
&mut possibly_unsatisfied_predicates,
|
|
||||||
None,
|
|
||||||
);
|
|
||||||
if res.is_some() {
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.unsatisfied_predicates.borrow_mut().extend(possibly_unsatisfied_predicates);
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pick_method(
|
fn pick_method(
|
||||||
&self,
|
&self,
|
||||||
self_ty: Ty<'tcx>,
|
self_ty: Ty<'tcx>,
|
||||||
mut unstable_candidates: Option<&mut Vec<(Candidate<'tcx>, Symbol)>>,
|
mut unstable_candidates: Option<&mut Vec<(Candidate<'tcx>, Symbol)>>,
|
||||||
) -> Option<PickResult<'tcx>> {
|
) -> Option<PickResult<'tcx>> {
|
||||||
if !self.tcx.sess.opts.unstable_opts.pick_stable_methods_before_any_unstable {
|
|
||||||
return self.pick_method_with_unstable(self_ty);
|
|
||||||
}
|
|
||||||
|
|
||||||
debug!("pick_method(self_ty={})", self.ty_to_string(self_ty));
|
debug!("pick_method(self_ty={})", self.ty_to_string(self_ty));
|
||||||
|
|
||||||
let mut possibly_unsatisfied_predicates = Vec::new();
|
let mut possibly_unsatisfied_predicates = Vec::new();
|
||||||
|
|
|
@ -776,7 +776,6 @@ fn test_unstable_options_tracking_hash() {
|
||||||
tracked!(packed_bundled_libs, true);
|
tracked!(packed_bundled_libs, true);
|
||||||
tracked!(panic_abort_tests, true);
|
tracked!(panic_abort_tests, true);
|
||||||
tracked!(panic_in_drop, PanicStrategy::Abort);
|
tracked!(panic_in_drop, PanicStrategy::Abort);
|
||||||
tracked!(pick_stable_methods_before_any_unstable, false);
|
|
||||||
tracked!(plt, Some(true));
|
tracked!(plt, Some(true));
|
||||||
tracked!(polonius, true);
|
tracked!(polonius, true);
|
||||||
tracked!(precise_enum_drop_elaboration, false);
|
tracked!(precise_enum_drop_elaboration, false);
|
||||||
|
|
|
@ -1567,8 +1567,6 @@ options! {
|
||||||
"parse only; do not compile, assemble, or link (default: no)"),
|
"parse only; do not compile, assemble, or link (default: no)"),
|
||||||
perf_stats: bool = (false, parse_bool, [UNTRACKED],
|
perf_stats: bool = (false, parse_bool, [UNTRACKED],
|
||||||
"print some performance-related statistics (default: no)"),
|
"print some performance-related statistics (default: no)"),
|
||||||
pick_stable_methods_before_any_unstable: bool = (true, parse_bool, [TRACKED],
|
|
||||||
"try to pick stable methods first before picking any unstable methods (default: yes)"),
|
|
||||||
plt: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
plt: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||||
"whether to use the PLT when calling into shared libraries;
|
"whether to use the PLT when calling into shared libraries;
|
||||||
only has effect for PIC code on systems with ELF binaries
|
only has effect for PIC code on systems with ELF binaries
|
||||||
|
|
|
@ -116,7 +116,6 @@
|
||||||
-Z panic-in-drop=val -- panic strategy for panics in drops
|
-Z panic-in-drop=val -- panic strategy for panics in drops
|
||||||
-Z parse-only=val -- parse only; do not compile, assemble, or link (default: no)
|
-Z parse-only=val -- parse only; do not compile, assemble, or link (default: no)
|
||||||
-Z perf-stats=val -- print some performance-related statistics (default: no)
|
-Z perf-stats=val -- print some performance-related statistics (default: no)
|
||||||
-Z pick-stable-methods-before-any-unstable=val -- try to pick stable methods first before picking any unstable methods (default: yes)
|
|
||||||
-Z plt=val -- whether to use the PLT when calling into shared libraries;
|
-Z plt=val -- whether to use the PLT when calling into shared libraries;
|
||||||
only has effect for PIC code on systems with ELF binaries
|
only has effect for PIC code on systems with ELF binaries
|
||||||
(default: PLT is disabled if full relro is enabled)
|
(default: PLT is disabled if full relro is enabled)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue