diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/typecheck/rust-substitution-mapper.cc | 4 | ||||
-rw-r--r-- | gcc/rust/typecheck/rust-tyty.h | 63 |
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; |