diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go index 552e2f331e1d2c7ba6a8d77833c0c5ceaed8677f..1782b73cebb4e4544277ec46a8c7681f03052889 100644 --- a/src/cmd/api/goapi.go +++ b/src/cmd/api/goapi.go @@ -579,7 +579,14 @@ func (w *Walker) varValueType(vi interface{}) (string, error) { } } // maybe a function call; maybe a conversion. Need to lookup type. - return "", fmt.Errorf("not a known function %q", w.nodeString(v.Fun)) + // TODO(bradfitz): this is a hack, but arguably most of this tool is, + // until the Go AST has type information. + nodeStr := w.nodeString(v.Fun) + switch nodeStr { + case "string", "[]byte": + return nodeStr, nil + } + return "", fmt.Errorf("not a known function %q", nodeStr) default: return "", fmt.Errorf("unknown const value type %T", vi) } diff --git a/src/cmd/api/testdata/src/pkg/p1/golden.txt b/src/cmd/api/testdata/src/pkg/p1/golden.txt index 3a1b3f5350d73482610a85bbbd87775d35673321..e334e5776eea2a780424821cce8e136c4f4f05f9 100644 --- a/src/cmd/api/testdata/src/pkg/p1/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p1/golden.txt @@ -58,14 +58,16 @@ 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 ChecksumError error pkg p1, var SIPtr *SI pkg p1, var SIPtr2 *SI pkg p1, var SIVal SI +pkg p1, var StrConv string pkg p1, var V string -pkg p1, var VError Error pkg p1, var V1 uint64 pkg p1, var V2 p2.Twoer +pkg p1, var VError Error pkg p1, var X I pkg p1, var X int64 pkg p1, var Y int diff --git a/src/cmd/api/testdata/src/pkg/p1/p1.go b/src/cmd/api/testdata/src/pkg/p1/p1.go index 9d2afa913e42d152cbbf393401fbf885f784286f..d965bb75e72b616f418d51e90f3d05976de5d225 100644 --- a/src/cmd/api/testdata/src/pkg/p1/p1.go +++ b/src/cmd/api/testdata/src/pkg/p1/p1.go @@ -27,6 +27,12 @@ var ( V2 = ptwo.G() ) +// Variables with conversions: +var ( + StrConv = string("foo") + ByteConv = []byte("foo") +) + var ChecksumError = ptwo.NewError("gzip checksum error") const B = 2