internal/core/adt: fix null values equality

`Value.Equals()` should return true when comparing two `null`
values.

Change-Id: I5dd8c0a84061374a354f15dc514d9a604ebb5f28
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/9401
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/core/adt/equality.go b/internal/core/adt/equality.go
index 8203cfc..cb1d338 100644
--- a/internal/core/adt/equality.go
+++ b/internal/core/adt/equality.go
@@ -139,7 +139,7 @@
 	}
 
 	switch x := v.(type) {
-	case *Num, *String, *Bool, *Bytes:
+	case *Num, *String, *Bool, *Bytes, *Null:
 		if b, ok := BinOp(ctx, EqualOp, v, w).(*Bool); ok {
 			return b.B
 		}
diff --git a/internal/diff/diff_test.go b/internal/diff/diff_test.go
index 1eb31a3..bde937a 100644
--- a/internal/diff/diff_test.go
+++ b/internal/diff/diff_test.go
@@ -71,6 +71,7 @@
 			b: 2
 			s: 4
 			d: 1
+			e: null
 		}
 		`,
 		y: `
@@ -79,6 +80,7 @@
 			c: 3
 			s: 4
 			d: int
+			e: null
 		}
 		`,
 		kind: Modified,
@@ -90,6 +92,7 @@
       s: 4
 -     d: 1
 +     d: int
+      e: null
   }
 `,
 	}, {