vfmt: support `x chan Name` in fn args
parent
8f5ca29fcd
commit
0975f3bd4c
|
@ -725,12 +725,20 @@ pub fn (mut f Fmt) prefix_expr_cast_expr(fexpr ast.Expr) {
|
|||
|
||||
pub fn (f &Fmt) type_to_str(t table.Type) string {
|
||||
mut res := f.table.type_to_str(t)
|
||||
map_prefix := 'map[string]'
|
||||
cur_mod := f.cur_mod + '.'
|
||||
//
|
||||
map_prefix := 'map[string]'
|
||||
has_map_prefix := res.starts_with(map_prefix)
|
||||
if has_map_prefix {
|
||||
res = res.replace(map_prefix, '')
|
||||
}
|
||||
//
|
||||
chan_prefix := 'chan '
|
||||
has_chan_prefix := res.starts_with(chan_prefix)
|
||||
if has_chan_prefix {
|
||||
res = res.replace(chan_prefix, '')
|
||||
}
|
||||
//
|
||||
no_symbols := res.trim_left('&[]')
|
||||
should_shorten := no_symbols.starts_with(cur_mod)
|
||||
//
|
||||
|
@ -752,6 +760,9 @@ pub fn (f &Fmt) type_to_str(t table.Type) string {
|
|||
if should_shorten {
|
||||
res = res.replace_once(cur_mod, '')
|
||||
}
|
||||
if has_chan_prefix {
|
||||
res = chan_prefix + res
|
||||
}
|
||||
if has_map_prefix {
|
||||
res = map_prefix + res
|
||||
}
|
||||
|
|
|
@ -4,6 +4,18 @@ struct FSMEvent {
|
|||
x int
|
||||
}
|
||||
|
||||
fn abc(n FSMEvent) {
|
||||
}
|
||||
|
||||
fn (e FSMEvent) abc(n FSMEvent) {
|
||||
}
|
||||
|
||||
fn (e FSMEvent) x(ch chan FSMEvent) {
|
||||
}
|
||||
|
||||
fn produce_events(ch chan FSMEvent) {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
ch_fsm_events := chan FSMEvent{cap: 1000}
|
||||
eprintln('ch_fsm_events.len: $ch_fsm_events.len')
|
||||
|
|
|
@ -810,6 +810,9 @@ pub fn (table &Table) type_to_str(t Type) string {
|
|||
res = res.replace('map_string_', 'map[string]')
|
||||
map_start = 'map[string]'
|
||||
}
|
||||
if sym.kind == .chan || 'chan_' in res {
|
||||
res = res.replace('chan_', '')
|
||||
}
|
||||
// mod.submod.submod2.Type => submod2.Type
|
||||
if res.contains('.') {
|
||||
vals := res.split('.')
|
||||
|
@ -826,6 +829,9 @@ pub fn (table &Table) type_to_str(t Type) string {
|
|||
if sym.kind == .map && !res.starts_with('map') {
|
||||
res = map_start + res
|
||||
}
|
||||
if sym.kind == .chan && !res.starts_with('chan') {
|
||||
res = 'chan ' + res
|
||||
}
|
||||
}
|
||||
nr_muls := t.nr_muls()
|
||||
if nr_muls > 0 {
|
||||
|
@ -838,11 +844,6 @@ pub fn (table &Table) type_to_str(t Type) string {
|
|||
res = '?' + res
|
||||
}
|
||||
}
|
||||
/*
|
||||
if res.starts_with(cur_mod +'.') {
|
||||
res = res[cur_mod.len+1.. ]
|
||||
}
|
||||
*/
|
||||
return res
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue