Commit a9d0da75 authored by Eden Li's avatar Eden Li Committed by Russ Cox

cgo translates empty function arguments into void instead of dying with 'unexpected type: ...'.

  Fixes #162.

R=rsc
https://golang.org/cl/157147
parent c95c27a9
......@@ -571,6 +571,15 @@ func (c *typeConv) FuncType(dtype *dwarf.FuncType) *FuncType {
p := make([]*Type, len(dtype.ParamType));
gp := make([]*ast.Field, len(dtype.ParamType));
for i, f := range dtype.ParamType {
// gcc's DWARF generator outputs a single DotDotDotType parameter for
// function pointers that specify no parameters (e.g. void
// (*__cgo_0)()). Treat this special case as void. This case is
// invalid according to ISO C anyway (i.e. void (*__cgo_1)(...) is not
// legal).
if _, ok := f.(*dwarf.DotDotDotType); ok && i == 0 {
p, gp = nil, nil;
break;
}
p[i] = c.FuncArg(f);
gp[i] = &ast.Field{Type: p[i].Go};
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment