Flatten and simplify some control flow
This commit is contained in:
parent
227690a258
commit
51e8309f50
6 changed files with 53 additions and 69 deletions
|
@ -2479,20 +2479,16 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, '_, 'tcx> {
|
|||
let body = self.body;
|
||||
for local in body.mut_vars_and_args_iter().filter(|local| !self.used_mut.contains(local)) {
|
||||
let local_decl = &body.local_decls[local];
|
||||
let lint_root = match &body.source_scopes[local_decl.source_info.scope].local_data {
|
||||
ClearCrossCrate::Set(data) => data.lint_root,
|
||||
_ => continue,
|
||||
let ClearCrossCrate::Set(SourceScopeLocalData { lint_root, .. }) =
|
||||
body.source_scopes[local_decl.source_info.scope].local_data
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
|
||||
// Skip over locals that begin with an underscore or have no name
|
||||
match self.local_names[local] {
|
||||
Some(name) => {
|
||||
if name.as_str().starts_with('_') {
|
||||
if self.local_names[local].is_none_or(|name| name.as_str().starts_with('_')) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
None => continue,
|
||||
}
|
||||
|
||||
let span = local_decl.source_info.span;
|
||||
if span.desugaring_kind().is_some() {
|
||||
|
|
|
@ -153,10 +153,9 @@ pub(super) fn maybe_check_static_with_link_section(tcx: TyCtxt<'_>, id: LocalDef
|
|||
}
|
||||
|
||||
// If `#[link_section]` is missing, then nothing to verify
|
||||
let attrs = tcx.codegen_fn_attrs(id);
|
||||
if attrs.link_section.is_none() {
|
||||
let Some(link_section) = tcx.codegen_fn_attrs(id).link_section else {
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
// For the wasm32 target statics with `#[link_section]` other than `.init_array`
|
||||
// are placed into custom sections of the final output file, but this isn't like
|
||||
|
@ -182,11 +181,8 @@ pub(super) fn maybe_check_static_with_link_section(tcx: TyCtxt<'_>, id: LocalDef
|
|||
// continue to work, but would no longer be necessary.
|
||||
|
||||
if let Ok(alloc) = tcx.eval_static_initializer(id.to_def_id())
|
||||
&& alloc.inner().provenance().ptrs().len() != 0
|
||||
&& attrs
|
||||
.link_section
|
||||
.map(|link_section| !link_section.as_str().starts_with(".init_array"))
|
||||
.unwrap()
|
||||
&& !alloc.inner().provenance().ptrs().is_empty()
|
||||
&& !link_section.as_str().starts_with(".init_array")
|
||||
{
|
||||
let msg = "statics with a custom `#[link_section]` must be a \
|
||||
simple list of bytes on the wasm target with no \
|
||||
|
|
|
@ -1532,10 +1532,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
if self.may_coerce(blk_ty, *elem_ty)
|
||||
&& blk.stmts.is_empty()
|
||||
&& blk.rules == hir::BlockCheckMode::DefaultBlock
|
||||
&& let source_map = self.tcx.sess.source_map()
|
||||
&& let Ok(snippet) = source_map.span_to_snippet(blk.span)
|
||||
&& snippet.starts_with('{')
|
||||
&& snippet.ends_with('}')
|
||||
{
|
||||
let source_map = self.tcx.sess.source_map();
|
||||
if let Ok(snippet) = source_map.span_to_snippet(blk.span) {
|
||||
if snippet.starts_with('{') && snippet.ends_with('}') {
|
||||
diag.multipart_suggestion_verbose(
|
||||
"to create an array, use square brackets instead of curly braces",
|
||||
vec![
|
||||
|
@ -1557,8 +1558,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[instrument(skip(self, err))]
|
||||
pub(crate) fn suggest_floating_point_literal(
|
||||
|
|
|
@ -843,9 +843,8 @@ fn analyze_attr(attr: &impl AttributeExt, state: &mut AnalyzeAttrState<'_>) -> b
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if attr.path().starts_with(&[sym::diagnostic]) && attr.path().len() == 2 {
|
||||
should_encode =
|
||||
rustc_feature::is_stable_diagnostic_attribute(attr.path()[1], state.features);
|
||||
} else if let &[sym::diagnostic, seg] = &*attr.path() {
|
||||
should_encode = rustc_feature::is_stable_diagnostic_attribute(seg, state.features);
|
||||
} else {
|
||||
should_encode = true;
|
||||
}
|
||||
|
|
|
@ -641,22 +641,20 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for IsSuggestableVisitor<'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
Alias(Projection, AliasTy { def_id, .. }) => {
|
||||
if self.tcx.def_kind(def_id) != DefKind::AssocTy {
|
||||
Alias(Projection, AliasTy { def_id, .. })
|
||||
if self.tcx.def_kind(def_id) != DefKind::AssocTy =>
|
||||
{
|
||||
return ControlFlow::Break(());
|
||||
}
|
||||
}
|
||||
|
||||
Param(param) => {
|
||||
// FIXME: It would be nice to make this not use string manipulation,
|
||||
// but it's pretty hard to do this, since `ty::ParamTy` is missing
|
||||
// sufficient info to determine if it is synthetic, and we don't
|
||||
// always have a convenient way of getting `ty::Generics` at the call
|
||||
// sites we invoke `IsSuggestable::is_suggestable`.
|
||||
if param.name.as_str().starts_with("impl ") {
|
||||
Param(param) if param.name.as_str().starts_with("impl ") => {
|
||||
return ControlFlow::Break(());
|
||||
}
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
@ -733,19 +731,15 @@ impl<'tcx> FallibleTypeFolder<TyCtxt<'tcx>> for MakeSuggestableFolder<'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
Param(param) => {
|
||||
// FIXME: It would be nice to make this not use string manipulation,
|
||||
// but it's pretty hard to do this, since `ty::ParamTy` is missing
|
||||
// sufficient info to determine if it is synthetic, and we don't
|
||||
// always have a convenient way of getting `ty::Generics` at the call
|
||||
// sites we invoke `IsSuggestable::is_suggestable`.
|
||||
if param.name.as_str().starts_with("impl ") {
|
||||
Param(param) if param.name.as_str().starts_with("impl ") => {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
t
|
||||
}
|
||||
|
||||
_ => t,
|
||||
};
|
||||
|
||||
|
|
|
@ -1132,7 +1132,7 @@ impl<'tcx> DeadVisitor<'tcx> {
|
|||
return;
|
||||
}
|
||||
dead_codes.sort_by_key(|v| v.level);
|
||||
for group in dead_codes[..].chunk_by(|a, b| a.level == b.level) {
|
||||
for group in dead_codes.chunk_by(|a, b| a.level == b.level) {
|
||||
self.lint_at_single_level(&group, participle, Some(def_id), report_on);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue