@@ -1467,42 +1467,33 @@ pub fn (t &Table) type_to_str_using_aliases(typ Type, import_aliases map[string]
1467
1467
return res
1468
1468
}
1469
1469
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 {
1473
1476
// 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
+ }
1486
1480
// 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 ('.' )
1500
1485
}
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 ('.' )
1503
1494
}
1504
1495
}
1505
- return res
1496
+ return original_name
1506
1497
}
1507
1498
1508
1499
@[minify]
0 commit comments