From 26a3ebf00fc6bc3b9b92e1b145330d78ca9f7b01 Mon Sep 17 00:00:00 2001 From: Overbool Date: Sun, 16 Sep 2018 01:03:49 +0800 Subject: [PATCH] fix(object): add support for raw leaves in object diff License: MIT Signed-off-by: Overbool --- dagutils/diff.go | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/dagutils/diff.go b/dagutils/diff.go index 97d50c88e..9034db35c 100644 --- a/dagutils/diff.go +++ b/dagutils/diff.go @@ -112,8 +112,8 @@ func Diff(ctx context.Context, ds ipld.DAGService, a, b ipld.Node) ([]*Change, e } var out []*Change - cleanA := a.Copy().(*dag.ProtoNode) - cleanB := b.Copy().(*dag.ProtoNode) + cleanA := a.Copy() + cleanB := b.Copy() // strip out unchanged stuff for _, lnk := range a.Links() { @@ -132,17 +132,7 @@ func Diff(ctx context.Context, ds ipld.DAGService, a, b ipld.Node) ([]*Change, e return nil, err } - anodepb, ok := anode.(*dag.ProtoNode) - if !ok { - return nil, dag.ErrNotProtobuf - } - - bnodepb, ok := bnode.(*dag.ProtoNode) - if !ok { - return nil, dag.ErrNotProtobuf - } - - sub, err := Diff(ctx, ds, anodepb, bnodepb) + sub, err := Diff(ctx, ds, anode, bnode) if err != nil { return nil, err } @@ -152,8 +142,12 @@ func Diff(ctx context.Context, ds ipld.DAGService, a, b ipld.Node) ([]*Change, e out = append(out, subc) } } - cleanA.RemoveNodeLink(l.Name) - cleanB.RemoveNodeLink(l.Name) + if cleanA, ok := cleanA.(*dag.ProtoNode); ok { + cleanA.RemoveNodeLink(l.Name) + } + if cleanB, ok := cleanB.(*dag.ProtoNode); ok { + cleanB.RemoveNodeLink(l.Name) + } } }