[dart2js] Adding asserts to all makeX functions to ensure that all new programInfoNodes are unique

Change-Id: Ifc413160b3bc4cebd3d56e72d36fd19def32e303
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/252864
Commit-Queue: Islina Shan <islinashan@google.com>
Reviewed-by: Mark Zhou <markzipan@google.com>
diff --git a/pkg/dart2js_info/bin/src/to_devtools_format.dart b/pkg/dart2js_info/bin/src/to_devtools_format.dart
index c20c949..9d8e756 100644
--- a/pkg/dart2js_info/bin/src/to_devtools_format.dart
+++ b/pkg/dart2js_info/bin/src/to_devtools_format.dart
@@ -187,6 +187,8 @@
       packageInfoNodes[packageName] = newPackage;
       program.root.children[packageName] = newPackage;
       outputInfo.add(newPackage);
+      var packageNode = infoNodesByName[newPackage.name];
+      assert(packageNode == null, "encountered package with duplicated name");
       infoNodesByName[newPackage.name] = newPackage;
     } else {
       packageInfoNode.size = (packageInfoNode.size ?? 0) + libraryInfo.size;
@@ -205,6 +207,8 @@
         name: libraryName, parent: parentNode, type: vm.NodeType.libraryNode);
     newLibrary.size = libraryInfo.size;
     parentNode.children[newLibrary.name] = newLibrary;
+    vm.ProgramInfoNode? libraryNode = infoNodesByName[newLibrary.name];
+    assert(libraryNode == null, "encountered library with duplicated name");
     infoNodesByName[newLibrary.name] = newLibrary;
     outputInfo.add(newLibrary);
   }
@@ -225,6 +229,8 @@
           type: vm.NodeType.functionNode);
       newFunction.size = functionInfo.size;
       parentNode.children[newFunction.name] = newFunction;
+      vm.ProgramInfoNode? functionNode = infoNodesByName[newFunction.name];
+      assert(functionNode == null, "encountered function with duplicated name");
       infoNodesByName[newFunction.name] = newFunction;
       outputInfo.add(newFunction);
     }
@@ -246,6 +252,8 @@
           type: vm.NodeType.classNode);
       newClass.size = classInfo.size;
       parentNode.children[newClass.name] = newClass;
+      vm.ProgramInfoNode? classNode = infoNodesByName[newClass.name];
+      assert(classNode == null, "encountered class with duplicated name");
       infoNodesByName[newClass.name] = newClass;
       outputInfo.add(newClass);
     }
@@ -270,6 +278,8 @@
           name: fieldInfo.name, parent: parentNode, type: vm.NodeType.other);
       newField.size = fieldInfo.size;
       parentNode.children[newField.name] = newField;
+      vm.ProgramInfoNode? fieldNode = infoNodesByName[newField.name];
+      assert(fieldNode == null, "encountered field with duplicated name");
       infoNodesByName[newField.name] = newField;
       outputInfo.add(newField);
     }
@@ -310,6 +320,9 @@
           parent: parentNode,
           type: vm.NodeType.other);
       newClassType.size = classTypeInfo.size;
+      vm.ProgramInfoNode? classTypeNode = infoNodesByName[newClassType.name];
+      assert(
+          classTypeNode == null, "encountered classType with duplicated name");
       infoNodesByName[newClassType.name] = newClassType;
       outputInfo.add(newClassType);
     }
@@ -332,6 +345,8 @@
           type: vm.NodeType.functionNode);
       newClosure.size = closureInfo.size;
       parentNode.children[newClosure.name] = newClosure;
+      vm.ProgramInfoNode? closureNode = infoNodesByName[newClosure.name];
+      assert(closureNode == null, "encountered closure with duplicated name");
       infoNodesByName[newClosure.name] = newClosure;
       outputInfo.add(newClosure);
     }