File tree Expand file tree Collapse file tree 2 files changed +8
-16
lines changed Expand file tree Collapse file tree 2 files changed +8
-16
lines changed Original file line number Diff line number Diff line change @@ -39,21 +39,17 @@ type Assigner interface {
39
39
// with the updated value pertinent to that path.
40
40
//
41
41
func Assign (dst interface {}, ptr JSONPointer , value interface {}) error {
42
- if err := ptr .Validate (); err != nil {
43
- return err
44
- }
45
42
if value == nil {
46
43
return Delete (dst , ptr )
47
44
}
48
45
dv := reflect .ValueOf (dst )
49
46
s := newState (ptr , Assigning )
50
47
defer s .Release ()
48
+ if err := ptr .Validate (); err != nil {
49
+ return newError (err , * s , dv .Type ())
50
+ }
51
51
if dv .Kind () != reflect .Ptr || dv .IsNil () {
52
- return & ptrError {
53
- state : * s ,
54
- err : ErrNonPointer ,
55
- typ : dv .Type (),
56
- }
52
+ return newError (ErrNonPointer , * s , dv .Type ())
57
53
}
58
54
cpy := dv
59
55
dv = dv .Elem ()
Original file line number Diff line number Diff line change @@ -26,18 +26,14 @@ type Deleter interface {
26
26
// If any part of the path is unreachable, the Delete function is
27
27
// considered a success as the value is not present to delete.
28
28
func Delete (src interface {}, ptr JSONPointer ) error {
29
- if err := ptr .Validate (); err != nil {
30
- return err
31
- }
32
29
dv := reflect .ValueOf (src )
33
30
s := newState (ptr , Deleting )
34
31
defer s .Release ()
32
+ if err := ptr .Validate (); err != nil {
33
+ return newError (err , * s , dv .Type ())
34
+ }
35
35
if dv .Kind () != reflect .Ptr || dv .IsNil () {
36
- return & ptrError {
37
- state : * s ,
38
- err : ErrNonPointer ,
39
- typ : dv .Type (),
40
- }
36
+ return newError (ErrNonPointer , * s , dv .Type ())
41
37
}
42
38
cpy := dv
43
39
dv = dv .Elem ()
You can’t perform that action at this time.
0 commit comments