Index: pkg/compiler/lib/src/js_backend/backend_serialization.dart |
diff --git a/pkg/compiler/lib/src/js_backend/backend_serialization.dart b/pkg/compiler/lib/src/js_backend/backend_serialization.dart |
index ddd5c507ed898e0f403fb7e56be11724f735fdf4..cc7cc03fe57f93667c901a1e6f25129e64c13dd4 100644 |
--- a/pkg/compiler/lib/src/js_backend/backend_serialization.dart |
+++ b/pkg/compiler/lib/src/js_backend/backend_serialization.dart |
@@ -35,6 +35,10 @@ class JavaScriptBackendSerialization implements BackendSerialization { |
deserializer = new JavaScriptBackendDeserializer(backend); |
} |
+const Key JS_INTEROP_NAME = const Key('jsInteropName'); |
+const Key NATIVE_MEMBER_NAME = const Key('nativeMemberName'); |
+const Key NATIVE_CLASS_TAG_INFO = const Key('nativeClassTagInfo'); |
+ |
class JavaScriptBackendSerializer implements SerializerPlugin { |
final JavaScriptBackend backend; |
@@ -42,12 +46,22 @@ class JavaScriptBackendSerializer implements SerializerPlugin { |
@override |
void onElement(Element element, ObjectEncoder createEncoder(String tag)) { |
- // TODO(johnniwinther): Add more data, e.g. js-interop names, native tags, |
- // etc. |
- String nativeName = backend.nativeData.nativeMemberName[element]; |
- if (nativeName != null) { |
- ObjectEncoder encoder = createEncoder(_BACKEND_DATA_TAG); |
- encoder.setString(Key.NAME, nativeName); |
+ ObjectEncoder encoder; |
+ ObjectEncoder getEncoder() { |
+ return encoder ??= createEncoder(_BACKEND_DATA_TAG); |
+ } |
+ |
+ String jsInteropName = backend.nativeData.jsInteropNames[element]; |
+ if (jsInteropName != null) { |
+ getEncoder().setString(JS_INTEROP_NAME, jsInteropName); |
+ } |
+ String nativeMemberName = backend.nativeData.nativeMemberName[element]; |
+ if (nativeMemberName != null) { |
+ getEncoder().setString(NATIVE_MEMBER_NAME, nativeMemberName); |
+ } |
+ String nativeClassTagInfo = backend.nativeData.nativeClassTagInfo[element]; |
+ if (nativeClassTagInfo != null) { |
+ getEncoder().setString(NATIVE_CLASS_TAG_INFO, nativeClassTagInfo); |
} |
} |
@@ -96,8 +110,21 @@ class JavaScriptBackendDeserializer implements DeserializerPlugin { |
void onElement(Element element, ObjectDecoder getDecoder(String tag)) { |
ObjectDecoder decoder = getDecoder(_BACKEND_DATA_TAG); |
if (decoder != null) { |
- String nativeName = decoder.getString(Key.NAME); |
- backend.nativeData.nativeMemberName[element] = nativeName; |
+ String jsInteropName = |
+ decoder.getString(JS_INTEROP_NAME, isOptional: true); |
+ if (jsInteropName != null) { |
+ backend.nativeData.jsInteropNames[element] = jsInteropName; |
+ } |
+ String nativeMemberName = |
+ decoder.getString(NATIVE_MEMBER_NAME, isOptional: true); |
+ if (nativeMemberName != null) { |
+ backend.nativeData.nativeMemberName[element] = nativeMemberName; |
+ } |
+ String nativeClassTagInfo = |
+ decoder.getString(NATIVE_CLASS_TAG_INFO, isOptional: true); |
+ if (nativeClassTagInfo != null) { |
+ backend.nativeData.nativeClassTagInfo[element] = nativeClassTagInfo; |
+ } |
} |
} |