BaseType *
TypeBoundPredicate::handle_substitions (
- SubstitutionArgumentMappings subst_mappings)
+ SubstitutionArgumentMappings &subst_mappings)
{
for (auto &sub : get_substs ())
{
return !needs_substitution ();
}
-SubstitutionArgumentMappings
+SubstitutionArgumentMappings &
+SubstitutionRef::get_substitution_arguments ()
+{
+ return used_arguments;
+}
+
+const SubstitutionArgumentMappings &
SubstitutionRef::get_substitution_arguments () const
{
return used_arguments;
SubstitutionArgumentMappings infer_arguments (std::move (args),
{} /* binding_arguments */,
locus);
- return handle_substitions (std::move (infer_arguments));
+ return handle_substitions (infer_arguments);
}
SubstitutionArgumentMappings
bool was_substituted () const;
- SubstitutionArgumentMappings get_substitution_arguments () const;
+ SubstitutionArgumentMappings &get_substitution_arguments ();
+ const SubstitutionArgumentMappings &get_substitution_arguments () const;
// this is the count of type params that are not substituted fuly
size_t num_required_substitutions () const;
bool monomorphize ();
// TODO comment
- virtual BaseType *handle_substitions (SubstitutionArgumentMappings mappings)
+ virtual BaseType *handle_substitions (SubstitutionArgumentMappings &mappings)
= 0;
SubstitutionArgumentMappings get_used_arguments () const;
}
ADTType *
-ADTType::handle_substitions (SubstitutionArgumentMappings subst_mappings)
+ADTType::handle_substitions (SubstitutionArgumentMappings &subst_mappings)
{
ADTType *adt = static_cast<ADTType *> (clone ());
adt->set_ty_ref (mappings->get_next_hir_id ());
}
TupleType *
-TupleType::handle_substitions (SubstitutionArgumentMappings mappings)
+TupleType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
auto mappings_table = Analysis::Mappings::get ();
}
FnType *
-FnType::handle_substitions (SubstitutionArgumentMappings subst_mappings)
+FnType::handle_substitions (SubstitutionArgumentMappings &subst_mappings)
{
FnType *fn = static_cast<FnType *> (clone ());
fn->set_ty_ref (mappings->get_next_hir_id ());
}
ClosureType *
-ClosureType::handle_substitions (SubstitutionArgumentMappings mappings)
+ClosureType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
gcc_unreachable ();
return nullptr;
}
ArrayType *
-ArrayType::handle_substitions (SubstitutionArgumentMappings mappings)
+ArrayType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
auto mappings_table = Analysis::Mappings::get ();
}
SliceType *
-SliceType::handle_substitions (SubstitutionArgumentMappings mappings)
+SliceType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
auto mappings_table = Analysis::Mappings::get ();
}
ReferenceType *
-ReferenceType::handle_substitions (SubstitutionArgumentMappings mappings)
+ReferenceType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
auto mappings_table = Analysis::Mappings::get ();
}
PointerType *
-PointerType::handle_substitions (SubstitutionArgumentMappings mappings)
+PointerType::handle_substitions (SubstitutionArgumentMappings &mappings)
{
auto mappings_table = Analysis::Mappings::get ();
}
ParamType *
-ParamType::handle_substitions (SubstitutionArgumentMappings subst_mappings)
+ParamType::handle_substitions (SubstitutionArgumentMappings &subst_mappings)
{
SubstitutionArg arg = SubstitutionArg::error ();
bool ok = subst_mappings.get_argument_for_symbol (this, &arg);
}
ProjectionType *
-ProjectionType::handle_substitions (SubstitutionArgumentMappings subst_mappings)
+ProjectionType::handle_substitions (
+ SubstitutionArgumentMappings &subst_mappings)
{
// // do we really need to substitute this?
// if (base->needs_generic_substitutions () || base->contains_type_parameters
bool is_concrete () const override final;
- ParamType *handle_substitions (SubstitutionArgumentMappings mappings);
+ ParamType *handle_substitions (SubstitutionArgumentMappings &mappings);
private:
std::string symbol;
std::string get_name () const override final;
- TupleType *handle_substitions (SubstitutionArgumentMappings mappings);
+ TupleType *handle_substitions (SubstitutionArgumentMappings &mappings);
private:
std::vector<TyVar> fields;
// WARNING THIS WILL ALWAYS RETURN NULLPTR
BaseType *
- handle_substitions (SubstitutionArgumentMappings mappings) override final;
+ handle_substitions (SubstitutionArgumentMappings &mappings) override final;
bool is_error () const;
}
ADTType *
- handle_substitions (SubstitutionArgumentMappings mappings) override final;
+ handle_substitions (SubstitutionArgumentMappings &mappings) override final;
private:
std::string identifier;
}
FnType *
- handle_substitions (SubstitutionArgumentMappings mappings) override final;
+ handle_substitions (SubstitutionArgumentMappings &mappings) override final;
ABI get_abi () const { return abi; }
}
ClosureType *
- handle_substitions (SubstitutionArgumentMappings mappings) override final;
+ handle_substitions (SubstitutionArgumentMappings &mappings) override final;
TyTy::TupleType &get_parameters () const { return *parameters; }
TyTy::BaseType &get_result_type () const { return *result_type.get_tyty (); }
HIR::Expr &get_capacity_expr () const { return capacity_expr; }
- ArrayType *handle_substitions (SubstitutionArgumentMappings mappings);
+ ArrayType *handle_substitions (SubstitutionArgumentMappings &mappings);
private:
TyVar element_type;
return get_element_type ()->is_concrete ();
}
- SliceType *handle_substitions (SubstitutionArgumentMappings mappings);
+ SliceType *handle_substitions (SubstitutionArgumentMappings &mappings);
private:
TyVar element_type;
bool is_concrete () const override final;
- ReferenceType *handle_substitions (SubstitutionArgumentMappings mappings);
+ ReferenceType *handle_substitions (SubstitutionArgumentMappings &mappings);
Mutability mutability () const;
bool is_concrete () const override final;
- PointerType *handle_substitions (SubstitutionArgumentMappings mappings);
+ PointerType *handle_substitions (SubstitutionArgumentMappings &mappings);
Mutability mutability () const;
bool is_mutable () const;
bool is_concrete () const override final;
ProjectionType *
- handle_substitions (SubstitutionArgumentMappings mappings) override final;
+ handle_substitions (SubstitutionArgumentMappings &mappings) override final;
private:
BaseType *base;