interface WalkerTalker { // Abc Walker // adsas // zxczxc Talker // xyzdef // asdasdas nspeeches int } interface Talker { nspeeches int mut: talk(msg string) } interface Walker { nsteps int mut: walk(newx int, newy int) } struct Abc { mut: x int y int phrases []string nsteps int = 1000 nspeeches int = 1000 } fn (mut s Abc) talk(msg string) { s.phrases << msg s.nspeeches++ } fn (mut s Abc) walk(x int, y int) { s.x = x s.y = y s.nsteps++ } fn test_walker_talker() { mut wt := WalkerTalker(Abc{ x: 1 y: 1 phrases: ['hi'] }) wt.talk('my name is Wally') wt.walk(100, 100) if mut wt is Abc { dump(wt) assert wt.x == 100 assert wt.y == 100 assert wt.phrases.last().ends_with('Wally') assert wt.nspeeches == 1001 assert wt.nsteps == 1001 } }