internal/core/eval: export fieldSet fields

Prepare to move those to StructLit so that they
can be precompiled.

Change-Id: Ic4cefff516c8b18b9b3d1994396d3ca4aa11e07e
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/7982
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
diff --git a/internal/core/eval/closed.go b/internal/core/eval/closed.go
index 61ab1b3..c5a8aa9 100644
--- a/internal/core/eval/closed.go
+++ b/internal/core/eval/closed.go
@@ -718,12 +718,12 @@
 		return false, false
 	}
 	for isRegular := f.IsRegular(); o != nil; o = o.next {
-		if isRegular && (len(o.additional) > 0 || o.isOpen) {
+		if isRegular && (len(o.Additional) > 0 || o.IsOpen) {
 			return true, false
 		}
 
-		for _, g := range o.fields {
-			if f == g.label {
+		for _, g := range o.Fields {
+			if f == g.Label {
 				return true, false
 			}
 		}
@@ -732,7 +732,7 @@
 			continue
 		}
 
-		for _, b := range o.bulk {
+		for _, b := range o.Bulk {
 			if b.check.Match(ctx, o.env, f) {
 				return true, false
 			}
diff --git a/internal/core/eval/closed_test.go b/internal/core/eval/closed_test.go
index 9c1d3d7..a7c9cf4 100644
--- a/internal/core/eval/closed_test.go
+++ b/internal/core/eval/closed_test.go
@@ -361,7 +361,7 @@
 				fs := &fieldSet{}
 				c.Fields = append(c.Fields, fs)
 				for _, id := range f {
-					fs.fields = append(fs.fields, field{label: id})
+					fs.Fields = append(fs.Fields, FieldInfo{Label: id})
 				}
 			}
 
diff --git a/internal/core/eval/optionals.go b/internal/core/eval/optionals.go
index 4c6ae98..ad27e33 100644
--- a/internal/core/eval/optionals.go
+++ b/internal/core/eval/optionals.go
@@ -31,52 +31,52 @@
 	env *adt.Environment
 	id  adt.ID
 
-	// field marks the optional conjuncts of all explicit fields.
-	// Required fields are marked as empty
-	fields []field
+	// field marks the optional conjuncts of all explicit Fields.
+	// Required Fields are marked as empty
+	Fields []FieldInfo
 
 	// excluded are all literal fields that already exist.
-	bulk []bulkField
+	Bulk []bulkField
 
-	additional []adt.Expr
-	isOpen     bool // has a ...
+	Additional []adt.Expr
+	IsOpen     bool // has a ...
 }
 
 func (o *fieldSet) OptionalTypes() (mask adt.OptionalType) {
-	for _, f := range o.fields {
-		if len(f.optional) > 0 {
+	for _, f := range o.Fields {
+		if len(f.Optional) > 0 {
 			mask = adt.HasField
 			break
 		}
 	}
-	for _, b := range o.bulk {
+	for _, b := range o.Bulk {
 		if b.expr == nil {
 			mask |= adt.HasDynamic
 		} else {
 			mask |= adt.HasPattern
 		}
 	}
-	if o.additional != nil {
+	if o.Additional != nil {
 		mask |= adt.HasAdditional
 	}
-	if o.isOpen {
+	if o.IsOpen {
 		mask |= adt.IsOpen
 	}
 	return mask
 }
 
 func (o *fieldSet) IsOptional(label adt.Feature) bool {
-	for _, f := range o.fields {
-		if f.label == label && len(f.optional) > 0 {
+	for _, f := range o.Fields {
+		if f.Label == label && len(f.Optional) > 0 {
 			return true
 		}
 	}
 	return false
 }
 
-type field struct {
-	label    adt.Feature
-	optional []adt.Node
+type FieldInfo struct {
+	Label    adt.Feature
+	Optional []adt.Node
 }
 
 type bulkField struct {
@@ -86,13 +86,13 @@
 }
 
 func (o *fieldSet) Accept(c *adt.OpContext, f adt.Feature) bool {
-	if len(o.additional) > 0 {
+	if len(o.Additional) > 0 {
 		return true
 	}
 	if o.fieldIndex(f) >= 0 {
 		return true
 	}
-	for _, b := range o.bulk {
+	for _, b := range o.Bulk {
 		if b.check.Match(c, o.env, f) {
 			return true
 		}
@@ -109,9 +109,9 @@
 	// Match normal fields
 	matched := false
 outer:
-	for _, f := range o.fields {
-		if f.label == arc.Label {
-			for _, e := range f.optional {
+	for _, f := range o.Fields {
+		if f.Label == arc.Label {
+			for _, e := range f.Optional {
 				arc.AddConjunct(adt.MakeConjunct(env, e, o.id))
 			}
 			matched = true
@@ -129,7 +129,7 @@
 	bulkEnv.Cycles = nil
 
 	// match bulk optional fields / pattern properties
-	for _, f := range o.bulk {
+	for _, f := range o.Bulk {
 		if matched && f.additional {
 			continue
 		}
@@ -149,14 +149,14 @@
 	addEnv.Cycles = nil
 
 	// match others
-	for _, x := range o.additional {
+	for _, x := range o.Additional {
 		arc.AddConjunct(adt.MakeConjunct(&addEnv, x, o.id))
 	}
 }
 
 func (o *fieldSet) fieldIndex(f adt.Feature) int {
-	for i := range o.fields {
-		if o.fields[i].label == f {
+	for i := range o.Fields {
+		if o.Fields[i].Label == f {
 			return i
 		}
 	}
@@ -165,22 +165,22 @@
 
 func (o *fieldSet) MarkField(c *adt.OpContext, f adt.Feature) {
 	if o.fieldIndex(f) < 0 {
-		o.fields = append(o.fields, field{label: f})
+		o.Fields = append(o.Fields, FieldInfo{Label: f})
 	}
 }
 
 func (o *fieldSet) AddOptional(c *adt.OpContext, x *adt.OptionalField) {
 	p := o.fieldIndex(x.Label)
 	if p < 0 {
-		p = len(o.fields)
-		o.fields = append(o.fields, field{label: x.Label})
+		p = len(o.Fields)
+		o.Fields = append(o.Fields, FieldInfo{Label: x.Label})
 	}
-	o.fields[p].optional = append(o.fields[p].optional, x)
+	o.Fields[p].Optional = append(o.Fields[p].Optional, x)
 }
 
 func (o *fieldSet) AddDynamic(c *adt.OpContext, x *adt.DynamicField) {
 	// not in bulk: count as regular field?
-	o.bulk = append(o.bulk, bulkField{dynamicMatcher{x.Key}, nil, false})
+	o.Bulk = append(o.Bulk, bulkField{dynamicMatcher{x.Key}, nil, false})
 }
 
 func (o *fieldSet) AddBulk(c *adt.OpContext, x *adt.BulkOptionalField) {
@@ -191,7 +191,7 @@
 	}
 
 	if m := o.getMatcher(c, v); m != nil {
-		o.bulk = append(o.bulk, bulkField{m, x, false})
+		o.Bulk = append(o.Bulk, bulkField{m, x, false})
 	}
 }
 
@@ -211,10 +211,10 @@
 func (o *fieldSet) AddEllipsis(c *adt.OpContext, x *adt.Ellipsis) {
 	expr := x.Value
 	if x.Value == nil {
-		o.isOpen = true
+		o.IsOpen = true
 		expr = &adt.Top{}
 	}
-	o.additional = append(o.additional, expr)
+	o.Additional = append(o.Additional, expr)
 }
 
 type fieldMatcher interface {