encoding/openapi: support time types

Also recognize unsupported builtins for
their type.

Issue #56

Change-Id: Ic900829144d0130db412c1202f82df4e3a56c236
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2724
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/openapi/build.go b/encoding/openapi/build.go
index fa74d5b..bcb21d4 100644
--- a/encoding/openapi/build.go
+++ b/encoding/openapi/build.go
@@ -209,7 +209,7 @@
 	count := 0
 	disallowDefault := false
 	var values cue.Value
-	if b.ctx.expandRefs {
+	if b.ctx.expandRefs || b.format != "" {
 		// Cycles are not allowed when expanding references. Right now we just
 		// cap the depth of evaluation at 30.
 		// TODO: do something more principled.
@@ -760,7 +760,6 @@
 		}
 
 	case cue.NoOp, cue.SelectorOp:
-		// TODO: determine formats from specific types.
 
 	case cue.CallOp:
 		name := fmt.Sprint(a[0])