Print constant table when printing libraries.

Change-Id: Ia474f3ddbe23be14d40789b0587ceeee92813106
Reviewed-on: https://dart-review.googlesource.com/c/89548
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/utils.dart b/pkg/front_end/lib/src/fasta/kernel/utils.dart
index 30686ba..392c061 100644
--- a/pkg/front_end/lib/src/fasta/kernel/utils.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/utils.dart
@@ -33,11 +33,12 @@
     {bool libraryFilter(Library library)}) {
   if (component == null) return;
   StringBuffer sb = new StringBuffer();
+  Printer printer = new Printer(sb);
   for (Library library in component.libraries) {
     if (libraryFilter != null && !libraryFilter(library)) continue;
-    Printer printer = new Printer(sb);
     printer.writeLibraryFile(library);
   }
+  printer.writeConstantTable(component);
   print(sb);
 }
 
diff --git a/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart b/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
index 0533d88..62b149f 100644
--- a/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
+++ b/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
@@ -60,13 +60,14 @@
     await CompilerContext.runWithDefaultOptions((compilerContext) async {
       compilerContext.uriToSource.addAll(component.uriToSource);
 
+      Printer printer = new Printer(sb);
       for (Library library in component.libraries) {
-        Printer printer = new Printer(sb);
         if (library.importUri.scheme != "dart" &&
             library.importUri.scheme != "package") {
           printer.writeLibraryFile(library);
         }
       }
+      printer.writeConstantTable(component);
     });
     print("$sb");
     return pass(component);
@@ -172,7 +173,9 @@
       }
       buffer.write("\n\n");
     }
-    new ErrorPrinter(buffer).writeLibraryFile(library);
+    ErrorPrinter printer = new ErrorPrinter(buffer);
+    printer.writeLibraryFile(library);
+    printer.writeConstantTable(component);
     String actual = "$buffer".replaceAll("$base", "org-dartlang-testcase:///");
     actual = actual.replaceAll("$dartBase", "org-dartlang-testcase-sdk:///");
     actual = actual.replaceAll("\\n", "\n");
diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart
index 2f74c96..328e40a 100644
--- a/pkg/kernel/lib/text/ast_to_text.dart
+++ b/pkg/kernel/lib/text/ast_to_text.dart
@@ -445,6 +445,13 @@
       --inner.indentation;
       endLine('}');
     }
+    writeConstantTable(component);
+  }
+
+  void writeConstantTable(Component component) {
+    if (syntheticNames.constants.map.isEmpty) return;
+    ImportTable imports = new ComponentImportTable(component);
+    var inner = createInner(imports, component.metadata);
     writeWord('constants ');
     endLine(' {');
     ++inner.indentation;