Tweak dumbindent.breakAfterBrace
diff --git a/lib/dumbindent/dumbindent.go b/lib/dumbindent/dumbindent.go
index 37fdc59..4ac68f1 100644
--- a/lib/dumbindent/dumbindent.go
+++ b/lib/dumbindent/dumbindent.go
@@ -265,16 +265,14 @@
 				switch c {
 				case '{':
 					nBraces++
-					if l := lastNonWhiteSpace(line[:i]); (l != '=') && (l != ':') {
-						if breakAfterBrace(line[i+1:]) {
-							dst = append(dst, line[:i+1]...)
-							dst = append(dst, '\n')
-							restOfLine := line[i+1:]
-							remaining = src[lineLength-len(restOfLine):]
-							openBrace = true
-							hanging = false
-							continue outer
-						}
+					if breakAfterBrace(line[i+1:]) {
+						dst = append(dst, line[:i+1]...)
+						dst = append(dst, '\n')
+						restOfLine := line[i+1:]
+						remaining = src[lineLength-len(restOfLine):]
+						openBrace = true
+						hanging = false
+						continue outer
 					}
 				case '}':
 					nBraces--
@@ -410,19 +408,44 @@
 	return dst, line, remaining
 }
 
-// breakAfterBrace returns whether the first non-space non-tab byte of s (if
-// any) does not look like a comment or another open-brace.
+// breakAfterBrace returns whether s starts with a slash-slash comment or with
+// the rest of a "0}" or ".a=1, .b=2}" literal, including the matching "}".
+//
+// This implementation isn't perfect, but it's good enough in practice.
 func breakAfterBrace(s []byte) bool {
-	for _, c := range s {
-		if (c != ' ') && (c != '\t') {
-			return (c != '/') && (c != '{')
+	s = trimLeadingWhiteSpace(s)
+	if len(s) == 0 {
+		return false
+	} else if (len(s) > 1) && (s[0] == '/') && (s[1] == '/') {
+		return false
+	}
+
+	n := 1
+	for i, c := range s {
+		switch c {
+		case ';':
+			return true
+		case '{':
+			n++
+		case '}':
+			n--
+			if n == 0 {
+				return false
+			}
+		case '/':
+			if (i + 1) < len(s) {
+				switch s[i+1] {
+				case '/', '*':
+					return true
+				}
+			}
 		}
 	}
-	return false
+	return true
 }
 
-// breakAfterBrace returns whether the first non-space non-tab byte of s (if
-// any) does not look like a comment.
+// breakAfterSemicolon returns whether the first non-space non-tab byte of s
+// (if any) does not look like a comment.
 func breakAfterSemicolon(s []byte) bool {
 	for _, c := range s {
 		if (c != ' ') && (c != '\t') {
diff --git a/lib/dumbindent/dumbindent_test.go b/lib/dumbindent/dumbindent_test.go
index 84b0730..c512c26 100644
--- a/lib/dumbindent/dumbindent_test.go
+++ b/lib/dumbindent/dumbindent_test.go
@@ -79,6 +79,14 @@
 		// Namespaces.
 		src:  "namespace A {\nint f() {\nreturn 0;\n}\n}\n",
 		want: "namespace A {\nint f() {\n  return 0;\n}\n}\n",
+	}, {
+		// No break between "{" and "//".
+		src:  "if (b) {  // Blah.\nreturn;\n",
+		want: "if (b) {  // Blah.\n  return;\n",
+	}, {
+		// Simple compound literal.
+		src:  "T x = {0};",
+		want: "T x = {0};\n",
 	}}
 
 	for i, tc := range testCases {