diff --git a/vlib/v/ast/table.v b/vlib/v/ast/table.v index 31ad11baf16837..898fd8304324f6 100644 --- a/vlib/v/ast/table.v +++ b/vlib/v/ast/table.v @@ -1955,7 +1955,7 @@ pub fn (mut t Table) unwrap_generic_type(typ Type, generic_names []string, concr if mut parent_info is Struct { for mut embed in parent_info.embeds { if embed == orig_type { - embed = fields[i].typ.set_flag(.generic) + embed = fields[i].typ break } } @@ -2138,7 +2138,7 @@ pub fn (mut t Table) generic_insts_to_concrete() { if fields[i].name.len > 1 && fields[i].name[0].is_capital() { for mut embed in parent_info.embeds { if embed == orig_type { - embed = fields[i].typ.set_flag(.generic) + embed = fields[i].typ break } } diff --git a/vlib/v/ast/types.v b/vlib/v/ast/types.v index 14394be0015b66..2701125fa04aa8 100644 --- a/vlib/v/ast/types.v +++ b/vlib/v/ast/types.v @@ -1544,7 +1544,11 @@ pub fn (t &TypeSymbol) symbol_name_except_generic() string { } pub fn (t &TypeSymbol) embed_name() string { - if t.name.contains('[') { + if t.name.contains('<') { + // Abc[int] => Abc + // main.Abc[main.Enum] => Abc + return t.name.split('<')[0].split('.').last() + } else if t.name.contains('[') { // Abc[int] => Abc // main.Abc[main.Enum] => Abc return t.name.split('[')[0].split('.').last()