[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.