diff options
| author | Ian Lance Taylor <iant@golang.org> | 2016-02-23 16:11:46 -0800 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2016-02-27 22:51:51 +0000 |
| commit | 71cc445cf92dd3014e8b382809ed1b9c077e7973 (patch) | |
| tree | 7df3bdc3968fdb7dd61c9c9a18380601859fd1ca /src | |
| parent | 922ce58de0181c114c09e6fbd6ab28f1d477898d (diff) | |
| download | go-71cc445cf92dd3014e8b382809ed1b9c077e7973.tar.xz | |
cmd/cgo: recognize known C typedefs as types
Fixes #14483.
Change-Id: I0cddfe27fd8d00ba85659d0b618410e39ebf45cb
Reviewed-on: https://go-review.googlesource.com/19860
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/cgo/gcc.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index 5bfdef785c..fe9af1769d 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -819,14 +819,17 @@ func (p *Package) hasSideEffects(f *File, x ast.Expr) bool { func (p *Package) isType(t ast.Expr) bool { switch t := t.(type) { case *ast.SelectorExpr: - if t.Sel.Name != "Pointer" { - return false - } id, ok := t.X.(*ast.Ident) if !ok { return false } - return id.Name == "unsafe" + if id.Name == "unsafe" && t.Sel.Name == "Pointer" { + return true + } + if id.Name == "C" && typedef["_Ctype_"+t.Sel.Name] != nil { + return true + } + return false case *ast.Ident: // TODO: This ignores shadowing. switch t.Name { |
