golangci-lint/test/testdata/errchkjson.go

642 lines
27 KiB
Go

//golangcitest:args -Eerrchkjson
//golangcitest:config_path testdata/configs/errchkjson.yml
package testdata
import (
"encoding"
"encoding/json"
"fmt"
"io/ioutil"
"unsafe"
)
type marshalText struct{}
func (mt marshalText) MarshalText() ([]byte, error) {
return []byte(`mt`), nil
}
var _ encoding.TextMarshaler = marshalText(struct{}{})
// JSONMarshalSafeTypesWithNoSafe contains a multitude of test cases to marshal different combinations of types to JSON,
// that are safe, that is, they will never return an error, if these types are marshaled to JSON.
func JSONMarshalSafeTypesWithNoSafe() {
var err error
_, _ = json.Marshal(nil) // want "Error return value of `encoding/json.Marshal` is not checked"
json.Marshal(nil) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(nil) // nil is safe and check-error-free-encoding is false
_ = err
_, _ = json.MarshalIndent(nil, "", " ") // want "Error return value of `encoding/json.MarshalIndent` is not checked"
json.MarshalIndent(nil, "", " ") // want "Error return value of `encoding/json.MarshalIndent` is not checked"
_, err = json.MarshalIndent(nil, "", " ") // nil is safe and check-error-free-encoding is false
_ = err
enc := json.NewEncoder(ioutil.Discard)
_ = enc.Encode(nil) // want "Error return value of `\\([*]encoding/json.Encoder\\).Encode` is not checked"
enc.Encode(nil) // want "Error return value of `\\([*]encoding/json.Encoder\\).Encode` is not checked"
err = enc.Encode(nil) // nil is safe and check-error-free-encoding is false
_ = err
var b bool
_, _ = json.Marshal(b) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(b) // bool is safe and check-error-free-encoding is false
_ = err
var i int
_, _ = json.Marshal(i) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(i) // int is safe and check-error-free-encoding is false
_ = err
var i8 int8
_, _ = json.Marshal(i8) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(i8) // int8 is safe and check-error-free-encoding is false
_ = err
var i16 int16
_, _ = json.Marshal(i16) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(i16) // int16 is safe and check-error-free-encoding is false
_ = err
var i32 int32
_, _ = json.Marshal(i32) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(i32) // int32 / rune is safe and check-error-free-encoding is false
_ = err
var i64 int64
_, _ = json.Marshal(i64) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(i64) // int64 is safe and check-error-free-encoding is false
_ = err
var ui uint
_, _ = json.Marshal(ui) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ui) // uint is safe and check-error-free-encoding is false
_ = err
var ui8 uint8
_, _ = json.Marshal(ui8) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ui8) // uint8 is safe and check-error-free-encoding is false
_ = err
var ui16 uint16
_, _ = json.Marshal(ui16) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ui16) // uint16 is safe and check-error-free-encoding is false
_ = err
var ui32 uint32
_, _ = json.Marshal(ui32) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ui32) // uint32 is safe and check-error-free-encoding is false
_ = err
var ui64 uint64
_, _ = json.Marshal(ui64) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ui64) // uint64 is safe and check-error-free-encoding is false
_ = err
var uiptr uintptr
_, _ = json.Marshal(uiptr) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(uiptr) // uintptr is safe and check-error-free-encoding is false
_ = err
var str string
_, _ = json.Marshal(str) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(str) // string is safe and check-error-free-encoding is false
_ = err
var strSlice []string
_, _ = json.Marshal(strSlice) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(strSlice) // []string is safe and check-error-free-encoding is false
_ = err
var intSlice []int
_, _ = json.Marshal(intSlice) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(intSlice) // []int is safe and check-error-free-encoding is false
_ = err
var boolSlice []bool
_, _ = json.Marshal(boolSlice) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(boolSlice) // []bool is safe and check-error-free-encoding is false
_ = err
var strArray [10]string
_, _ = json.Marshal(strArray) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(strArray) // [10]string is safe and check-error-free-encoding is false
_ = err
var intArray [10]int
_, _ = json.Marshal(intArray) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(intArray) // [10]int is safe and check-error-free-encoding is false
_ = err
var boolArray [10]bool
_, _ = json.Marshal(boolArray) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(boolArray) // [10]bool is safe and check-error-free-encoding is false
_ = err
var basicStruct struct {
Bool bool
Int int
Int8 int8
Int16 int16
Int32 int32 // also rune
Int64 int64
Uint uint
Uint8 uint8 // also byte
Uint16 uint16
Uint32 uint32
Uint64 uint64
Uintptr uintptr
String string
}
_, _ = json.Marshal(basicStruct) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(basicStruct) // struct containing only safe basic types is safe and check-error-free-encoding is false
_ = err
var ptrStruct struct {
Bool *bool
Int *int
Int8 *int8
Int16 *int16
Int32 *int32
Int64 *int64
Uint *uint
Uint8 *uint8
Uint16 *uint16
Uint32 *uint32
Uint64 *uint64
Uintptr *uintptr
String *string
}
_, _ = json.Marshal(ptrStruct) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(ptrStruct) // struct containing pointer to only safe basic types is safe and check-error-free-encoding is false
_ = err
var mapStrStr map[string]string
_, _ = json.Marshal(mapStrStr) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapStrStr) // map[string]string is safe and check-error-free-encoding is false
_ = err
var mapStrInt map[string]int
_, _ = json.Marshal(mapStrInt) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapStrInt) // map[string]int is safe and check-error-free-encoding is false
_ = err
var mapStrBool map[string]bool
_, _ = json.Marshal(mapStrBool) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapStrBool) // map[string]bool is safe and check-error-free-encoding is false
_ = err
var mapIntStr map[int]string
_, _ = json.Marshal(mapIntStr) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapIntStr) // map[int]string is safe and check-error-free-encoding is false
_ = err
var mapIntInt map[int]int
_, _ = json.Marshal(mapIntInt) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapIntInt) // map[int]int is safe and check-error-free-encoding is false
_ = err
var mapIntBool map[int]bool
_, _ = json.Marshal(mapIntBool) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(mapIntBool) // map[int]bool is safe and check-error-free-encoding is false
_ = err
type innerStruct struct {
Bool bool
Int int
String string
StrSlice []string
IntSlice []int
BoolSlice []bool
StrArray [10]string
IntArray [10]int
BoolArray [10]bool
MapStrStr map[string]string
MapStrInt map[string]int
MapStrBool map[string]bool
MapIntStr map[int]string
MapIntInt map[int]int
MapIntBool map[int]bool
}
var outerStruct struct {
Bool bool
Int int
String string
StrSlice []string
IntSlice []int
BoolSlice []bool
StrArray [10]string
IntArray [10]int
BoolArray [10]bool
MapStrStr map[string]string
MapStrInt map[string]int
MapStrBool map[string]bool
MapIntStr map[int]string
MapIntInt map[int]int
MapIntBool map[int]bool
InnerStruct innerStruct
}
_, _ = json.Marshal(outerStruct) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(outerStruct) // struct with only safe types is safe and check-error-free-encoding is false
_ = err
}
type (
structKey struct{ id int }
ExportedUnsafeAndInvalidStruct struct { // unsafe unexported but omitted
F64 float64
F64Ptr *float64
F64Slice []float64
F64Array [10]float64
MapStrF64 map[string]float64
MapEIStr map[interface{}]string
Number json.Number
NumberPtr *json.Number
NumberSlice []json.Number
MapNumberStr map[json.Number]string
Ei interface{}
Stringer fmt.Stringer
Mt marshalText
MapMarshalTextString map[marshalText]string
C128 complex128
C128Ptr *complex128
C128Slice []complex128
C128Array [10]complex128
MapBoolStr map[bool]string
MapF64Str map[float64]string
F func()
Ch chan struct{}
UnsafePtr unsafe.Pointer
MapStructStr map[structKey]string
}
)
// JSONMarshalSafeStructWithUnexportedFieldsWithNoSafe contains a struct with unexported, unsafe fields.
func JSONMarshalSaveStructWithUnexportedFieldsWithNoSafe() {
var err error
var unexportedInStruct struct {
Bool bool // safe exported
f64 float64 // unsafe unexported
f64Ptr *float64 // unsafe unexported
f64Slice []float64 // unsafe unexported
f64Array [10]float64 // unsafe unexported
mapStrF64 map[string]float64 // unsafe unexported
mapEIStr map[interface{}]string // unsafe unexported
number json.Number // unsafe unexported
numberPtr *json.Number // unsafe unexported
numberSlice []json.Number // unsafe unexported
mapNumberStr map[json.Number]string // unsafe unexported
ei interface{} // unsafe unexported
stringer fmt.Stringer // unsafe unexported
mt marshalText // unsafe unexported
mapMarshalTextString map[marshalText]string // unsafe unexported
unexportedStruct ExportedUnsafeAndInvalidStruct // unsafe unexported
unexportedStructPtr *ExportedUnsafeAndInvalidStruct // unsafe unexported
c128 complex128 // invalid unexported
c128Slice []complex128 // invalid unexported
c128Array [10]complex128 // invalid unexported
mapBoolStr map[bool]string // invalid unexported
mapF64Str map[float64]string // invalid unexported
f func() // invalid unexported
ch chan struct{} // invalid unexported
unsafePtr unsafe.Pointer // invalid unexported
mapStructStr map[structKey]string // invalid unexported
}
_ = unexportedInStruct.f64
_ = unexportedInStruct.f64Ptr
_ = unexportedInStruct.f64Slice
_ = unexportedInStruct.f64Array
_ = unexportedInStruct.mapStrF64
_ = unexportedInStruct.mapEIStr
_ = unexportedInStruct.number
_ = unexportedInStruct.numberPtr
_ = unexportedInStruct.numberSlice
_ = unexportedInStruct.mapNumberStr
_ = unexportedInStruct.ei
_ = unexportedInStruct.stringer
_ = unexportedInStruct.mt
_ = unexportedInStruct.mapMarshalTextString
_ = unexportedInStruct.unexportedStruct
_ = unexportedInStruct.unexportedStructPtr
_ = unexportedInStruct.c128
_ = unexportedInStruct.c128Slice
_ = unexportedInStruct.c128Array
_ = unexportedInStruct.mapBoolStr
_ = unexportedInStruct.mapF64Str
_ = unexportedInStruct.f
_ = unexportedInStruct.ch
_ = unexportedInStruct.unsafePtr
_ = unexportedInStruct.mapStructStr[structKey{1}]
_, _ = json.Marshal(unexportedInStruct) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(unexportedInStruct) // struct containing unsafe but unexported fields is safe
_ = err
}
// JSONMarshalSafeStructWithOmittedFieldsWithNoSafe contains a struct with omitted, unsafe fields.
func JSONMarshalSaveStructWithOmittedFieldsWithNoSafe() {
var err error
var omitInStruct struct {
Bool bool // safe exported
F64 float64 `json:"-"` // unsafe exported but omitted
F64Ptr *float64 `json:"-"` // unsafe exported but omitted
F64Slice []float64 `json:"-"` // unsafe exported but omitted
F64Array [10]float64 `json:"-"` // unsafe exported but omitted
MapStrF64 map[string]float64 `json:"-"` // unsafe exported but omitted
MapEIStr map[interface{}]string `json:"-"` // unsafe exported but omitted
Number json.Number `json:"-"` // unsafe exported but omitted
NumberPtr *json.Number `json:"-"` // unsafe exported but omitted
NumberSlice []json.Number `json:"-"` // unsafe exported but omitted
MapNumberStr map[json.Number]string `json:"-"` // unsafe exported but omitted
Ei interface{} `json:"-"` // unsafe exported but omitted
Stringer fmt.Stringer `json:"-"` // unsafe exported but omitted
Mt marshalText `json:"-"` // unsafe exported but omitted
MapMarshalTextString map[marshalText]string `json:"-"` // unsafe exported but omitted
ExportedStruct ExportedUnsafeAndInvalidStruct `json:"-"` // unsafe exported but omitted
ExportedStructPtr *ExportedUnsafeAndInvalidStruct `json:"-"` // unsafe exported but omitted
C128 complex128 `json:"-"` // invalid exported but omitted
C128Slice []complex128 `json:"-"` // invalid exported but omitted
C128Array [10]complex128 `json:"-"` // invalid exported but omitted
MapBoolStr map[bool]string `json:"-"` // invalid exported but omitted
MapF64Str map[float64]string `json:"-"` // invalid exported but omitted
F func() `json:"-"` // invalid exported but omitted
Ch chan struct{} `json:"-"` // invalid exported but omitted
UnsafePtr unsafe.Pointer `json:"-"` // invalid exported but omitted
MapStructStr map[structKey]string `json:"-"` // invalid exported but omitted
}
_ = omitInStruct.MapStructStr[structKey{1}]
_, _ = json.Marshal(omitInStruct) // want "Error return value of `encoding/json.Marshal` is not checked"
_, err = json.Marshal(omitInStruct) // struct containing unsafe but omitted, exported fields is safe and check-error-free-encoding is false
_ = err
}
// JSONMarshalUnsafeTypes contains a multitude of test cases to marshal different combinations of types to JSON,
// that can potentially lead to json.Marshal returning an error.
func JSONMarshalUnsafeTypes() {
var err error
var f32 float32
json.Marshal(f32) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, _ = json.Marshal(f32) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, err = json.Marshal(f32) // err is checked
_ = err
var f64 float64
_, _ = json.Marshal(f64) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float64` found"
_, err = json.Marshal(f64) // err is checked
_ = err
var f32Slice []float32
_, _ = json.Marshal(f32Slice) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, err = json.Marshal(f32Slice) // err is checked
_ = err
var f64Slice []float64
_, _ = json.Marshal(f64Slice) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float64` found"
_, err = json.Marshal(f64Slice) // err is checked
_ = err
var f32Array [10]float32
_, _ = json.Marshal(f32Array) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, err = json.Marshal(f32Array) // err is checked
_ = err
var f64Array [10]float64
_, _ = json.Marshal(f64Array) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float64` found"
_, err = json.Marshal(f64Array) // err is checked
_ = err
var structPtrF32 struct {
F32 *float32
}
_, _ = json.Marshal(structPtrF32) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, err = json.Marshal(structPtrF32) // err is checked
_ = err
var structPtrF64 struct {
F64 *float64
}
_, _ = json.Marshal(structPtrF64) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float64` found"
_, err = json.Marshal(structPtrF64) // err is checked
_ = err
var mapStrF32 map[string]float32
_, _ = json.Marshal(mapStrF32) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float32` found"
_, err = json.Marshal(mapStrF32) // err is checked
_ = err
var mapStrF64 map[string]float64
_, _ = json.Marshal(mapStrF64) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `float64` found"
_, err = json.Marshal(mapStrF64) // err is checked
_ = err
var mapEIStr map[interface{}]string
_, _ = json.Marshal(mapEIStr) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `interface{}` as map key found"
_, err = json.Marshal(mapEIStr) // err is checked
_ = err
var mapStringerStr map[fmt.Stringer]string
_, _ = json.Marshal(mapStringerStr) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `fmt.Stringer` as map key found"
_, err = json.Marshal(mapStringerStr) // err is checked
_ = err
var number json.Number
_, _ = json.Marshal(number) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `encoding/json.Number` found"
_, err = json.Marshal(number) // err is checked
_ = err
var numberSlice []json.Number
_, _ = json.Marshal(numberSlice) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `encoding/json.Number` found"
_, err = json.Marshal(numberSlice) // err is checked
_ = err
var mapNumberStr map[json.Number]string
_, _ = json.Marshal(mapNumberStr) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `encoding/json.Number` as map key found"
_, err = json.Marshal(mapNumberStr) // err is checked
_ = err
var mapStrNumber map[string]json.Number
_, _ = json.Marshal(mapStrNumber) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `encoding/json.Number` found"
_, err = json.Marshal(mapStrNumber) // err is checked
_ = err
var ei interface{}
_, _ = json.Marshal(ei) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `interface{}` found"
_, err = json.Marshal(ei) // err is checked
_ = err
var eiptr *interface{}
_, _ = json.Marshal(eiptr) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `*interface{}` found"
_, err = json.Marshal(eiptr) // err is checked
_ = err
var stringer fmt.Stringer
_, _ = json.Marshal(stringer) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `fmt.Stringer` found"
_, err = json.Marshal(stringer) // err is checked
_ = err
var structWithEmptyInterface struct {
EmptyInterface interface{}
}
_, _ = json.Marshal(structWithEmptyInterface) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `interface{}` found"
_, err = json.Marshal(structWithEmptyInterface) // err is checked
_ = err
var mt marshalText
_, _ = json.Marshal(mt) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `[a-z-]+.marshalText` found"
_, err = json.Marshal(mt) // err is checked
_ = err
var mapMarshalTextString map[marshalText]string
_, _ = json.Marshal(mapMarshalTextString) // want "Error return value of `encoding/json.Marshal` is not checked: unsafe type `[a-z-]+.marshalText` as map key found"
_, err = json.Marshal(mapMarshalTextString) // err is checked
_ = err
}
// JSONMarshalInvalidTypes contains a multitude of test cases to marshal different combinations of types to JSON,
// that are invalid and not supported by json.Marshal, that is they will always return an error, if these types used
// with json.Marshal.
func JSONMarshalInvalidTypes() {
var err error
var c64 complex64
json.Marshal(c64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_, _ = json.Marshal(c64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_, err = json.Marshal(c64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_ = err
var c128 complex128
_, _ = json.Marshal(c128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_, err = json.Marshal(c128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_ = err
var sliceC64 []complex64
_, _ = json.Marshal(sliceC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_, err = json.Marshal(sliceC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_ = err
var sliceC128 []complex128
_, _ = json.Marshal(sliceC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_, err = json.Marshal(sliceC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_ = err
var arrayC64 []complex64
_, _ = json.Marshal(arrayC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_, err = json.Marshal(arrayC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_ = err
var arrayC128 []complex128
_, _ = json.Marshal(arrayC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_, err = json.Marshal(arrayC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_ = err
var structPtrC64 struct {
C64 *complex64
}
_, _ = json.Marshal(structPtrC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_, err = json.Marshal(structPtrC64) // want "`encoding/json.Marshal` for unsupported type `complex64` found"
_ = err
var structPtrC128 struct {
C128 *complex128
}
_, _ = json.Marshal(structPtrC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_, err = json.Marshal(structPtrC128) // want "`encoding/json.Marshal` for unsupported type `complex128` found"
_ = err
var mapBoolStr map[bool]string
_, _ = json.Marshal(mapBoolStr) // want "`encoding/json.Marshal` for unsupported type `bool` as map key found"
_, err = json.Marshal(mapBoolStr) // want "`encoding/json.Marshal` for unsupported type `bool` as map key found"
_ = err
var mapF32Str map[float32]string
_, _ = json.Marshal(mapF32Str) // want "`encoding/json.Marshal` for unsupported type `float32` as map key found"
_, err = json.Marshal(mapF32Str) // want "`encoding/json.Marshal` for unsupported type `float32` as map key found"
_ = err
var mapF64Str map[float64]string
_, _ = json.Marshal(mapF64Str) // want "`encoding/json.Marshal` for unsupported type `float64` as map key found"
_, err = json.Marshal(mapF64Str) // want "`encoding/json.Marshal` for unsupported type `float64` as map key found"
_ = err
var mapC64Str map[complex64]string
_, _ = json.Marshal(mapC64Str) // want "`encoding/json.Marshal` for unsupported type `complex64` as map key found"
_, err = json.Marshal(mapC64Str) // want "`encoding/json.Marshal` for unsupported type `complex64` as map key found"
_ = err
var mapC128Str map[complex128]string
_, _ = json.Marshal(mapC128Str) // want "`encoding/json.Marshal` for unsupported type `complex128` as map key found"
_, err = json.Marshal(mapC128Str) // want "`encoding/json.Marshal` for unsupported type `complex128` as map key found"
_ = err
mapStructStr := map[structKey]string{structKey{1}: "str"}
_, _ = json.Marshal(mapStructStr) // want "`encoding/json.Marshal` for unsupported type `[a-z-]+.structKey` as map key found"
_, err = json.Marshal(mapStructStr) // want "`encoding/json.Marshal` for unsupported type `[a-z-]+.structKey` as map key found"
_ = err
f := func() {}
_, _ = json.Marshal(f) // want "`encoding/json.Marshal` for unsupported type `func\\(\\)` found"
_, err = json.Marshal(f) // want "`encoding/json.Marshal` for unsupported type `func\\(\\)` found"
_ = err
var ch chan struct{} = make(chan struct{})
_, _ = json.Marshal(ch) // want "`encoding/json.Marshal` for unsupported type `chan struct{}` found"
_, err = json.Marshal(ch) // want "`encoding/json.Marshal` for unsupported type `chan struct{}` found"
_ = err
var unsafePtr unsafe.Pointer
_, _ = json.Marshal(unsafePtr) // want "`encoding/json.Marshal` for unsupported type `unsafe.Pointer` found"
_, err = json.Marshal(unsafePtr) // want "`encoding/json.Marshal` for unsupported type `unsafe.Pointer` found"
_ = err
}
// NotJSONMarshal contains other go ast node types, that are not considered by errchkjson
func NotJSONMarshal() {
s := fmt.Sprintln("I am not considered by errchkjson")
_ = s
f := func() bool { return false }
_ = f()
}
// JSONMarshalStructWithoutExportedFields contains a struct without exported fields.
func JSONMarshalStructWithoutExportedFields() {
var err error
var withoutExportedFields struct {
privateField bool
ExportedButOmittedField bool `json:"-"`
}
_, err = json.Marshal(withoutExportedFields)
_ = err
}
// JSONMarshalStructWithoutExportedFields contains a struct without exported fields.
func JSONMarshalStructWithNestedStructWithoutExportedFields() {
var err error
var withNestedStructWithoutExportedFields struct {
ExportedStruct struct {
privatField bool
}
}
_, err = json.Marshal(withNestedStructWithoutExportedFields)
_ = err
}