internal/core/adt: skip partial unify if unnencessary

Change-Id: I3d12df4b37e1d979b8e81791c4ac6913dbdac0c5
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/8107
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/core/adt/expr.go b/internal/core/adt/expr.go
index da7d3a9..7bbe8dc 100644
--- a/internal/core/adt/expr.go
+++ b/internal/core/adt/expr.go
@@ -1357,12 +1357,12 @@
 func (x *ForClause) yield(c *OpContext, f YieldFunc) {
 	n := c.node(x, x.Src, true)
 	for _, a := range n.Arcs {
-		c.Unify(c, a, Partial)
-
 		if !a.Label.IsRegular() {
 			continue
 		}
 
+		c.Unify(c, a, Partial)
+
 		n := &Vertex{status: Finalized}
 
 		// TODO: only needed if value label != _