apply substitution before creating symbol name when generating instantiations
This commit is contained in:
parent
ffd190890d
commit
5993923338
1 changed files with 4 additions and 4 deletions
|
@ -204,8 +204,8 @@ impl LdmcMorphism {
|
||||||
pub fn generate_call(&self, dict: &mut impl TypeDict, σ: &std::collections::HashMap<laddertypes::TypeID, laddertypes::TypeTerm>, i: u64) {
|
pub fn generate_call(&self, dict: &mut impl TypeDict, σ: &std::collections::HashMap<laddertypes::TypeID, laddertypes::TypeTerm>, i: u64) {
|
||||||
match self {
|
match self {
|
||||||
LdmcMorphism::Primitive(prim_morph) => {
|
LdmcMorphism::Primitive(prim_morph) => {
|
||||||
let src_c_type = get_c_repr_type(dict, prim_morph.src_type.clone(), true).expect("cant get c-repr type for src type");
|
let src_c_type = get_c_repr_type(dict, prim_morph.src_type.clone().apply_substitution(&|k| σ.get(k).cloned()).clone(), true).expect("cant get c-repr type for src type");
|
||||||
let dst_c_type = get_c_repr_type(dict, prim_morph.dst_type.clone(), true).expect("cant get c-repr type for dst type");
|
let dst_c_type = get_c_repr_type(dict, prim_morph.dst_type.clone().apply_substitution(&|k| σ.get(k).cloned()).clone(), true).expect("cant get c-repr type for dst type");
|
||||||
|
|
||||||
let src_buf = if i%2 == 0 { "bufA" } else { "bufB" };
|
let src_buf = if i%2 == 0 { "bufA" } else { "bufB" };
|
||||||
let dst_buf = if i%2 == 0 { "bufB" } else { "bufA" };
|
let dst_buf = if i%2 == 0 { "bufB" } else { "bufA" };
|
||||||
|
@ -223,8 +223,8 @@ impl LdmcMorphism {
|
||||||
'}');
|
'}');
|
||||||
}
|
}
|
||||||
LdmcMorphism::LengthPrefixMap { length_prefix_type, item_morph } => {
|
LdmcMorphism::LengthPrefixMap { length_prefix_type, item_morph } => {
|
||||||
let src_c_type = get_c_repr_type(dict, self.get_type().src_type, true).expect("cant get c-repr type for src type");
|
let src_c_type = get_c_repr_type(dict, self.get_type().src_type.clone().apply_substitution(&|k| σ.get(k).cloned()).clone(), true).expect("cant get c-repr type for src type");
|
||||||
let dst_c_type = get_c_repr_type(dict, self.get_type().dst_type, true).expect("cant get c-repr type for dst type");
|
let dst_c_type = get_c_repr_type(dict, self.get_type().dst_type.clone().apply_substitution(&|k| σ.get(k).cloned()).clone(), true).expect("cant get c-repr type for dst type");
|
||||||
|
|
||||||
let map_fn = match (src_c_type.as_str(), dst_c_type.as_str()) {
|
let map_fn = match (src_c_type.as_str(), dst_c_type.as_str()) {
|
||||||
("struct LengthPrefixUInt64Array", "struct LengthPrefixUInt64Array") => "length_prefix_array_map_64_to_64",
|
("struct LengthPrefixUInt64Array", "struct LengthPrefixUInt64Array") => "length_prefix_array_map_64_to_64",
|
||||||
|
|
Loading…
Add table
Reference in a new issue