mirror of
https://github.com/vlang/v.git
synced 2025-09-13 09:25:45 -04:00
ast: cleanup and simplify shorten_user_defined_typenames
method (#20984)
This commit is contained in:
parent
c90af5ffe3
commit
c48abe5f51
@ -1467,42 +1467,33 @@ pub fn (t &Table) type_to_str_using_aliases(typ Type, import_aliases map[string]
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (t Table) shorten_user_defined_typenames(originalname string, import_aliases map[string]string) string {
|
fn (t Table) shorten_user_defined_typenames(original_name string, import_aliases map[string]string) string {
|
||||||
mut res := originalname
|
if alias := import_aliases[original_name] {
|
||||||
if t.cmod_prefix.len > 0 && res.starts_with(t.cmod_prefix) {
|
return alias
|
||||||
// cur_mod.Type => Type
|
|
||||||
res = res.replace_once(t.cmod_prefix, '')
|
|
||||||
} else if res in import_aliases {
|
|
||||||
res = import_aliases[res]
|
|
||||||
} else {
|
|
||||||
// FIXME: clean this case and remove the following if
|
|
||||||
// because it is an hack to format well the type when
|
|
||||||
// there is a []mod.name
|
|
||||||
if res.contains('[]') {
|
|
||||||
idx := res.index('.') or { -1 }
|
|
||||||
return res[idx + 1..]
|
|
||||||
}
|
}
|
||||||
// types defined by the user
|
mut parts := original_name.split('.')
|
||||||
// mod.submod.submod2.Type => submod2.Type
|
|
||||||
mut parts := res.split('.')
|
|
||||||
if parts.len > 1 {
|
if parts.len > 1 {
|
||||||
if parts[..parts.len - 1].all(!it.contains('[')) {
|
// cur_mod.Type => Type
|
||||||
ind := parts.len - 2
|
if t.cmod_prefix != '' && original_name.starts_with(t.cmod_prefix) {
|
||||||
|
return original_name.all_after(t.cmod_prefix)
|
||||||
|
}
|
||||||
|
// mod.submod.submod2.Type => submod2.Type
|
||||||
|
if !parts[..parts.len - 1].any(it.contains('[')) {
|
||||||
|
mod_idx := parts.len - 2
|
||||||
if t.is_fmt {
|
if t.is_fmt {
|
||||||
// Rejoin the module parts for correct usage of aliases
|
parts[mod_idx] = original_name.all_before_last('.')
|
||||||
parts[ind] = parts[..ind + 1].join('.')
|
|
||||||
}
|
}
|
||||||
if parts[ind] in import_aliases {
|
if alias := import_aliases[parts[mod_idx]] {
|
||||||
parts[ind] = import_aliases[parts[ind]]
|
parts[mod_idx] = alias
|
||||||
}
|
}
|
||||||
|
return parts[mod_idx..].join('.')
|
||||||
res = parts[ind..].join('.')
|
|
||||||
}
|
}
|
||||||
} else {
|
if original_name.contains('[]') {
|
||||||
res = parts[0]
|
// []mod.name
|
||||||
|
return original_name.all_after('.')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res
|
return original_name
|
||||||
}
|
}
|
||||||
|
|
||||||
@[minify]
|
@[minify]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user