Commit 795ff00d authored by Rob Pike's avatar Rob Pike

reflect: add a secret method to ArrayOrSliceType.

It was observed that the interface was generic enough
that several other types implemented it too.

Fixes #1530.

R=rsc
CC=golang-dev
https://golang.org/cl/4169063
parent 1e73fed8
......@@ -163,6 +163,10 @@ type SliceType struct {
elem *runtime.Type
}
// arrayOrSliceType is an unexported method that guarantees only
// arrays and slices implement ArrayOrSliceType.
func (*SliceType) arrayOrSliceType() {}
// Struct field
type structField struct {
name *string
......@@ -397,6 +401,10 @@ func (t *ArrayType) Len() int { return int(t.len) }
// Elem returns the type of the array's elements.
func (t *ArrayType) Elem() Type { return toType(*t.elem) }
// arrayOrSliceType is an unexported method that guarantees only
// arrays and slices implement ArrayOrSliceType.
func (*ArrayType) arrayOrSliceType() {}
// Dir returns the channel direction.
func (t *ChanType) Dir() ChanDir { return ChanDir(t.dir) }
......@@ -675,6 +683,7 @@ func toType(i interface{}) Type {
type ArrayOrSliceType interface {
Type
Elem() Type
arrayOrSliceType() // Guarantees only Array and Slice implement this interface.
}
// Typeof returns the reflection Type of the value in the interface{}.
......
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