@@ -642,6 +642,8 @@ function s:GoCompiler.compile_ternary(node)
642
642
let right = self .compile (a: node .right )
643
643
if cond = ~ ' ^node\.rlist\[\d\]' && left == ' "nil"'
644
644
return printf (' func() string { if %s {return %s} else {return %s.(string)} }()' , cond, left , right )
645
+ elseif cond = ~ ' ^viml_empty' && left == ' "(list)"'
646
+ return printf (' func() string { if %s {return %s} else {return %s} }()' , cond, left , right )
645
647
elseif cond == ' is_litdict'
646
648
return printf (' func() *VimNode { if %s {return %s} else {return %s} }()' , cond, left , right )
647
649
else
@@ -841,7 +843,6 @@ function s:GoCompiler.compile_call(node)
841
843
let rlist = map (a: node .rlist, ' self.compile(v:val)' )
842
844
let left = self .compile (a: node .left )
843
845
if left == ' map' && len (rlist) == 2 && rlist[1 ] == ' "self.compile(v:val)"'
844
- " throw 'NotImplemented: map()'
845
846
return printf (join ([
846
847
\ ' func() []string {' ,
847
848
\ ' var ss []string' ,
@@ -851,6 +852,16 @@ function s:GoCompiler.compile_call(node)
851
852
\ ' return ss' ,
852
853
\ ' }()' ,
853
854
\ ], " ;" ), rlist[0 ], substitute (rlist[1 ][1 :-2 ], ' v:val' , ' vval' , ' g' ))
855
+ elseif left == ' map' && len (rlist) == 2 && rlist[1 ] == ' "self.escape_string(v:val.value)"'
856
+ return printf (join ([
857
+ \ ' func() []string {' ,
858
+ \ ' var ss []string' ,
859
+ \ ' for _, vval := range %s {' ,
860
+ \ ' ss = append(ss, %s)' ,
861
+ \ ' }' ,
862
+ \ ' return ss' ,
863
+ \ ' }()' ,
864
+ \ ], " ;" ), rlist[0 ], substitute (rlist[1 ][1 :-2 ], ' v:val\.value' , ' vval.value.(string)' , ' g' ))
854
865
elseif left == ' call' && rlist[0 ][0 ] = ~ ' ['' "]'
855
866
return printf (' viml_%s(*%s)' , rlist[0 ][1 :-2 ], rlist[1 ])
856
867
elseif left = ~ ' ExArg'
0 commit comments