aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-substitution-mapper.cc4
-rw-r--r--gcc/rust/typecheck/rust-tyty.h63
2 files changed, 13 insertions, 54 deletions
diff --git a/gcc/rust/typecheck/rust-substitution-mapper.cc b/gcc/rust/typecheck/rust-substitution-mapper.cc
index a439416..f4fec10 100644
--- a/gcc/rust/typecheck/rust-substitution-mapper.cc
+++ b/gcc/rust/typecheck/rust-substitution-mapper.cc
@@ -31,10 +31,8 @@ SubstMapperInternal::Resolve (TyTy::BaseType *base,
rust_assert (mapper.resolved != nullptr);
// insert these new implict types into the context
- bool is_fn = mapper.resolved->get_kind () == TyTy::TypeKind::FNDEF;
- bool is_adt = mapper.resolved->get_kind () == TyTy::TypeKind::ADT;
bool is_param = mapper.resolved->get_kind () == TyTy::TypeKind::PARAM;
- if (!is_fn && !is_adt && !is_param)
+ if (!is_param)
{
auto context = TypeCheckContext::get ();
context->insert_type (
diff --git a/gcc/rust/typecheck/rust-tyty.h b/gcc/rust/typecheck/rust-tyty.h
index 915aad9..b2fefbb 100644
--- a/gcc/rust/typecheck/rust-tyty.h
+++ b/gcc/rust/typecheck/rust-tyty.h
@@ -368,7 +368,7 @@ public:
virtual bool needs_generic_substitutions () const { return false; }
- virtual bool contains_type_parameters () const { return false; }
+ bool contains_type_parameters () const { return !is_concrete (); }
std::string mappings_str () const
{
@@ -555,19 +555,13 @@ public:
bool is_equal (const BaseType &other) const override;
- bool contains_type_parameters () const override final
- {
- if (can_resolve ())
- {
- auto r = resolve ();
- return r->contains_type_parameters ();
- }
- return true;
- }
-
bool is_concrete () const override final
{
- return !contains_type_parameters ();
+ if (!can_resolve ())
+ return false;
+
+ auto r = resolve ();
+ return r->is_concrete ();
}
ParamType *handle_substitions (SubstitutionArgumentMappings mappings);
@@ -659,16 +653,6 @@ public:
std::string get_name () const override final { return as_string (); }
- bool contains_type_parameters () const override final
- {
- for (auto &f : fields)
- {
- if (f.get_tyty ()->contains_type_parameters ())
- return true;
- }
- return false;
- }
-
TupleType *handle_substitions (SubstitutionArgumentMappings mappings);
private:
@@ -1909,14 +1893,9 @@ public:
BaseType *clone () const final override;
- bool contains_type_parameters () const override final
- {
- return get_base ()->contains_type_parameters ();
- }
-
bool is_concrete () const override final
{
- return !contains_type_parameters ();
+ return get_base ()->is_concrete ();
}
ReferenceType *handle_substitions (SubstitutionArgumentMappings mappings);
@@ -1962,14 +1941,9 @@ public:
BaseType *clone () const final override;
- bool contains_type_parameters () const override final
- {
- return get_base ()->contains_type_parameters ();
- }
-
bool is_concrete () const override final
{
- return !contains_type_parameters ();
+ return get_base ()->is_concrete ();
}
PointerType *handle_substitions (SubstitutionArgumentMappings mappings);
@@ -2104,17 +2078,12 @@ public:
bool is_equal (const BaseType &other) const override;
- bool contains_type_parameters () const override
+ bool is_concrete () const override final
{
if (!can_resolve ())
- return false;
-
- return resolve ()->contains_type_parameters ();
- }
+ return true;
- bool is_concrete () const override final
- {
- return !contains_type_parameters ();
+ return resolve ()->is_concrete ();
}
private:
@@ -2177,15 +2146,7 @@ public:
const BaseType *get () const { return base; }
BaseType *get () { return base; }
- bool contains_type_parameters () const override
- {
- return base->contains_type_parameters ();
- }
-
- bool is_concrete () const override final
- {
- return !contains_type_parameters ();
- }
+ bool is_concrete () const override final { return base->is_concrete (); }
ProjectionType *
handle_substitions (SubstitutionArgumentMappings mappings) override final;