Initial commit: Go 1.23 release state
This commit is contained in:
37
test/typeparam/issue48185b.dir/a.go
Normal file
37
test/typeparam/issue48185b.dir/a.go
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright 2021 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package a
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type addressableValue struct{ reflect.Value }
|
||||
|
||||
type arshalers[Options, Coder any] struct {
|
||||
fncVals []typedArshaler[Options, Coder]
|
||||
fncCache sync.Map // map[reflect.Type]unmarshaler
|
||||
}
|
||||
type typedArshaler[Options, Coder any] struct {
|
||||
typ reflect.Type
|
||||
fnc func(Options, *Coder, addressableValue) error
|
||||
}
|
||||
|
||||
type UnmarshalOptions1 struct {
|
||||
// Unmarshalers is a list of type-specific unmarshalers to use.
|
||||
Unmarshalers *arshalers[UnmarshalOptions1, Decoder1]
|
||||
}
|
||||
|
||||
type Decoder1 struct {
|
||||
}
|
||||
|
||||
func (a *arshalers[Options, Coder]) lookup(fnc func(Options, *Coder, addressableValue) error, t reflect.Type) func(Options, *Coder, addressableValue) error {
|
||||
return fnc
|
||||
}
|
||||
|
||||
func UnmarshalFuncV2[T any](fn func(UnmarshalOptions1, *Decoder1, T) error) *arshalers[UnmarshalOptions1, Decoder1] {
|
||||
return &arshalers[UnmarshalOptions1, Decoder1]{}
|
||||
}
|
||||
18
test/typeparam/issue48185b.dir/main.go
Normal file
18
test/typeparam/issue48185b.dir/main.go
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright 2021 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"./a"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
_ = a.UnmarshalOptions1{
|
||||
Unmarshalers: a.UnmarshalFuncV2(func(opts a.UnmarshalOptions1, dec *a.Decoder1, val *interface{}) (err error) {
|
||||
return fmt.Errorf("error")
|
||||
}),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user