diff options
| author | Ian Lance Taylor <iant@golang.org> | 2018-11-28 16:02:15 -0800 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2018-11-29 01:29:56 +0000 |
| commit | 4f26f24d2ae8c99bfaafb33db4b7be27ee13afab (patch) | |
| tree | e2928de29f6b278f140d19ea1c1dee377dddcd62 /src/cmd | |
| parent | 048580d341a530bb8d9ca891f95ce79aace4151f (diff) | |
| download | go-4f26f24d2ae8c99bfaafb33db4b7be27ee13afab.tar.xz | |
cmd/cgo: recognize untyped constants defined in different files
An untyped constant can be defined in any input file, we shouldn't
segregate them by file.
Updates #28772
Change-Id: I0347f15236833bb511eb49f86c449ee9241b0a25
Reviewed-on: https://go-review.googlesource.com/c/151600
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/cgo/ast.go | 3 | ||||
| -rw-r--r-- | src/cmd/cgo/gcc.go | 2 | ||||
| -rw-r--r-- | src/cmd/cgo/main.go | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/src/cmd/cgo/ast.go b/src/cmd/cgo/ast.go index c342a01783..06058cb570 100644 --- a/src/cmd/cgo/ast.go +++ b/src/cmd/cgo/ast.go @@ -66,7 +66,6 @@ func (f *File) ParseGo(name string, src []byte) { f.Package = ast1.Name.Name f.Name = make(map[string]*Name) f.NamePos = make(map[*Name]token.Pos) - f.Consts = make(map[string]bool) // In ast1, find the import "C" line and get any extra C preamble. sawC := false @@ -198,7 +197,7 @@ func (f *File) saveExprs(x interface{}, context astContext) { vs := spec.(*ast.ValueSpec) if vs.Type == nil { for _, name := range spec.(*ast.ValueSpec).Names { - f.Consts[name.Name] = true + consts[name.Name] = true } } } diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index fdd34f560f..56a4775746 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -1233,7 +1233,7 @@ func (p *Package) isConst(f *File, x ast.Expr) bool { strings.HasPrefix(x.Name, "_Ciconst_") || strings.HasPrefix(x.Name, "_Cfconst_") || strings.HasPrefix(x.Name, "_Csconst_") || - f.Consts[x.Name] + consts[x.Name] case *ast.UnaryExpr: return p.isConst(f, x.X) case *ast.BinaryExpr: diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index a317a1494d..e28a57b148 100644 --- a/src/cmd/cgo/main.go +++ b/src/cmd/cgo/main.go @@ -62,9 +62,11 @@ type File struct { Name map[string]*Name // map from Go name to Name NamePos map[*Name]token.Pos // map from Name to position of the first reference Edit *edit.Buffer - Consts map[string]bool // untyped constants } +// Untyped constants in the current package. +var consts = make(map[string]bool) + func (f *File) offset(p token.Pos) int { return fset.Position(p).Offset } |
