[ddc] Support static JS interop in new type system

Issue: https://github.com/dart-lang/sdk/issues/48585
Change-Id: Ie0a69406686512426e30fdc0b7334263d3e596d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/306135
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
diff --git a/pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart b/pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart
index 8284f59..570d9ad 100644
--- a/pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart
+++ b/pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart
@@ -4,6 +4,8 @@
 
 import 'dart:collection';
 
+import 'package:_js_interop_checks/src/transformations/static_interop_class_eraser.dart'
+    show eraseStaticInteropTypesForJSCompilers;
 import 'package:js_shared/synced/recipe_syntax.dart' show Recipe;
 import 'package:kernel/ast.dart';
 import 'package:kernel/class_hierarchy.dart';
@@ -244,6 +246,10 @@
   @override
   String visitInterfaceType(InterfaceType node) {
     var cls = node.classNode;
+    if (isStaticInteropType(cls)) {
+      return eraseStaticInteropTypesForJSCompilers(_coreTypes, node)
+          .accept(this);
+    }
     addLiveType(node);
     // Generate the interface type recipe.
     var recipeBuffer = StringBuffer(interfaceTypeRecipe(cls));
@@ -339,6 +345,10 @@
   }
 
   @override
+  String visitInlineType(InlineType node) =>
+      node.instantiatedRepresentationType.accept(this);
+
+  @override
   String visitRecordType(RecordType node) {
     var recipeBuffer = StringBuffer(Recipe.startRecordString);
     // Add the names of the named elements.