[dart][fidl] Support unions with escaped names or members

If a FIDL identifier conflicts with a Dart keyword or other reserved
Dart identifier it will have a $ appended. This is fine until we
generate a string that contains that name - which is interpreted as
string interpolation.

This fixes the case for unions with escaped names and member names.

Change-Id: Iab762c5b0fd4dc2e6b8a06cdcd8da16bec5fc017
Reviewed-on: https://fuchsia-review.googlesource.com/c/topaz/+/443755
Reviewed-by: Benjamin Prosnitz <bprosnitz@google.com>
Reviewed-by: Chase Latta <chaselatta@google.com>
Testability-Review: Benjamin Prosnitz <bprosnitz@google.com>
Commit-Queue: Ian McKellar <ianloic@google.com>
diff --git a/bin/fidlgen_dart/backend/templates/library.tmpl.go b/bin/fidlgen_dart/backend/templates/library.tmpl.go
index 8b97f6e..bb595df 100644
--- a/bin/fidlgen_dart/backend/templates/library.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/library.tmpl.go
@@ -53,6 +53,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 {{ range $const := .Consts -}}
 {{ template "ConstDeclaration" $const }}
diff --git a/bin/fidlgen_dart/backend/templates/struct.tmpl.go b/bin/fidlgen_dart/backend/templates/struct.tmpl.go
index ff46bf1..25c62e5 100644
--- a/bin/fidlgen_dart/backend/templates/struct.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/struct.tmpl.go
@@ -73,7 +73,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'{{ .Name }}' r'(
 {{- range $index, $member := .Members -}}
       {{- if $index }}, {{ end -}}{{ $member.Name  }}: ' + {{ $member.Name }}.toString() + r'
diff --git a/bin/fidlgen_dart/backend/templates/union.tmpl.go b/bin/fidlgen_dart/backend/templates/union.tmpl.go
index d7bab94..4ccb1b9 100644
--- a/bin/fidlgen_dart/backend/templates/union.tmpl.go
+++ b/bin/fidlgen_dart/backend/templates/union.tmpl.go
@@ -64,11 +64,11 @@
     switch (_ordinal) {
 {{- range .Members }}
       case {{ .Ordinal }}:
-        return '{{ $.Name }}.{{ .Name }}(${{ .Name }})';
+        return r'{{ $.Name }}.{{ .Name }}(' + {{ .Name }}.toString() +')';
 {{- end }}
       default:
 {{- if .IsFlexible }}
-        return '{{ $.Name }}.<UNKNOWN>';
+        return r'{{ $.Name }}.<UNKNOWN>';
 {{- else }}
         return null;
 {{- end }}
diff --git a/bin/fidlgen_dart/goldens/arrays.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/arrays.test.json_async.dart.golden
index 9e04eed..2ba9b48 100644
--- a/bin/fidlgen_dart/goldens/arrays.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/arrays.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum UnionSmallArrayTag {
   a, // 0x1
@@ -70,7 +71,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionSmallArray.a($a)';
+        return r'UnionSmallArray.a(' + a.toString() + ')';
       default:
         return null;
     }
@@ -145,7 +146,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionLargeArray.a($a)';
+        return r'UnionLargeArray.a(' + a.toString() + ')';
       default:
         return null;
     }
@@ -217,7 +218,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructSmallArray' r'(a: ' + a.toString() + r')';
   }
 
@@ -264,7 +264,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructLargeArray' r'(a: ' + a.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/bindings_denylist.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/bindings_denylist.test.json_async.dart.golden
index e114adc..d07d972 100644
--- a/bin/fidlgen_dart/goldens/bindings_denylist.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/bindings_denylist.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 const int allBindings = 0x0;
 
diff --git a/bin/fidlgen_dart/goldens/bits.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/bits.test.json_async.dart.golden
index 69f4539..c311681 100644
--- a/bin/fidlgen_dart/goldens/bits.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/bits.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class MyBits extends $fidl.Bits {
   factory MyBits(int _v) {
diff --git a/bin/fidlgen_dart/goldens/byte_and_bytes.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/byte_and_bytes.test.json_async.dart.golden
index 05f85b3..aeb1b81 100644
--- a/bin/fidlgen_dart/goldens/byte_and_bytes.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/byte_and_bytes.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ByteAndBytes extends $fidl.Struct {
   const ByteAndBytes({
@@ -100,7 +101,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ByteAndBytes' r'(singleByte: ' +
         singleByte.toString() +
         r', manyBytes: ' +
diff --git a/bin/fidlgen_dart/goldens/consts.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/consts.test.json_async.dart.golden
index d309128..c12a5c8 100644
--- a/bin/fidlgen_dart/goldens/consts.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/consts.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 const bool enabledFlag = true;
 
diff --git a/bin/fidlgen_dart/goldens/doc_comments.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/doc_comments.test.json_async.dart.golden
index 1739498..04355fd 100644
--- a/bin/fidlgen_dart/goldens/doc_comments.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/doc_comments.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 /// const comment #1
 ///
@@ -373,7 +374,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictUnion.field($field)';
+        return r'StrictUnion.field(' + field.toString() + ')';
       default:
         return null;
     }
@@ -455,9 +456,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FlexibleUnion.field($field)';
+        return r'FlexibleUnion.field(' + field.toString() + ')';
       default:
-        return 'FlexibleUnion.<UNKNOWN>';
+        return r'FlexibleUnion.<UNKNOWN>';
     }
   }
 
@@ -530,7 +531,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Struct' r'(field: ' + field.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/empty_struct.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/empty_struct.test.json_async.dart.golden
index 0b507a9..2772c94 100644
--- a/bin/fidlgen_dart/goldens/empty_struct.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/empty_struct.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Empty extends $fidl.Struct {
   const Empty({
@@ -66,7 +67,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Empty' r'(reserved: ' + reserved.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/encapsulated_structs.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/encapsulated_structs.test.json_async.dart.golden
index 3f5dc00..d98cc89 100644
--- a/bin/fidlgen_dart/goldens/encapsulated_structs.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/encapsulated_structs.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Int8Int32 extends $fidl.Struct {
   const Int8Int32({
@@ -73,7 +74,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Int8Int32' r'(a: ' + a.toString() + r', b: ' + b.toString() + r')';
   }
 
@@ -127,7 +127,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Int16Int8' r'(a: ' + a.toString() + r', b: ' + b.toString() + r')';
   }
 
@@ -175,7 +174,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ArrayInt16Int8' r'(arr: ' + arr.toString() + r')';
   }
 
@@ -235,7 +233,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructPaddingTestStruct' r'(trailing: ' +
         trailing.toString() +
         r', inner: ' +
@@ -307,7 +304,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'NonInlineStructTestStruct' r'(element: ' +
         element.toString() +
         r', h: ' +
@@ -368,7 +364,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'TopLevelStruct' r'(a: ' +
         a.toString() +
         r', b: ' +
diff --git a/bin/fidlgen_dart/goldens/enum.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/enum.test.json_async.dart.golden
index fd831fc..33e340a 100644
--- a/bin/fidlgen_dart/goldens/enum.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/enum.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class MyStrictEnum extends $fidl.Enum {
   factory MyStrictEnum(int _v) {
diff --git a/bin/fidlgen_dart/goldens/error.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/error.test.json_async.dart.golden
index 998bcc4..70bcfe1 100644
--- a/bin/fidlgen_dart/goldens/error.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/error.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum ExampleFooResultTag {
   response, // 0x1
@@ -83,9 +84,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExampleFooResult.response($response)';
+        return r'ExampleFooResult.response(' + response.toString() + ')';
       case 2:
-        return 'ExampleFooResult.err($err)';
+        return r'ExampleFooResult.err(' + err.toString() + ')';
       default:
         return null;
     }
@@ -156,7 +157,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ExampleFooResponse' r'(y: ' + y.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/escaping.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/escaping.test.json_async.dart.golden
index fa73cb8..3c6db08 100644
--- a/bin/fidlgen_dart/goldens/escaping.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/escaping.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 /// "pleaseescapethisdocommentproperly"
 class DocCommentWithQuotes extends $fidl.Struct {
@@ -67,7 +68,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'DocCommentWithQuotes' r'(reserved: ' + reserved.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/foreign_type_in_response_used_through_compose.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/foreign_type_in_response_used_through_compose.test.json_async.dart.golden
index 50fa603..13cb5ce 100644
--- a/bin/fidlgen_dart/goldens/foreign_type_in_response_used_through_compose.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/foreign_type_in_response_used_through_compose.test.json_async.dart.golden
@@ -38,6 +38,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/handles.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/handles.test.json_async.dart.golden
index 546c2b6..479a9f2 100644
--- a/bin/fidlgen_dart/goldens/handles.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/handles.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ObjType extends $fidl.Enum {
   factory ObjType(int _v) {
@@ -579,7 +580,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Handles' r'(plainHandle: ' +
         plainHandle.toString() +
         r', btiHandle: ' +
diff --git a/bin/fidlgen_dart/goldens/handles_in_types.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/handles_in_types.test.json_async.dart.golden
index ed7499b..ff677db 100644
--- a/bin/fidlgen_dart/goldens/handles_in_types.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/handles_in_types.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ObjType extends $fidl.Enum {
   factory ObjType(int _v) {
@@ -134,9 +135,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionWithHandle.h($h)';
+        return r'UnionWithHandle.h(' + h.toString() + ')';
       default:
-        return 'UnionWithHandle.<UNKNOWN>';
+        return r'UnionWithHandle.<UNKNOWN>';
     }
   }
 
@@ -247,7 +248,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'HandlesInTypes' r'(normalHandle: ' +
         normalHandle.toString() +
         r', handleInVec: ' +
diff --git a/bin/fidlgen_dart/goldens/inheritance.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/inheritance.test.json_async.dart.golden
index 28da188..701a6aa 100644
--- a/bin/fidlgen_dart/goldens/inheritance.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/inheritance.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/inheritance_with_recursive_decl.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/inheritance_with_recursive_decl.test.json_async.dart.golden
index f37495d..1bf64e9 100644
--- a/bin/fidlgen_dart/goldens/inheritance_with_recursive_decl.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/inheritance_with_recursive_decl.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/nullable.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/nullable.test.json_async.dart.golden
index e6e0f3a..6820a64 100644
--- a/bin/fidlgen_dart/goldens/nullable.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/nullable.test.json_async.dart.golden
@@ -37,6 +37,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum SimpleUnionTag {
   a, // 0x1
@@ -84,9 +85,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'SimpleUnion.a($a)';
+        return r'SimpleUnion.a(' + a.toString() + ')';
       case 2:
-        return 'SimpleUnion.b($b)';
+        return r'SimpleUnion.b(' + b.toString() + ')';
       default:
         return null;
     }
@@ -165,7 +166,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableString' r'(val: ' + val.toString() + r')';
   }
 
@@ -221,7 +221,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableVector' r'(val: ' + val.toString() + r')';
   }
 
@@ -276,7 +275,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableHandle' r'(val: ' + val.toString() + r')';
   }
 
@@ -332,7 +330,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableProtocol' r'(val: ' + val.toString() + r')';
   }
 
@@ -389,7 +386,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableRequest' r'(val: ' + val.toString() + r')';
   }
 
@@ -438,7 +434,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Int32Wrapper' r'(val: ' + val.toString() + r')';
   }
 
@@ -492,7 +487,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableStruct' r'(val: ' + val.toString() + r')';
   }
 
@@ -547,7 +541,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableUnion' r'(val: ' + val.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/padding.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/padding.test.json_async.dart.golden
index dd018a6..39ab837 100644
--- a/bin/fidlgen_dart/goldens/padding.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/padding.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Padding1ByteEnd extends $fidl.Struct {
   const Padding1ByteEnd({
@@ -73,7 +74,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding1ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -132,7 +132,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding2ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -191,7 +190,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding3ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -250,7 +248,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding4ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -316,7 +313,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding5ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -378,7 +374,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding6ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -437,7 +432,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding7ByteEnd' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -496,7 +490,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding1ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -555,7 +548,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding2ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -614,7 +606,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding3ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -673,7 +664,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding4ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -739,7 +729,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding5ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -801,7 +790,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding6ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -860,7 +848,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding7ByteMiddle' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -933,7 +920,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding4ByteAlignmentLength12' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -1007,7 +993,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Padding2ByteAlignmentLength6' r'(a: ' +
         a.toString() +
         r', b: ' +
diff --git a/bin/fidlgen_dart/goldens/placement_of_attributes.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/placement_of_attributes.test.json_async.dart.golden
index 7d8f75b..ab805f5 100644
--- a/bin/fidlgen_dart/goldens/placement_of_attributes.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/placement_of_attributes.test.json_async.dart.golden
@@ -37,6 +37,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 const int exampleConst = 0x0;
 
@@ -184,7 +185,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExampleUnion.variant($variant)';
+        return r'ExampleUnion.variant(' + variant.toString() + ')';
       default:
         return null;
     }
@@ -263,9 +264,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExampleXUnion.variant($variant)';
+        return r'ExampleXUnion.variant(' + variant.toString() + ')';
       default:
-        return 'ExampleXUnion.<UNKNOWN>';
+        return r'ExampleXUnion.<UNKNOWN>';
     }
   }
 
@@ -332,7 +333,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ExampleStruct' r'(member: ' + member.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/protocol_request.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/protocol_request.test.json_async.dart.golden
index 2ad30b5..d5fa2b7 100644
--- a/bin/fidlgen_dart/goldens/protocol_request.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/protocol_request.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/protocols.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/protocols.test.json_async.dart.golden
index df59148..c70b89e 100644
--- a/bin/fidlgen_dart/goldens/protocols.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/protocols.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ObjType extends $fidl.Enum {
   factory ObjType(int _v) {
@@ -200,9 +201,13 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'WithErrorSyntaxResponseAsStructResult.response($response)';
+        return r'WithErrorSyntaxResponseAsStructResult.response(' +
+            response.toString() +
+            ')';
       case 2:
-        return 'WithErrorSyntaxResponseAsStructResult.err($err)';
+        return r'WithErrorSyntaxResponseAsStructResult.err(' +
+            err.toString() +
+            ')';
       default:
         return null;
     }
@@ -295,9 +300,13 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.response($response)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.response(' +
+            response.toString() +
+            ')';
       case 2:
-        return 'WithErrorSyntaxErrorAsPrimitiveResult.err($err)';
+        return r'WithErrorSyntaxErrorAsPrimitiveResult.err(' +
+            err.toString() +
+            ')';
       default:
         return null;
     }
@@ -390,9 +399,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'WithErrorSyntaxErrorAsEnumResult.response($response)';
+        return r'WithErrorSyntaxErrorAsEnumResult.response(' +
+            response.toString() +
+            ')';
       case 2:
-        return 'WithErrorSyntaxErrorAsEnumResult.err($err)';
+        return r'WithErrorSyntaxErrorAsEnumResult.err(' + err.toString() + ')';
       default:
         return null;
     }
@@ -479,7 +490,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'WithErrorSyntaxResponseAsStructResponse' r'(a: ' +
         a.toString() +
         r', b: ' +
@@ -536,7 +546,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'WithErrorSyntaxErrorAsPrimitiveResponse' r'(reserved: ' +
         reserved.toString() +
         r')';
@@ -587,7 +596,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'WithErrorSyntaxErrorAsEnumResponse' r'(reserved: ' +
         reserved.toString() +
         r')';
diff --git a/bin/fidlgen_dart/goldens/request_flexible_envelope.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/request_flexible_envelope.test.json_async.dart.golden
index e1ec4d0..f4aadbe 100644
--- a/bin/fidlgen_dart/goldens/request_flexible_envelope.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/request_flexible_envelope.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum FlexibleFooTag {
   $unknown,
@@ -89,11 +90,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FlexibleFoo.s($s)';
+        return r'FlexibleFoo.s(' + s.toString() + ')';
       case 2:
-        return 'FlexibleFoo.i($i)';
+        return r'FlexibleFoo.i(' + i.toString() + ')';
       default:
-        return 'FlexibleFoo.<UNKNOWN>';
+        return r'FlexibleFoo.<UNKNOWN>';
     }
   }
 
@@ -179,9 +180,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictFoo.s($s)';
+        return r'StrictFoo.s(' + s.toString() + ')';
       case 2:
-        return 'StrictFoo.i($i)';
+        return r'StrictFoo.i(' + i.toString() + ')';
       default:
         return null;
     }
diff --git a/bin/fidlgen_dart/goldens/service.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/service.test.json_async.dart.golden
index 3a1064c..ccb4240 100644
--- a/bin/fidlgen_dart/goldens/service.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/service.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/struct.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/struct.test.json_async.dart.golden
index bc6cf43..d761568 100644
--- a/bin/fidlgen_dart/goldens/struct.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/struct.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Simple extends $fidl.Struct {
   const Simple({
@@ -73,7 +74,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Simple' r'(f1: ' +
         f1.toString() +
         r', f2: ' +
@@ -132,7 +132,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'BasicStruct' r'(x: ' +
         x.toString() +
         r', y: ' +
diff --git a/bin/fidlgen_dart/goldens/struct_default_value_enum_library_reference.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/struct_default_value_enum_library_reference.test.json_async.dart.golden
index 7e57abc..705c9b8 100644
--- a/bin/fidlgen_dart/goldens/struct_default_value_enum_library_reference.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/struct_default_value_enum_library_reference.test.json_async.dart.golden
@@ -37,6 +37,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Foo extends $fidl.Struct {
   const Foo({
@@ -67,7 +68,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Foo' r'(field: ' + field.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/table.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/table.test.json_async.dart.golden
index dc3f4cc..41c7f9f 100644
--- a/bin/fidlgen_dart/goldens/table.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/table.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class EmptyTable extends $fidl.Table {
   const EmptyTable({
diff --git a/bin/fidlgen_dart/goldens/transitive_dependencies.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/transitive_dependencies.test.json_async.dart.golden
index 95fbd56..cb6ac23 100644
--- a/bin/fidlgen_dart/goldens/transitive_dependencies.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/transitive_dependencies.test.json_async.dart.golden
@@ -37,6 +37,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class Baz extends $fidl.Struct {
   const Baz({
@@ -67,7 +68,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Baz' r'(g: ' + g.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/transitive_dependencies_compose.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/transitive_dependencies_compose.test.json_async.dart.golden
index bdc23ff..764b459 100644
--- a/bin/fidlgen_dart/goldens/transitive_dependencies_compose.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/transitive_dependencies_compose.test.json_async.dart.golden
@@ -38,6 +38,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 // ignore: unused_element, avoid_private_typedef_functions
 typedef _VoidCallback = void Function();
diff --git a/bin/fidlgen_dart/goldens/type_aliases.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/type_aliases.test.json_async.dart.golden
index b1787ad..4d1c01f 100644
--- a/bin/fidlgen_dart/goldens/type_aliases.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/type_aliases.test.json_async.dart.golden
@@ -37,6 +37,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ObjType extends $fidl.Enum {
   factory ObjType(int _v) {
@@ -227,7 +228,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ExampleOfUseOfAliases' r'(fieldOfU32: ' +
         fieldOfU32.toString() +
         r', fieldOfVecAtMostFiveOfString: ' +
diff --git a/bin/fidlgen_dart/goldens/union.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/union.test.json_async.dart.golden
index 3ebe9cb..71f5e45 100644
--- a/bin/fidlgen_dart/goldens/union.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/union.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum PizzaOrPastaTag {
   pizza, // 0x1
@@ -83,9 +84,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'PizzaOrPasta.pizza($pizza)';
+        return r'PizzaOrPasta.pizza(' + pizza.toString() + ')';
       case 2:
-        return 'PizzaOrPasta.pasta($pasta)';
+        return r'PizzaOrPasta.pasta(' + pasta.toString() + ')';
       default:
         return null;
     }
@@ -173,9 +174,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExplicitPizzaOrPasta.pizza($pizza)';
+        return r'ExplicitPizzaOrPasta.pizza(' + pizza.toString() + ')';
       case 4:
-        return 'ExplicitPizzaOrPasta.pasta($pasta)';
+        return r'ExplicitPizzaOrPasta.pasta(' + pasta.toString() + ')';
       default:
         return null;
     }
@@ -271,11 +272,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FlexiblePizzaOrPasta.pizza($pizza)';
+        return r'FlexiblePizzaOrPasta.pizza(' + pizza.toString() + ')';
       case 2:
-        return 'FlexiblePizzaOrPasta.pasta($pasta)';
+        return r'FlexiblePizzaOrPasta.pasta(' + pasta.toString() + ')';
       default:
-        return 'FlexiblePizzaOrPasta.<UNKNOWN>';
+        return r'FlexiblePizzaOrPasta.<UNKNOWN>';
     }
   }
 
@@ -361,9 +362,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictPizzaOrPasta.pizza($pizza)';
+        return r'StrictPizzaOrPasta.pizza(' + pizza.toString() + ')';
       case 2:
-        return 'StrictPizzaOrPasta.pasta($pasta)';
+        return r'StrictPizzaOrPasta.pasta(' + pasta.toString() + ')';
       default:
         return null;
     }
@@ -464,11 +465,15 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'Union.primitive($primitive)';
+        return r'Union.primitive(' + primitive.toString() + ')';
       case 2:
-        return 'Union.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'Union.stringNeedsConstructor(' +
+            stringNeedsConstructor.toString() +
+            ')';
       case 3:
-        return 'Union.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
+        return r'Union.vectorStringAlsoNeedsConstructor(' +
+            vectorStringAlsoNeedsConstructor.toString() +
+            ')';
       default:
         return null;
     }
@@ -581,13 +586,17 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FlexibleUnion.primitive($primitive)';
+        return r'FlexibleUnion.primitive(' + primitive.toString() + ')';
       case 2:
-        return 'FlexibleUnion.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'FlexibleUnion.stringNeedsConstructor(' +
+            stringNeedsConstructor.toString() +
+            ')';
       case 3:
-        return 'FlexibleUnion.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
+        return r'FlexibleUnion.vectorStringAlsoNeedsConstructor(' +
+            vectorStringAlsoNeedsConstructor.toString() +
+            ')';
       default:
-        return 'FlexibleUnion.<UNKNOWN>';
+        return r'FlexibleUnion.<UNKNOWN>';
     }
   }
 
@@ -694,11 +703,15 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictUnion.primitive($primitive)';
+        return r'StrictUnion.primitive(' + primitive.toString() + ')';
       case 2:
-        return 'StrictUnion.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'StrictUnion.stringNeedsConstructor(' +
+            stringNeedsConstructor.toString() +
+            ')';
       case 3:
-        return 'StrictUnion.vectorStringAlsoNeedsConstructor($vectorStringAlsoNeedsConstructor)';
+        return r'StrictUnion.vectorStringAlsoNeedsConstructor(' +
+            vectorStringAlsoNeedsConstructor.toString() +
+            ')';
       default:
         return null;
     }
@@ -781,7 +794,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FieldCollision.fieldCollisionTag($fieldCollisionTag)';
+        return r'FieldCollision.fieldCollisionTag(' +
+            fieldCollisionTag.toString() +
+            ')';
       default:
         return null;
     }
@@ -867,9 +882,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExplicitUnion.primitive($primitive)';
+        return r'ExplicitUnion.primitive(' + primitive.toString() + ')';
       case 3:
-        return 'ExplicitUnion.stringNeedsConstructor($stringNeedsConstructor)';
+        return r'ExplicitUnion.stringNeedsConstructor(' +
+            stringNeedsConstructor.toString() +
+            ')';
       default:
         return null;
     }
@@ -957,9 +974,9 @@
   String toString() {
     switch (_ordinal) {
       case 2:
-        return 'ReverseOrdinalUnion.second($second)';
+        return r'ReverseOrdinalUnion.second(' + second.toString() + ')';
       case 1:
-        return 'ReverseOrdinalUnion.first($first)';
+        return r'ReverseOrdinalUnion.first(' + first.toString() + ')';
       default:
         return null;
     }
@@ -1053,11 +1070,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'FlexibleFoo.s($s)';
+        return r'FlexibleFoo.s(' + s.toString() + ')';
       case 2:
-        return 'FlexibleFoo.i($i)';
+        return r'FlexibleFoo.i(' + i.toString() + ')';
       default:
-        return 'FlexibleFoo.<UNKNOWN>';
+        return r'FlexibleFoo.<UNKNOWN>';
     }
   }
 
@@ -1143,9 +1160,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictFoo.s($s)';
+        return r'StrictFoo.s(' + s.toString() + ')';
       case 2:
-        return 'StrictFoo.i($i)';
+        return r'StrictFoo.i(' + i.toString() + ')';
       default:
         return null;
     }
@@ -1238,11 +1255,11 @@
   String toString() {
     switch (_ordinal) {
       case 2:
-        return 'ExplicitFoo.s($s)';
+        return r'ExplicitFoo.s(' + s.toString() + ')';
       case 1:
-        return 'ExplicitFoo.i($i)';
+        return r'ExplicitFoo.i(' + i.toString() + ')';
       default:
-        return 'ExplicitFoo.<UNKNOWN>';
+        return r'ExplicitFoo.<UNKNOWN>';
     }
   }
 
@@ -1328,9 +1345,9 @@
   String toString() {
     switch (_ordinal) {
       case 3:
-        return 'ExplicitStrictFoo.s($s)';
+        return r'ExplicitStrictFoo.s(' + s.toString() + ')';
       case 2:
-        return 'ExplicitStrictFoo.i($i)';
+        return r'ExplicitStrictFoo.i(' + i.toString() + ')';
       default:
         return null;
     }
@@ -1425,11 +1442,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'OlderSimpleUnion.i($i)';
+        return r'OlderSimpleUnion.i(' + i.toString() + ')';
       case 2:
-        return 'OlderSimpleUnion.f($f)';
+        return r'OlderSimpleUnion.f(' + f.toString() + ')';
       default:
-        return 'OlderSimpleUnion.<UNKNOWN>';
+        return r'OlderSimpleUnion.<UNKNOWN>';
     }
   }
 
@@ -1535,13 +1552,13 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'NewerSimpleUnion.i($i)';
+        return r'NewerSimpleUnion.i(' + i.toString() + ')';
       case 2:
-        return 'NewerSimpleUnion.s($s)';
+        return r'NewerSimpleUnion.s(' + s.toString() + ')';
       case 3:
-        return 'NewerSimpleUnion.v($v)';
+        return r'NewerSimpleUnion.v(' + v.toString() + ')';
       default:
-        return 'NewerSimpleUnion.<UNKNOWN>';
+        return r'NewerSimpleUnion.<UNKNOWN>';
     }
   }
 
@@ -1648,11 +1665,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictSimpleXUnion.i($i)';
+        return r'StrictSimpleXUnion.i(' + i.toString() + ')';
       case 2:
-        return 'StrictSimpleXUnion.f($f)';
+        return r'StrictSimpleXUnion.f(' + f.toString() + ')';
       case 3:
-        return 'StrictSimpleXUnion.s($s)';
+        return r'StrictSimpleXUnion.s(' + s.toString() + ')';
       default:
         return null;
     }
@@ -1738,9 +1755,9 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'XUnionContainingEmptyStruct.empty($empty)';
+        return r'XUnionContainingEmptyStruct.empty(' + empty.toString() + ')';
       default:
-        return 'XUnionContainingEmptyStruct.<UNKNOWN>';
+        return r'XUnionContainingEmptyStruct.<UNKNOWN>';
     }
   }
 
@@ -1813,7 +1830,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'StrictBoundedXUnion.v($v)';
+        return r'StrictBoundedXUnion.v(' + v.toString() + ')';
       default:
         return null;
     }
@@ -1908,11 +1925,11 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'ExplicitXUnion.i($i)';
+        return r'ExplicitXUnion.i(' + i.toString() + ')';
       case 4:
-        return 'ExplicitXUnion.f($f)';
+        return r'ExplicitXUnion.f(' + f.toString() + ')';
       default:
-        return 'ExplicitXUnion.<UNKNOWN>';
+        return r'ExplicitXUnion.<UNKNOWN>';
     }
   }
 
@@ -1984,7 +2001,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Pizza' r'(toppings: ' + toppings.toString() + r')';
   }
 
@@ -2030,7 +2046,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Pasta' r'(sauce: ' + sauce.toString() + r')';
   }
 
@@ -2082,7 +2097,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'NullableUnionStruct' r'(theUnion: ' + theUnion.toString() + r')';
   }
 
@@ -2130,7 +2144,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'Empty' r'(reserved: ' + reserved.toString() + r')';
   }
 
@@ -2182,7 +2195,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructWithNullableXUnion' r'(x1: ' + x1.toString() + r')';
   }
 
diff --git a/bin/fidlgen_dart/goldens/union_sandwich.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/union_sandwich.test.json_async.dart.golden
index 94c5882..15e63b7 100644
--- a/bin/fidlgen_dart/goldens/union_sandwich.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/union_sandwich.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 enum UnionSize8Alignment4Tag {
   variant, // 0x1
@@ -70,7 +71,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionSize8Alignment4.variant($variant)';
+        return r'UnionSize8Alignment4.variant(' + variant.toString() + ')';
       default:
         return null;
     }
@@ -143,7 +144,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionSize12Alignment4.variant($variant)';
+        return r'UnionSize12Alignment4.variant(' + variant.toString() + ')';
       default:
         return null;
     }
@@ -216,7 +217,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionSize24Alignment8.variant($variant)';
+        return r'UnionSize24Alignment8.variant(' + variant.toString() + ')';
       default:
         return null;
     }
@@ -289,7 +290,7 @@
   String toString() {
     switch (_ordinal) {
       case 1:
-        return 'UnionSize36Alignment4.variant($variant)';
+        return r'UnionSize36Alignment4.variant(' + variant.toString() + ')';
       default:
         return null;
     }
@@ -372,7 +373,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'SandwichUnionSize8Alignment4' r'(before: ' +
         before.toString() +
         r', union: ' +
@@ -443,7 +443,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'SandwichUnionSize12Alignment4' r'(before: ' +
         before.toString() +
         r', union: ' +
@@ -507,7 +506,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'StructSize16Alignment8' r'(f1: ' +
         f1.toString() +
         r', f2: ' +
@@ -574,7 +572,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'SandwichUnionSize24Alignment8' r'(before: ' +
         before.toString() +
         r', union: ' +
@@ -645,7 +642,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'SandwichUnionSize36Alignment4' r'(before: ' +
         before.toString() +
         r', union: ' +
diff --git a/bin/fidlgen_dart/goldens/vectors.test.json_async.dart.golden b/bin/fidlgen_dart/goldens/vectors.test.json_async.dart.golden
index 47dc475..f218173 100644
--- a/bin/fidlgen_dart/goldens/vectors.test.json_async.dart.golden
+++ b/bin/fidlgen_dart/goldens/vectors.test.json_async.dart.golden
@@ -36,6 +36,7 @@
 // ignore_for_file: unnecessary_lambdas
 // ignore_for_file: comment_references
 // ignore_for_file: avoid_unused_constructor_parameters
+// ignore_for_file: prefer_interpolation_to_compose_strings
 
 class ExampleUseOfVectors extends $fidl.Struct {
   const ExampleUseOfVectors({
@@ -79,7 +80,6 @@
 
   @override
   String toString() {
-    // ignore: prefer_interpolation_to_compose_strings
     return r'ExampleUseOfVectors' r'(vectorOfUint8: ' +
         vectorOfUint8.toString() +
         r', vectorOfVectorOfBool: ' +