cue/format: print empty struct on one line by default

If users explicitly format curly braces across
lines, this is currently maintained. To support
that, one would need a more complex algorithm,
as there are cases were this is desired, such as
in lists or disjunctions:

```
foo: {
  a: 2
} | {
} | {
  b: 3
}
```

Change-Id: Id72722936d6b36661d14abc8a65d50007abfb4c4
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5180
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cue/export_test.go b/cue/export_test.go
index 62f1b85..47ebfbe 100644
--- a/cue/export_test.go
+++ b/cue/export_test.go
@@ -700,8 +700,7 @@
 		A: {
 			[string]: B
 		} @protobuf(1,"test")
-		B: {
-		} & ({
+		B: {} & ({
 			a: int
 		} | {
 			b: int
@@ -808,8 +807,7 @@
 		x: X
 		`,
 		out: unindent(`
-		T :: {
-		}
+		T :: {}
 		x: x: int64
 		X :: {
 			x: int64
diff --git a/cue/format/node.go b/cue/format/node.go
index b6fdda5..6400cc0 100644
--- a/cue/format/node.go
+++ b/cue/format/node.go
@@ -579,10 +579,24 @@
 	case *ast.StructLit:
 		var l line
 		ws := noblank
-		if !x.Lbrace.HasRelPos() || (len(x.Elts) > 0 && !x.Elts[0].Pos().HasRelPos()) {
+		ff := f.formfeed()
+
+		switch {
+		case len(x.Elts) == 0:
+			if !x.Rbrace.HasRelPos() {
+				// collapse curly braces if the body is empty.
+				ffAlt := blank | nooverride
+				for _, c := range x.Comments() {
+					if c.Position == 1 {
+						ffAlt = ff
+					}
+				}
+				ff = ffAlt
+			}
+		case !x.Rbrace.HasRelPos() || !x.Elts[0].Pos().HasRelPos():
 			ws |= newline | nooverride
 		}
-		f.print(x.Lbrace, token.LBRACE, &l, ws, f.formfeed(), indent)
+		f.print(x.Lbrace, token.LBRACE, &l, ws, ff, indent)
 
 		f.walkDeclList(x.Elts)
 		f.matchUnindent()
diff --git a/cue/format/node_test.go b/cue/format/node_test.go
index caf366d..855ae3c 100644
--- a/cue/format/node_test.go
+++ b/cue/format/node_test.go
@@ -38,8 +38,7 @@
 			ident("bar"), token.ISA, &ast.StructLit{},
 		)},
 		// Force a new struct.
-		out: `foo: bar :: {
-}`,
+		out: `foo: bar :: {}`,
 	}, {
 		desc: "label with invalid identifier",
 		node: &ast.Field{Label: &ast.Ident{}, Value: ast.NewString("foo")},
diff --git a/cue/format/testdata/comments.golden b/cue/format/testdata/comments.golden
index 53c3b01..e8d09b0 100644
--- a/cue/format/testdata/comments.golden
+++ b/cue/format/testdata/comments.golden
@@ -17,3 +17,9 @@
 
 b:  4   // line comment that is last in the file.
 cc: 555 // align comments
+
+m: {
+}
+m: {
+	// empty with comment
+}
diff --git a/cue/format/testdata/comments.input b/cue/format/testdata/comments.input
index 8aafcc9..2d3bb68 100644
--- a/cue/format/testdata/comments.input
+++ b/cue/format/testdata/comments.input
@@ -16,4 +16,10 @@
 a: 3 // a line comment
 
 b: 4 // line comment that is last in the file.
-cc: 555 // align comments
\ No newline at end of file
+cc: 555 // align comments
+
+m: {
+}
+m: {
+    // empty with comment
+}
diff --git a/cue/format/testdata/expressions.input b/cue/format/testdata/expressions.input
index f36c7ef..4250966 100644
--- a/cue/format/testdata/expressions.input
+++ b/cue/format/testdata/expressions.input
@@ -57,7 +57,7 @@
         bbbb: 100 @go(Bbbb) @xml(,attr) // comment
     }
 
-    foo bar: string @go(-)
+    foo: bar: string @go(-)
 
     e: 1+2*3
     e: 1*2*3 // error
diff --git a/doc/tutorial/kubernetes/testdata/manual.out b/doc/tutorial/kubernetes/testdata/manual.out
index 831fb1c..44c50c6 100644
--- a/doc/tutorial/kubernetes/testdata/manual.out
+++ b/doc/tutorial/kubernetes/testdata/manual.out
@@ -5,27 +5,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -87,27 +78,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -169,8 +151,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -238,18 +219,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     bartender: {
         name: "bartender"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "bartender"
@@ -275,15 +252,11 @@
                 http: 7080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -294,8 +267,7 @@
             app:       "bartender"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -305,8 +277,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -368,8 +339,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -437,18 +407,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     breaddispatcher: {
         name: "breaddispatcher"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "breaddispatcher"
@@ -474,17 +440,14 @@
                 http: 7080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             etcd:           "etcd:2379"
             "event-server": "events:7788"
         }
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -495,8 +458,7 @@
             app:       "breaddispatcher"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -506,8 +468,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -569,8 +530,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -638,18 +598,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     host: {
         name: "host"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "host"
@@ -675,15 +631,11 @@
                 http: 7080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -694,8 +646,7 @@
             app:       "host"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -705,8 +656,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -768,8 +718,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -837,18 +786,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     maitred: {
         name: "maitred"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "maitred"
@@ -874,15 +819,11 @@
                 http: 7080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -893,8 +834,7 @@
             app:       "maitred"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -904,8 +844,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -967,8 +906,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -1036,18 +974,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     valeter: {
         name: "valeter"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "valeter"
@@ -1073,17 +1007,14 @@
                 http: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             http: ":8080"
             etcd: "etcd:2379"
         }
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -1094,8 +1025,7 @@
             app:       "valeter"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -1105,8 +1035,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -1168,8 +1097,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -1237,18 +1165,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     waiter: {
         name: "waiter"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "waiter"
@@ -1274,15 +1198,11 @@
                 http: 7080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -1293,8 +1213,7 @@
             app:       "waiter"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -1304,8 +1223,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -1367,8 +1285,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -1436,18 +1353,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     waterdispatcher: {
         name: "waterdispatcher"
-        env: {
-        }
+        env: {}
         label: {
             component: "frontend"
             app:       "waterdispatcher"
@@ -1473,17 +1386,14 @@
                 http: 7080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             http: ":8080"
             etcd: "etcd:2379"
         }
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -1494,8 +1404,7 @@
             app:       "waterdispatcher"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -1505,8 +1414,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -1568,27 +1476,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -1650,8 +1549,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -1715,25 +1613,20 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     download: {
         name: "download"
-        env: {
-        }
+        env: {}
         label: {
             component: "infra"
             app:       "download"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "gcr.io/myproj/download:v0.0.2"
@@ -1742,15 +1635,11 @@
                 client: 7080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -1761,8 +1650,7 @@
             app:       "download"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -1772,8 +1660,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -1835,8 +1722,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -1870,8 +1756,7 @@
             }
         }
     }
-    deployments: {
-    }
+    deployments: {}
     statefulSets: {
         etcd: {
             kind: "StatefulSet"
@@ -1979,10 +1864,8 @@
             }
         }
     }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     etcd: {
@@ -2065,8 +1948,7 @@
                 peer:   2380
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             name:                          "$(NAME)"
             "data-dir":                    "/data/etcd3"
@@ -2099,8 +1981,7 @@
                 }
             }
         }
-        volume: {
-        }
+        volume: {}
     }
 }
 service: {
@@ -2130,8 +2011,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -2193,8 +2073,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -2289,18 +2168,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     events: {
         name: "events"
-        env: {
-        }
+        env: {}
         label: {
             component: "infra"
             app:       "events"
@@ -2351,13 +2226,11 @@
             grpc: ":7788"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-volume": {
                 name: "secret-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/ssl"
                 subPath:   null
                 readOnly:  false
@@ -2378,8 +2251,7 @@
             app:       "events"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             grpc: {
                 name:     "grpc"
@@ -2389,8 +2261,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -2452,8 +2323,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -2537,18 +2407,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     tasks: {
         name: "tasks"
-        env: {
-        }
+        env: {}
         label: {
             component: "infra"
             app:       "tasks"
@@ -2577,16 +2443,13 @@
         port: {
             http: 7080
         }
-        arg: {
-        }
+        arg: {}
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-volume": {
                 name: "secret-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/ssl"
                 subPath:   null
                 readOnly:  false
@@ -2623,8 +2486,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -2686,8 +2548,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -2761,25 +2622,20 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     updater: {
         name: "updater"
-        env: {
-        }
+        env: {}
         label: {
             component: "infra"
             app:       "updater"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "gcr.io/myproj/updater:v0.1.0"
@@ -2788,18 +2644,14 @@
                 http: 8080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: ["-key=/etc/certs/updater.pem"]
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-updater": {
                 name: "secret-updater"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  false
@@ -2820,8 +2672,7 @@
             app:       "updater"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             http: {
                 name:     "http"
@@ -2831,8 +2682,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -2894,8 +2744,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -2974,25 +2823,20 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     watcher: {
         name: "watcher"
-        env: {
-        }
+        env: {}
         label: {
             component: "infra"
             app:       "watcher"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "gcr.io/myproj/watcher:v0.1.0"
@@ -3004,16 +2848,13 @@
         port: {
             http: 7080
         }
-        arg: {
-        }
+        arg: {}
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-volume": {
                 name: "secret-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/ssl"
                 subPath:   null
                 readOnly:  false
@@ -3055,8 +2896,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -3118,27 +2958,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -3229,8 +3060,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -3333,18 +3163,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     caller: {
         name: "caller"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "caller"
@@ -3381,8 +3207,7 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             env:              "prod"
             "event-server":   "events:7788"
@@ -3393,13 +3218,11 @@
             "ssh-tunnel-key": "/sslcerts/tunnel-private.pem"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "caller-disk": {
                 name: "ssd-caller"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -3412,8 +3235,7 @@
             }
             "secret-ssh-key": {
                 name: "secret-ssh-key"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/sslcerts"
                 subPath:   null
                 readOnly:  true
@@ -3425,8 +3247,7 @@
             }
             "secret-caller": {
                 name: "secret-caller"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  true
@@ -3447,8 +3268,7 @@
             app:       "caller"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -3458,8 +3278,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -3550,8 +3369,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -3654,18 +3472,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     dishwasher: {
         name: "dishwasher"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "dishwasher"
@@ -3702,8 +3516,7 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             env:              "prod"
             "event-server":   "events:7788"
@@ -3711,13 +3524,11 @@
             "ssh-tunnel-key": "/etc/certs/tunnel-private.pem"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-ssh-key": {
                 name: "secret-ssh-key"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/sslcerts"
                 subPath:   null
                 readOnly:  true
@@ -3729,8 +3540,7 @@
             }
             "dishwasher-disk": {
                 name: "dishwasher-disk"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -3743,8 +3553,7 @@
             }
             "secret-dishwasher": {
                 name: "secret-dishwasher"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  true
@@ -3765,8 +3574,7 @@
             app:       "dishwasher"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -3776,8 +3584,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -3868,8 +3675,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -3963,18 +3769,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     expiditer: {
         name: "expiditer"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "expiditer"
@@ -4011,8 +3813,7 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             env:              "prod"
             "event-server":   "events:7788"
@@ -4020,13 +3821,11 @@
             "ssh-tunnel-key": "/etc/certs/tunnel-private.pem"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "expiditer-disk": {
                 name: "expiditer-disk"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -4039,8 +3838,7 @@
             }
             "secret-expiditer": {
                 name: "secret-expiditer"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  true
@@ -4061,8 +3859,7 @@
             app:       "expiditer"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -4072,8 +3869,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -4164,8 +3960,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -4259,18 +4054,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     headchef: {
         name: "headchef"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "headchef"
@@ -4307,21 +4098,18 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             env:            "prod"
             "event-server": "events:7788"
             logdir:         "/logs"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-headchef": {
                 name: "secret-headchef"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/sslcerts"
                 subPath:   null
                 readOnly:  true
@@ -4333,8 +4121,7 @@
             }
             "headchef-disk": {
                 name: "headchef-disk"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -4356,8 +4143,7 @@
             app:       "headchef"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -4367,8 +4153,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -4459,8 +4244,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -4554,18 +4338,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     linecook: {
         name: "linecook"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "linecook"
@@ -4602,8 +4382,7 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             name:                "linecook"
             env:                 "prod"
@@ -4614,13 +4393,11 @@
             "-recovery-overlap": "100000"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-linecook": {
                 name: "secret-kitchen"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  true
@@ -4632,8 +4409,7 @@
             }
             "linecook-disk": {
                 name: "linecook-disk"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -4655,8 +4431,7 @@
             app:       "linecook"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -4666,8 +4441,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -4758,8 +4532,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -4853,18 +4626,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     pastrychef: {
         name: "pastrychef"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "pastrychef"
@@ -4901,8 +4670,7 @@
                 client: 8080
             }
         }
-        port: {
-        }
+        port: {}
         arg: {
             env:                "prod"
             etcd:               "etcd:2379"
@@ -4913,13 +4681,11 @@
             "recovery-overlap": "10000"
         }
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-pastrychef": {
                 name: "secret-ssh-key"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/certs"
                 subPath:   null
                 readOnly:  true
@@ -4931,8 +4697,7 @@
             }
             "pastrychef-disk": {
                 name: "pastrychef-disk"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/logs"
                 subPath:   null
                 readOnly:  false
@@ -4954,8 +4719,7 @@
             app:       "pastrychef"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -4965,8 +4729,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -5057,8 +4820,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -5133,18 +4895,14 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     souschef: {
         name: "souschef"
-        env: {
-        }
+        env: {}
         label: {
             component: "kitchen"
             app:       "souschef"
@@ -5181,15 +4939,11 @@
                 client: 8080
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
-        volume: {
-        }
+        envSpec: {}
+        volume: {}
     }
 }
 service: {
@@ -5200,8 +4954,7 @@
             app:       "souschef"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -5211,8 +4964,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -5303,27 +5055,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -5385,8 +5128,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -5479,10 +5221,8 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
+    statefulSets: {}
+    daemonSets: {}
     configMaps: {
         alertmanager: {
             kind:       "ConfigMap"
@@ -5517,8 +5257,7 @@
 deployment: {
     alertmanager: {
         name: "alertmanager"
-        env: {
-        }
+        env: {}
         label: {
             component: "mon"
             app:       "alertmanager"
@@ -5541,30 +5280,24 @@
                 alertmanager: 9093
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: ["--config.file=/etc/alertmanager/alerts.yaml", "--storage.path=/alertmanager", "--web.external-url=https://alertmanager.example.com"]
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             alertmanager: {
                 name: "alertmanager"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/alertmanager"
                 subPath:   null
                 readOnly:  false
                 spec: {
-                    emptyDir: {
-                    }
+                    emptyDir: {}
                 }
             }
             "config-volume": {
                 name: "config-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/alertmanager"
                 subPath:   null
                 readOnly:  false
@@ -5684,8 +5417,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -5782,12 +5514,9 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     grafana: {
@@ -5833,8 +5562,7 @@
         port: {
             web: 8080
         }
-        arg: {
-        }
+        arg: {}
         args: []
         envSpec: {
             GF_AUTH_BASIC_ENABLED: {
@@ -5850,8 +5578,7 @@
         volume: {
             "grafana-volume": {
                 name: "grafana-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/var/lib/grafana"
                 subPath:   null
                 readOnly:  false
@@ -5873,8 +5600,7 @@
             app:       "grafana"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             grafana: {
                 name:     "grafana"
@@ -5884,8 +5610,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -5947,8 +5672,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -5982,10 +5706,8 @@
             }
         }
     }
-    deployments: {
-    }
-    statefulSets: {
-    }
+    deployments: {}
+    statefulSets: {}
     daemonSets: {
         "node-exporter": {
             kind: "DaemonSet"
@@ -6053,14 +5775,12 @@
             }
         }
     }
-    configMaps: {
-    }
+    configMaps: {}
 }
 deployment: {
     "node-exporter": {
         name: "node-exporter"
-        env: {
-        }
+        env: {}
         label: {
             component: "mon"
             app:       "node-exporter"
@@ -6099,18 +5819,14 @@
                 scrape: 9100
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: ["--path.procfs=/host/proc", "--path.sysfs=/host/sys"]
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             proc: {
                 name: "proc"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/host/proc"
                 subPath:   null
                 readOnly:  true
@@ -6122,8 +5838,7 @@
             }
             sys: {
                 name: "sys"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/host/sys"
                 subPath:   null
                 readOnly:  true
@@ -6164,8 +5879,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -6227,8 +5941,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -6324,10 +6037,8 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
+    statefulSets: {}
+    daemonSets: {}
     configMaps: {
         prometheus: {
             kind:       "ConfigMap"
@@ -6573,8 +6284,7 @@
 deployment: {
     prometheus: {
         name: "prometheus"
-        env: {
-        }
+        env: {}
         label: {
             component: "mon"
             app:       "prometheus"
@@ -6611,18 +6321,14 @@
                 web: 9090
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: ["--config.file=/etc/prometheus/prometheus.yml", "--web.external-url=https://prometheus.example.com"]
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "config-volume": {
                 name: "config-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/prometheus"
                 subPath:   null
                 readOnly:  false
@@ -6956,27 +6662,18 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
-    services: {
-    }
-    deployments: {
-    }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    services: {}
+    deployments: {}
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
-deployment: {
-}
-service: {
-}
-configMap: {
-}
+deployment: {}
+service: {}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -7038,8 +6735,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -7113,10 +6809,8 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
+    statefulSets: {}
+    daemonSets: {}
     configMaps: {
         authproxy: {
             kind:       "ConfigMap"
@@ -7188,15 +6882,13 @@
 deployment: {
     authproxy: {
         name: "authproxy"
-        env: {
-        }
+        env: {}
         label: {
             component: "proxy"
             app:       "authproxy"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "skippy/oauth2_proxy:2.0.1"
@@ -7205,18 +6897,14 @@
                 client: 4180
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: ["--config=/etc/authproxy/authproxy.cfg"]
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "config-volume": {
                 name: "config-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/authproxy"
                 subPath:   null
                 readOnly:  false
@@ -7237,8 +6925,7 @@
             app:       "authproxy"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         port: {
             client: {
                 name:     "client"
@@ -7366,8 +7053,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -7447,25 +7133,20 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
-    configMaps: {
-    }
+    statefulSets: {}
+    daemonSets: {}
+    configMaps: {}
 }
 deployment: {
     goget: {
         name: "goget"
-        env: {
-        }
+        env: {}
         label: {
             component: "proxy"
             app:       "goget"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "gcr.io/myproj/goget:v0.5.1"
@@ -7474,18 +7155,14 @@
                 https: 7443
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-volume": {
                 name: "secret-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/ssl"
                 subPath:   null
                 readOnly:  false
@@ -7526,8 +7203,7 @@
         }
     }
 }
-configMap: {
-}
+configMap: {}
 _k8sSpec: {
     X: {
         kubernetes: {
@@ -7589,8 +7265,7 @@
         app:       string
         domain:    "prod"
     }
-    kubernetes: {
-    }
+    kubernetes: {}
 }
 kubernetes: {
     services: {
@@ -7679,10 +7354,8 @@
             }
         }
     }
-    statefulSets: {
-    }
-    daemonSets: {
-    }
+    statefulSets: {}
+    daemonSets: {}
     configMaps: {
         nginx: {
             kind:       "ConfigMap"
@@ -7897,15 +7570,13 @@
 deployment: {
     nginx: {
         name: "nginx"
-        env: {
-        }
+        env: {}
         label: {
             component: "proxy"
             app:       "nginx"
             domain:    "prod"
         }
-        kubernetes: {
-        }
+        kubernetes: {}
         kind:     "deployment"
         replicas: 1
         image:    "nginx:1.11.10-alpine"
@@ -7915,18 +7586,14 @@
                 https: 443
             }
         }
-        port: {
-        }
-        arg: {
-        }
+        port: {}
+        arg: {}
         args: []
-        envSpec: {
-        }
+        envSpec: {}
         volume: {
             "secret-volume": {
                 name: "secret-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/ssl"
                 subPath:   null
                 readOnly:  false
@@ -7938,8 +7605,7 @@
             }
             "config-volume": {
                 name: "config-volume"
-                kubernetes: {
-                }
+                kubernetes: {}
                 mountPath: "/etc/nginx/nginx.conf"
                 subPath:   "nginx.conf"
                 readOnly:  false
diff --git a/doc/tutorial/kubernetes/testdata/quick.out b/doc/tutorial/kubernetes/testdata/quick.out
index 1da9042..33aa225 100644
--- a/doc/tutorial/kubernetes/testdata/quick.out
+++ b/doc/tutorial/kubernetes/testdata/quick.out
@@ -1,13 +1,8 @@
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: string
 _spec: {
     Name :: string
@@ -18,8 +13,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -39,16 +33,11 @@
 }
 
 
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -59,8 +48,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -80,8 +68,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     bartender: {
         kind:       "Service"
@@ -121,8 +108,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -151,10 +137,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -165,8 +149,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -186,8 +169,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     breaddispatcher: {
         kind:       "Service"
@@ -227,8 +209,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -257,10 +238,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -271,8 +250,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -292,8 +270,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     host: {
         kind:       "Service"
@@ -333,8 +310,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -363,10 +339,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -377,8 +351,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -398,8 +371,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     maitred: {
         kind:       "Service"
@@ -439,8 +411,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -469,10 +440,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -483,8 +452,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -504,8 +472,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     valeter: {
         kind:       "Service"
@@ -545,8 +512,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -575,10 +541,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -589,8 +553,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -610,8 +573,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     waiter: {
         kind:       "Service"
@@ -651,8 +613,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -680,10 +641,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -694,8 +653,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -715,8 +673,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     waterdispatcher: {
         kind:       "Service"
@@ -756,8 +713,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -786,10 +742,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "frontend"
 _spec: {
     Name :: string
@@ -800,8 +754,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -821,16 +774,11 @@
 }
 
 
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -841,8 +789,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -862,8 +809,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     download: {
         kind:       "Service"
@@ -903,8 +849,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -928,10 +873,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -942,8 +885,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -963,8 +905,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     etcd: {
         kind:       "Service"
@@ -998,10 +939,8 @@
         }
     }
 }
-deployment: {
-}
-daemonSet: {
-}
+deployment: {}
+daemonSet: {}
 statefulSet: {
     etcd: {
         Name ::     "etcd"
@@ -1014,8 +953,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1124,8 +1062,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1145,8 +1082,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     events: {
         kind:       "Service"
@@ -1186,8 +1122,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1243,10 +1178,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -1257,8 +1190,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1278,8 +1210,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     tasks: {
         kind:       "Service"
@@ -1321,8 +1252,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1363,10 +1293,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -1377,8 +1305,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1398,8 +1325,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     updater: {
         kind:       "Service"
@@ -1439,8 +1365,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1475,10 +1400,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -1489,8 +1412,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1510,8 +1432,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     watcher: {
         kind:       "Service"
@@ -1553,8 +1474,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1591,10 +1511,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "infra"
 _spec: {
     Name :: string
@@ -1605,8 +1523,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1626,16 +1543,11 @@
 }
 
 
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -1646,8 +1558,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1667,8 +1578,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     caller: {
         kind:       "Service"
@@ -1708,8 +1618,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1775,10 +1684,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -1789,8 +1696,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1810,8 +1716,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     dishwasher: {
         kind:       "Service"
@@ -1851,8 +1756,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -1918,10 +1822,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -1932,8 +1834,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -1953,8 +1854,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     expiditer: {
         kind:       "Service"
@@ -1994,8 +1894,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2052,10 +1951,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -2066,8 +1963,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2087,8 +1983,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     headchef: {
         kind:       "Service"
@@ -2128,8 +2023,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2186,10 +2080,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -2200,8 +2092,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2221,8 +2112,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     linecook: {
         kind:       "Service"
@@ -2262,8 +2152,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2320,10 +2209,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -2334,8 +2221,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2355,8 +2241,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     pastrychef: {
         kind:       "Service"
@@ -2396,8 +2281,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2454,10 +2338,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -2468,8 +2350,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2489,8 +2370,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     souschef: {
         kind:       "Service"
@@ -2530,8 +2410,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2567,10 +2446,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "kitchen"
 _spec: {
     Name :: string
@@ -2581,8 +2458,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2602,16 +2478,11 @@
 }
 
 
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: "mon"
 _spec: {
     Name :: string
@@ -2622,8 +2493,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2740,8 +2610,7 @@
                         }
                     }, {
                         name: "alertmanager"
-                        emptyDir: {
-                        }
+                        emptyDir: {}
                     }]
                     containers: [{
                         name:  "alertmanager"
@@ -2766,10 +2635,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "mon"
 _spec: {
     Name :: string
@@ -2780,8 +2647,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2801,8 +2667,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     grafana: {
         kind:       "Service"
@@ -2843,8 +2708,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -2899,10 +2763,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "mon"
 _spec: {
     Name :: string
@@ -2913,8 +2775,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -2934,8 +2795,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     "node-exporter": {
         kind:       "Service"
@@ -2968,8 +2828,7 @@
         }
     }
 }
-deployment: {
-}
+deployment: {}
 daemonSet: {
     "node-exporter": {
         Name ::     "node-exporter"
@@ -2982,8 +2841,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     name: "node-exporter"
@@ -3042,8 +2900,7 @@
         }
     }
 }
-statefulSet: {
-}
+statefulSet: {}
 Component :: "mon"
 _spec: {
     Name :: string
@@ -3054,8 +2911,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -3413,10 +3269,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "mon"
 _spec: {
     Name :: string
@@ -3427,8 +3281,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -3448,16 +3301,11 @@
 }
 
 
-configMap: {
-}
-service: {
-}
-deployment: {
-}
-daemonSet: {
-}
-statefulSet: {
-}
+configMap: {}
+service: {}
+deployment: {}
+daemonSet: {}
+statefulSet: {}
 Component :: "proxy"
 _spec: {
     Name :: string
@@ -3468,8 +3316,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -3595,8 +3442,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -3631,10 +3477,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "proxy"
 _spec: {
     Name :: string
@@ -3645,8 +3489,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -3666,8 +3509,7 @@
 }
 
 
-configMap: {
-}
+configMap: {}
 service: {
     goget: {
         kind:       "Service"
@@ -3709,8 +3551,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -3744,10 +3585,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "proxy"
 _spec: {
     Name :: string
@@ -3758,8 +3597,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
@@ -3993,8 +3831,7 @@
             }
         }
         spec: {
-            selector: {
-            }
+            selector: {}
             template: {
                 metadata: {
                     labels: {
@@ -4040,10 +3877,8 @@
         }
     }
 }
-daemonSet: {
-}
-statefulSet: {
-}
+daemonSet: {}
+statefulSet: {}
 Component :: "proxy"
 _spec: {
     Name :: string
@@ -4054,8 +3889,7 @@
         }
     }
     spec: {
-        selector: {
-        }
+        selector: {}
         template: {
             metadata: {
                 labels: {
diff --git a/encoding/protobuf/testdata/attributes.proto.out.cue b/encoding/protobuf/testdata/attributes.proto.out.cue
index 28c89d0..0918e35 100644
--- a/encoding/protobuf/testdata/attributes.proto.out.cue
+++ b/encoding/protobuf/testdata/attributes.proto.out.cue
@@ -21,8 +21,7 @@
 )
 
 StructWrap: {
-	struct?: {
-	} @protobuf(1,type=google.protobuf.Struct)
+	struct?: {} @protobuf(1,type=google.protobuf.Struct)
 	any?: _ @protobuf(2,type=google.protobuf.Value)
 	listVal?: [...] @protobuf(3,type=google.protobuf.ListValue)
 	boolVal?:   bool   @protobuf(4,type=google.protobuf.BoolValue)
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
index 28c89d0..0918e35 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
@@ -21,8 +21,7 @@
 )
 
 StructWrap: {
-	struct?: {
-	} @protobuf(1,type=google.protobuf.Struct)
+	struct?: {} @protobuf(1,type=google.protobuf.Struct)
 	any?: _ @protobuf(2,type=google.protobuf.Value)
 	listVal?: [...] @protobuf(3,type=google.protobuf.ListValue)
 	boolVal?:   bool   @protobuf(4,type=google.protobuf.BoolValue)
diff --git a/tools/trim/trim_test.go b/tools/trim/trim_test.go
index 94bcd4b..95c0289 100644
--- a/tools/trim/trim_test.go
+++ b/tools/trim/trim_test.go
@@ -62,8 +62,7 @@
 		foo: b: a: 1
 		`,
 		out: `foo: [string]: a: *1 | int
-foo: b: {
-}
+foo: b: {}
 `,
 	}, {
 		name: "remove top-level struct",
@@ -101,8 +100,7 @@
 		a: x: "hello"
 		`,
 		out: `[_]: x: "hello"
-a: {
-}
+a: {}
 `,
 		// TODO: This used to work.
 		// 	name: "remove implied interpolations",