diff --git a/vendor/github.com/mitchellh/copystructure/copystructure.go b/vendor/github.com/mitchellh/copystructure/copystructure.go index 831c37de85..349d38d61a 100644 --- a/vendor/github.com/mitchellh/copystructure/copystructure.go +++ b/vendor/github.com/mitchellh/copystructure/copystructure.go @@ -295,12 +295,24 @@ func (w *walker) StructField(f reflect.StructField, v reflect.Value) error { return nil } + // If PkgPath is non-empty, this is a private (unexported) field. + // We do not set this unexported since the Go runtime doesn't allow us. + if f.PkgPath != "" { + w.ignore() + return nil + } + // Push the field onto the stack, we'll handle it when we exit // the struct field in Exit... w.valPush(reflect.ValueOf(f)) return nil } +// ignore causes the walker to ignore any more values until we exit this on +func (w *walker) ignore() { + w.ignoreDepth = w.depth +} + func (w *walker) ignoring() bool { return w.ignoreDepth > 0 && w.depth >= w.ignoreDepth } diff --git a/vendor/github.com/mitchellh/reflectwalk/reflectwalk.go b/vendor/github.com/mitchellh/reflectwalk/reflectwalk.go index 1f20665980..fafd443a43 100644 --- a/vendor/github.com/mitchellh/reflectwalk/reflectwalk.go +++ b/vendor/github.com/mitchellh/reflectwalk/reflectwalk.go @@ -4,9 +4,7 @@ // those elements. package reflectwalk -import ( - "reflect" -) +import "reflect" // PrimitiveWalker implementations are able to handle primitive values // within complex structures. Primitive values are numbers, strings, @@ -145,6 +143,12 @@ func walkMap(v reflect.Value, w interface{}) error { for _, k := range v.MapKeys() { kv := v.MapIndex(k) + // if the map value type is an interface, we need to extract the Elem + // for the next call to walk + if kv.Kind() == reflect.Interface { + kv = kv.Elem() + } + if mw, ok := w.(MapWalker); ok { if err := mw.MapElem(v, k, kv); err != nil { return err @@ -204,6 +208,12 @@ func walkSlice(v reflect.Value, w interface{}) (err error) { for i := 0; i < v.Len(); i++ { elem := v.Index(i) + // if the value type is an interface, we need to extract the Elem + // for the next call to walk + if elem.Kind() == reflect.Interface { + elem = elem.Elem() + } + if sw, ok := w.(SliceWalker); ok { if err := sw.SliceElem(i, elem); err != nil { return err diff --git a/vendor/vendor.json b/vendor/vendor.json index 86a293b0d9..8bd359be97 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1472,10 +1472,10 @@ "revision": "8631ce90f28644f54aeedcb3e389a85174e067d1" }, { - "checksumSHA1": "Vfkp+PcZ1wZ4+D6AsHTpKkdsQG0=", + "checksumSHA1": "EDAtec3XSbTjw6gWG+NNScows9M=", "path": "github.com/mitchellh/copystructure", - "revision": "501dcbdc7c358c4d0bfa066018834bedca79fde3", - "revisionTime": "2016-09-16T19:51:24Z" + "revision": "8f3c396a26dadccbd29ee24c76c89166249cc16f", + "revisionTime": "2016-09-27T21:34:29Z" }, { "path": "github.com/mitchellh/go-homedir", @@ -1507,8 +1507,10 @@ "revision": "6e6954073784f7ee67b28f2d22749d6479151ed7" }, { + "checksumSHA1": "Qfbnn/PnYNR2ZHraUeHTxT4H7lM=", "path": "github.com/mitchellh/reflectwalk", - "revision": "eecf4c70c626c7cfbb95c90195bc34d386c74ac6" + "revision": "2d53f44828cae4c770d745a3560e37d3356774a6", + "revisionTime": "2016-09-27T21:55:38Z" }, { "checksumSHA1": "/iig5lYSPCL3C8J7e4nTAevYNDE=",