summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2013-01-28 16:45:45 -0800
committerBrad Fitzpatrick <bradfitz@golang.org>2013-01-28 16:45:45 -0800
commit0e1305abc2e1e7dad8af5a319779b393114931de (patch)
treef77c48f526fdab2b36eb5cdbc056692e91c85f05 /src
parent91e99c13457109e3571767cae3fc56c472bdd7dc (diff)
downloadgo-git-0e1305abc2e1e7dad8af5a319779b393114931de.tar.gz
cmd/api: normalize byte to uint8 and rune to int32
R=golang-dev, adg, mikioh.mikioh CC=golang-dev https://golang.org/cl/7195049
Diffstat (limited to 'src')
-rw-r--r--src/cmd/api/goapi.go12
-rw-r--r--src/cmd/api/testdata/src/pkg/p1/golden.txt7
-rw-r--r--src/cmd/api/testdata/src/pkg/p1/p1.go8
-rw-r--r--src/cmd/api/testdata/src/pkg/p3/golden.txt2
4 files changed, 27 insertions, 2 deletions
diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go
index 1ee852ea79..906cd3a68d 100644
--- a/src/cmd/api/goapi.go
+++ b/src/cmd/api/goapi.go
@@ -1140,10 +1140,21 @@ func (w *Walker) namelessField(f *ast.Field) *ast.Field {
}
}
+var (
+ byteRx = regexp.MustCompile(`\bbyte\b`)
+ runeRx = regexp.MustCompile(`\brune\b`)
+)
+
func (w *Walker) emitFeature(feature string) {
if !w.wantedPkg[w.curPackageName] {
return
}
+ if strings.Contains(feature, "byte") {
+ feature = byteRx.ReplaceAllString(feature, "uint8")
+ }
+ if strings.Contains(feature, "rune") {
+ feature = runeRx.ReplaceAllString(feature, "int32")
+ }
f := strings.Join(w.scope, ", ") + ", " + feature
if _, dup := w.features[f]; dup {
panic("duplicate feature inserted: " + f)
@@ -1159,6 +1170,7 @@ func (w *Walker) emitFeature(feature string) {
}
panic("feature contains newlines: " + f)
}
+
w.features[f] = true
if *verbose {
log.Printf("feature: %s", f)
diff --git a/src/cmd/api/testdata/src/pkg/p1/golden.txt b/src/cmd/api/testdata/src/pkg/p1/golden.txt
index 9cbdefb77a..abcc0ce6c4 100644
--- a/src/cmd/api/testdata/src/pkg/p1/golden.txt
+++ b/src/cmd/api/testdata/src/pkg/p1/golden.txt
@@ -28,6 +28,9 @@ pkg p1, method (TPtrExported) OnEmbedded()
pkg p1, method (TPtrUnexported) OnBothTandBPtr()
pkg p1, method (TPtrUnexported) OnBothTandBVal()
pkg p1, type B struct
+pkg p1, type ByteStruct struct
+pkg p1, type ByteStruct struct, B uint8
+pkg p1, type ByteStruct struct, R int32
pkg p1, type Codec struct
pkg p1, type Codec struct, Func func(int, int) int
pkg p1, type EmbedSelector struct
@@ -65,7 +68,9 @@ pkg p1, type T struct
pkg p1, type TPtrExported struct
pkg p1, type TPtrExported struct, embedded *Embedded
pkg p1, type TPtrUnexported struct
-pkg p1, var ByteConv []byte
+pkg p1, var Byte uint8
+pkg p1, var ByteConv []uint8
+pkg p1, var ByteFunc func(uint8) int32
pkg p1, var ChecksumError error
pkg p1, var SIPtr *SI
pkg p1, var SIPtr2 *SI
diff --git a/src/cmd/api/testdata/src/pkg/p1/p1.go b/src/cmd/api/testdata/src/pkg/p1/p1.go
index 1af59d5ca9..f94c9ceeb1 100644
--- a/src/cmd/api/testdata/src/pkg/p1/p1.go
+++ b/src/cmd/api/testdata/src/pkg/p1/p1.go
@@ -193,3 +193,11 @@ var ifaceVar interface{} = 5
var assertVar = ifaceVar.(int)
var indexVar = m["foo"]
+
+var Byte byte
+var ByteFunc func(byte) rune
+
+type ByteStruct struct {
+ B byte
+ R rune
+}
diff --git a/src/cmd/api/testdata/src/pkg/p3/golden.txt b/src/cmd/api/testdata/src/pkg/p3/golden.txt
index 579692fe67..a7dcccd1bd 100644
--- a/src/cmd/api/testdata/src/pkg/p3/golden.txt
+++ b/src/cmd/api/testdata/src/pkg/p3/golden.txt
@@ -1,3 +1,3 @@
-pkg p3, method (*ThirdBase) GoodPlayer() (int, int, int)
pkg p3, func BadHop(int, int, int) (bool, bool, *ThirdBase, *ThirdBase, error)
+pkg p3, method (*ThirdBase) GoodPlayer() (int, int, int)
pkg p3, type ThirdBase struct