Skip to content

Commit c48abe5

Browse files
authored
ast: cleanup and simplify shorten_user_defined_typenames method (#20984)
1 parent c90af5f commit c48abe5

File tree

1 file changed

+22
-31
lines changed

1 file changed

+22
-31
lines changed

vlib/v/ast/types.v

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,42 +1467,33 @@ pub fn (t &Table) type_to_str_using_aliases(typ Type, import_aliases map[string]
14671467
return res
14681468
}
14691469

1470-
fn (t Table) shorten_user_defined_typenames(originalname string, import_aliases map[string]string) string {
1471-
mut res := originalname
1472-
if t.cmod_prefix.len > 0 && res.starts_with(t.cmod_prefix) {
1470+
fn (t Table) shorten_user_defined_typenames(original_name string, import_aliases map[string]string) string {
1471+
if alias := import_aliases[original_name] {
1472+
return alias
1473+
}
1474+
mut parts := original_name.split('.')
1475+
if parts.len > 1 {
14731476
// cur_mod.Type => Type
1474-
res = res.replace_once(t.cmod_prefix, '')
1475-
} else if res in import_aliases {
1476-
res = import_aliases[res]
1477-
} else {
1478-
// FIXME: clean this case and remove the following if
1479-
// because it is an hack to format well the type when
1480-
// there is a []mod.name
1481-
if res.contains('[]') {
1482-
idx := res.index('.') or { -1 }
1483-
return res[idx + 1..]
1484-
}
1485-
// types defined by the user
1477+
if t.cmod_prefix != '' && original_name.starts_with(t.cmod_prefix) {
1478+
return original_name.all_after(t.cmod_prefix)
1479+
}
14861480
// mod.submod.submod2.Type => submod2.Type
1487-
mut parts := res.split('.')
1488-
if parts.len > 1 {
1489-
if parts[..parts.len - 1].all(!it.contains('[')) {
1490-
ind := parts.len - 2
1491-
if t.is_fmt {
1492-
// Rejoin the module parts for correct usage of aliases
1493-
parts[ind] = parts[..ind + 1].join('.')
1494-
}
1495-
if parts[ind] in import_aliases {
1496-
parts[ind] = import_aliases[parts[ind]]
1497-
}
1498-
1499-
res = parts[ind..].join('.')
1481+
if !parts[..parts.len - 1].any(it.contains('[')) {
1482+
mod_idx := parts.len - 2
1483+
if t.is_fmt {
1484+
parts[mod_idx] = original_name.all_before_last('.')
15001485
}
1501-
} else {
1502-
res = parts[0]
1486+
if alias := import_aliases[parts[mod_idx]] {
1487+
parts[mod_idx] = alias
1488+
}
1489+
return parts[mod_idx..].join('.')
1490+
}
1491+
if original_name.contains('[]') {
1492+
// []mod.name
1493+
return original_name.all_after('.')
15031494
}
15041495
}
1505-
return res
1496+
return original_name
15061497
}
15071498

15081499
@[minify]

0 commit comments

Comments
 (0)