Skip to content

Commit a47f784

Browse files
committed
clang: fix empty-variadic calls
1 parent 7ad8c04 commit a47f784

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

internal/clang/function.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,12 @@ func (g *Generator) emitVariadicArgs(w io.Writer, call *ast.CallExpr, sig *types
342342
elemType := g.mapType(call, variadicParam.Type().(*types.Slice).Elem())
343343
count := len(variadicArgs)
344344

345+
if count == 0 {
346+
// No variadic args: emit a nil slice.
347+
fmt.Fprint(w, "(so_Slice){0}")
348+
return
349+
}
350+
345351
fmt.Fprintf(w, "(so_Slice){(%s[%d]){", elemType, count)
346352
targetType := variadicParam.Type().(*types.Slice).Elem()
347353
for i, arg := range variadicArgs {

internal/clang/struct.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,11 @@ func (g *Generator) emitMethodCallArgs(w io.Writer, sel *ast.SelectorExpr, call
296296
elemType := g.mapType(sel, variadicParam.Type().(*types.Slice).Elem())
297297
count := len(variadicArgs)
298298
targetType := variadicParam.Type().(*types.Slice).Elem()
299+
if count == 0 {
300+
// No variadic args: emit a nil slice.
301+
fmt.Fprintf(w, ", %s(so_Slice){0}%s", lparen, rparen)
302+
return
303+
}
299304
fmt.Fprintf(w, ", %s(so_Slice){(%s[%d]){", lparen, elemType, count)
300305
for i, arg := range variadicArgs {
301306
if i > 0 {

0 commit comments

Comments
 (0)