Merge pull request #361 from orisano/fix/#360

fix: add a fallback uint8 sliceDecoder to bytesDecoder
This commit is contained in:
Masaaki Goshima 2022-04-13 00:41:29 +09:00 committed by GitHub
commit 171d975753
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 4 deletions

View File

@ -12,5 +12,5 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: golangci/golangci-lint-action@v2 - uses: golangci/golangci-lint-action@v2
with: with:
version: v1.36.0 version: v1.45.2
args: --timeout=5m args: --timeout=5m

View File

@ -48,6 +48,14 @@ linters:
- nlreturn - nlreturn
- testpackage - testpackage
- wsl - wsl
- varnamelen
- nilnil
- ireturn
- govet
- forcetypeassert
- cyclop
- containedctx
- revive
issues: issues:
exclude-rules: exclude-rules:

View File

@ -3907,3 +3907,14 @@ func TestIssue342(t *testing.T) {
t.Errorf("unexpected result: got(%v) != expected(%v)", got, expected) t.Errorf("unexpected result: got(%v) != expected(%v)", got, expected)
} }
} }
func TestIssue360(t *testing.T) {
var uints []uint8
err := json.Unmarshal([]byte(`[0, 1, 2]`), &uints)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if len(uints) != 3 || !(uints[0] == 0 && uints[1] == 1 && uints[2] == 2) {
t.Errorf("unexpected result: %v", uints)
}
}

View File

@ -23,9 +23,8 @@ func byteUnmarshalerSliceDecoder(typ *runtime.Type, structName string, fieldName
unmarshalDecoder = newUnmarshalJSONDecoder(runtime.PtrTo(typ), structName, fieldName) unmarshalDecoder = newUnmarshalJSONDecoder(runtime.PtrTo(typ), structName, fieldName)
case runtime.PtrTo(typ).Implements(unmarshalTextType): case runtime.PtrTo(typ).Implements(unmarshalTextType):
unmarshalDecoder = newUnmarshalTextDecoder(runtime.PtrTo(typ), structName, fieldName) unmarshalDecoder = newUnmarshalTextDecoder(runtime.PtrTo(typ), structName, fieldName)
} default:
if unmarshalDecoder == nil { unmarshalDecoder, _ = compileUint8(typ, structName, fieldName)
return nil
} }
return newSliceDecoder(unmarshalDecoder, typ, 1, structName, fieldName) return newSliceDecoder(unmarshalDecoder, typ, 1, structName, fieldName)
} }

View File

@ -1,3 +1,4 @@
//go:build !race
// +build !race // +build !race
package decoder package decoder

View File

@ -1,3 +1,4 @@
//go:build race
// +build race // +build race
package decoder package decoder