aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-03-18 15:27:39 +0000
committerPhilip Herron <herron.philip@googlemail.com>2021-03-19 08:44:25 +0000
commit0b061cb099f33a9b76a2701c1d3e35868d026607 (patch)
treece3ad96499337b3c6bbef1df55ab49a58b1c8013 /gcc
parent1b0076675d8fec6df6d175fe84ff9d2fcba492af (diff)
downloadgcc-0b061cb099f33a9b76a2701c1d3e35868d026607.zip
gcc-0b061cb099f33a9b76a2701c1d3e35868d026607.tar.gz
gcc-0b061cb099f33a9b76a2701c1d3e35868d026607.tar.bz2
Reduce nesting to cleanup formatting of the unify function.
If there is a failure in type resolution we can return early to reduce nesting
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-tyty-rules.h62
1 files changed, 30 insertions, 32 deletions
diff --git a/gcc/rust/typecheck/rust-tyty-rules.h b/gcc/rust/typecheck/rust-tyty-rules.h
index d41c3a9..c6eb357 100644
--- a/gcc/rust/typecheck/rust-tyty-rules.h
+++ b/gcc/rust/typecheck/rust-tyty-rules.h
@@ -67,41 +67,39 @@ public:
}
other->accept_vis (*this);
- if (resolved != nullptr)
+ if (resolved == nullptr)
+ return nullptr;
+
+ resolved->append_reference (get_base ()->get_ref ());
+ resolved->append_reference (other->get_ref ());
+ for (auto ref : get_base ()->get_combined_refs ())
+ resolved->append_reference (ref);
+ for (auto ref : other->get_combined_refs ())
+ resolved->append_reference (ref);
+
+ bool result_resolved = resolved->get_kind () != TyTy::TypeKind::INFER;
+ bool result_is_infer_var = resolved->get_kind () == TyTy::TypeKind::INFER;
+ bool results_is_non_general_infer_var
+ = (result_is_infer_var
+ && ((InferType *) resolved)->get_infer_kind ()
+ != TyTy::InferType::GENERAL);
+ if (result_resolved || results_is_non_general_infer_var)
{
- resolved->append_reference (get_base ()->get_ref ());
- resolved->append_reference (other->get_ref ());
- for (auto ref : get_base ()->get_combined_refs ())
- resolved->append_reference (ref);
- for (auto ref : other->get_combined_refs ())
- resolved->append_reference (ref);
-
- bool result_resolved = resolved->get_kind () != TyTy::TypeKind::INFER;
- bool result_is_infer_var
- = resolved->get_kind () == TyTy::TypeKind::INFER;
- bool results_is_non_general_infer_var
- = (result_is_infer_var
- && ((InferType *) resolved)->get_infer_kind ()
- != TyTy::InferType::GENERAL);
- if (result_resolved || results_is_non_general_infer_var)
+ for (auto &ref : resolved->get_combined_refs ())
{
- for (auto &ref : resolved->get_combined_refs ())
+ TyTy::BaseType *ref_tyty = nullptr;
+ bool ok = context->lookup_type (ref, &ref_tyty);
+ if (!ok)
+ continue;
+
+ // if any of the types are inference variables lets fix them
+ if (ref_tyty->get_kind () == TyTy::TypeKind::INFER)
{
- TyTy::BaseType *ref_tyty = nullptr;
- bool ok = context->lookup_type (ref, &ref_tyty);
- if (!ok)
- continue;
-
- // if any of the types are inference variables lets fix them
- if (ref_tyty->get_kind () == TyTy::TypeKind::INFER)
- {
- NodeId ref_node_id = UNKNOWN_NODEID;
- context->insert_type (
- Analysis::NodeMapping (mappings->get_current_crate (),
- ref_node_id, ref,
- UNKNOWN_LOCAL_DEFID),
- resolved->clone ());
- }
+ context->insert_type (
+ Analysis::NodeMapping (mappings->get_current_crate (),
+ UNKNOWN_NODEID, ref,
+ UNKNOWN_LOCAL_DEFID),
+ resolved->clone ());
}
}
}