diff --git a/decode_test.go b/decode_test.go index e470e64..3938097 100644 --- a/decode_test.go +++ b/decode_test.go @@ -2804,3 +2804,21 @@ steps: }) } } + +func TestSameNameInineStruct(t *testing.T) { + type X struct { + X float64 `yaml:"x"` + } + + type T struct { + X `yaml:",inline"` + } + + var v T + if err := yaml.Unmarshal([]byte(`x: 0.7`), &v); err != nil { + t.Fatal(err) + } + if fmt.Sprint(v.X.X) != "0.7" { + t.Fatalf("failed to decode") + } +} diff --git a/struct.go b/struct.go index ac78f31..a3da8dd 100644 --- a/struct.go +++ b/struct.go @@ -95,7 +95,7 @@ type StructFieldMap map[string]*StructField func (m StructFieldMap) isIncludedRenderName(name string) bool { for _, v := range m { - if v.RenderName == name { + if !v.IsInline && v.RenderName == name { return true } }