cue: add String method for Op

Change-Id: Iebe2ecdd0a62538a58cb8be47ebacf8e12c4ffa6
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2346
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cue/op.go b/cue/op.go
index 214e3c8..5b4300d 100644
--- a/cue/op.go
+++ b/cue/op.go
@@ -20,6 +20,10 @@
 // use to evaluate a value.
 type Op int
 
+func (o Op) String() string {
+	return opToString[o]
+}
+
 // Values of Op.
 const (
 	NoOp Op = iota
@@ -84,6 +88,37 @@
 	opIMod:        IntModuloOp,
 }
 
+var opToString = map[Op]string{
+	AndOp:              "&",
+	OrOp:               "|",
+	BooleanAndOp:       "&&",
+	BooleanOrOp:        "||",
+	EqualOp:            "==",
+	NotOp:              "!",
+	NotEqualOp:         "!=",
+	LessThanOp:         "<",
+	LessThanEqualOp:    "<=",
+	GreaterThanOp:      ">",
+	GreaterThanEqualOp: ">=",
+	RegexMatchOp:       "=~",
+	NotRegexMatchOp:    "!~",
+	AddOp:              "+",
+	SubtractOp:         "-",
+	MultiplyOp:         "*",
+	FloatQuotientOp:    "/",
+	FloatRemainOp:      "%",
+	IntQuotientOp:      "quo",
+	IntRemainderOp:     "rem",
+	IntDivideOp:        "div",
+	IntModuloOp:        "mod",
+
+	SelectorOp:      ".",
+	IndexOp:         "[]",
+	SliceOp:         "[:]",
+	CallOp:          "()",
+	InterpolationOp: `\()`,
+}
+
 func opIn(op op, anyOf ...op) bool {
 	for _, o := range anyOf {
 		if o == op {
diff --git a/cue/types_test.go b/cue/types_test.go
index f24011b..8e819f5 100644
--- a/cue/types_test.go
+++ b/cue/types_test.go
@@ -2016,34 +2016,3 @@
 		})
 	}
 }
-
-var opToString = map[Op]string{
-	AndOp:              "&",
-	OrOp:               "|",
-	BooleanAndOp:       "&&",
-	BooleanOrOp:        "||",
-	EqualOp:            "==",
-	NotOp:              "!",
-	NotEqualOp:         "!=",
-	LessThanOp:         "<",
-	LessThanEqualOp:    "<=",
-	GreaterThanOp:      ">",
-	GreaterThanEqualOp: ">=",
-	RegexMatchOp:       "=~",
-	NotRegexMatchOp:    "!~",
-	AddOp:              "+",
-	SubtractOp:         "-",
-	MultiplyOp:         "*",
-	FloatQuotientOp:    "/",
-	FloatRemainOp:      "%",
-	IntQuotientOp:      "quo",
-	IntRemainderOp:     "rem",
-	IntDivideOp:        "div",
-	IntModuloOp:        "mod",
-
-	SelectorOp:      ".",
-	IndexOp:         "[]",
-	SliceOp:         "[:]",
-	CallOp:          "()",
-	InterpolationOp: `\()`,
-}