// turbo-fish segment path::<ty>
if (item_seg.has_generic_args ())
{
- if (!infered->can_substitute ())
+ if (!infered->has_subsititions_defined ())
{
rust_error_at (item_seg.get_locus (),
"substitutions not supported for %s",
// turbo-fish segment path::<ty>
if (seg.has_generic_args ())
{
- if (!lookup->can_substitute ())
+ if (!lookup->has_subsititions_defined ())
{
rust_error_at (expr.get_locus (),
"substitutions not supported for %s",
if (seg.has_generic_args ())
{
- if (!tyseg->can_substitute ())
+ if (!tyseg->has_subsititions_defined ())
{
rust_error_at (expr_locus, "substitutions not supported for %s",
tyseg->as_string ().c_str ());
// turbo-fish segment path::<ty>
if (generic_seg.has_generic_args ())
{
- if (!translated->can_substitute ())
+ if (!translated->has_subsititions_defined ())
{
rust_error_at (item_seg->get_locus (),
"substitutions not supported for %s",
HIR::TypePathSegmentGeneric *generic_segment
= static_cast<HIR::TypePathSegmentGeneric *> (seg.get ());
- if (!lookup->can_substitute ())
+ if (!lookup->has_subsititions_defined ())
{
rust_error_at (path.get_locus (),
"TypePath %s declares generic arguments but the "
HIR::TypePathSegmentGeneric *generic_segment
= static_cast<HIR::TypePathSegmentGeneric *> (seg.get ());
- if (!tyseg->can_substitute ())
+ if (!tyseg->has_subsititions_defined ())
{
rust_error_at (expr_locus, "substitutions not supported for %s",
tyseg->as_string ().c_str ());
return SubstitutionArgumentMappings::error ();
// this resolved default might already contain default parameters
- if (resolved->contains_type_parameters ())
+ if (!resolved->is_concrete ())
{
SubstitutionArgumentMappings intermediate (mappings,
binding_arguments,
combined.insert (id);
}
-bool
-BaseType::supports_substitutions () const
-{
- return false;
-}
-
bool
BaseType::has_subsititions_defined () const
{
return false;
}
-bool
-BaseType::can_substitute () const
-{
- return supports_substitutions () && has_subsititions_defined ();
-}
-
bool
BaseType::needs_generic_substitutions () const
{
return false;
}
-bool
-BaseType::contains_type_parameters () const
-{
- return !is_concrete ();
-}
-
const RustIdent &
BaseType::get_ident () const
{
}
}
}
- else if (fty->has_subsititions_defined () || fty->contains_type_parameters ())
+ else if (fty->has_subsititions_defined () || !fty->is_concrete ())
{
BaseType *concrete
= Resolver::SubstMapperInternal::Resolve (fty, subst_mappings);
for (size_t i = 0; i < tuple->fields.size (); i++)
{
TyVar &field = fields.at (i);
- if (field.get_tyty ()->contains_type_parameters ())
+ if (!field.get_tyty ()->is_concrete ())
{
BaseType *concrete
= Resolver::SubstMapperInternal::Resolve (field.get_tyty (),
}
}
}
- else if (fty->needs_generic_substitutions ()
- || fty->contains_type_parameters ())
+ else if (fty->needs_generic_substitutions () || !fty->is_concrete ())
{
BaseType *concrete
= Resolver::SubstMapperInternal::Resolve (fty, subst_mappings);
}
}
}
- else if (fty->has_subsititions_defined ()
- || fty->contains_type_parameters ())
+ else if (fty->has_subsititions_defined () || !fty->is_concrete ())
{
BaseType *concrete
= Resolver::SubstMapperInternal::Resolve (fty, subst_mappings);
return needs_substitution ();
}
-bool
-ProjectionType::supports_substitutions () const
-{
- return true;
-}
-
bool
ProjectionType::has_subsititions_defined () const
{
}
}
}
- else if (fty->needs_generic_substitutions ()
- || fty->contains_type_parameters ())
+ else if (fty->needs_generic_substitutions () || !fty->is_concrete ())
{
BaseType *concrete
= Resolver::SubstMapperInternal::Resolve (fty, subst_mappings);
// get_combined_refs returns the chain of node refs involved in unification
std::set<HirId> get_combined_refs () const;
-
void append_reference (HirId id);
- bool can_substitute () const;
-
- bool contains_type_parameters () const;
-
std::string mappings_str () const;
-
std::string debug_str () const;
-
void debug () const;
// FIXME this will eventually go away
const BaseType *destructure () const;
const RustIdent &get_ident () const;
-
Location get_locus () const;
/* Returns a pointer to a clone of this. The caller is responsible for
* releasing the memory of the returned ty. */
virtual BaseType *clone () const = 0;
- virtual bool supports_substitutions () const;
-
virtual bool has_subsititions_defined () const;
virtual bool needs_generic_substitutions () const;
return needs_substitution ();
}
- bool supports_substitutions () const override final { return true; }
-
bool has_subsititions_defined () const override final
{
return has_substitutions ();
return needs_substitution ();
}
- bool supports_substitutions () const override final { return true; }
-
bool has_subsititions_defined () const override final
{
return has_substitutions ();
return needs_substitution ();
}
- bool supports_substitutions () const override final { return true; }
-
bool has_subsititions_defined () const override final
{
return has_substitutions ();
bool needs_generic_substitutions () const override final;
- bool supports_substitutions () const override final;
-
bool has_subsititions_defined () const override final;
const BaseType *get () const;