Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Unified Diff: pkg/compiler/lib/src/serialization/serialization_util.dart

Issue 2125793003: Serialize WarnOnUseElement (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/serialization/serialization_util.dart
diff --git a/pkg/compiler/lib/src/serialization/serialization_util.dart b/pkg/compiler/lib/src/serialization/serialization_util.dart
index 1e400000b08f8f9278a96b3fe737606afbc4d5a4..4883adb3859897d0cdad1b0e3787f519202d47b7 100644
--- a/pkg/compiler/lib/src/serialization/serialization_util.dart
+++ b/pkg/compiler/lib/src/serialization/serialization_util.dart
@@ -7,7 +7,9 @@ library dart2js.serialization.util;
import '../common.dart';
import '../constants/expressions.dart';
import '../dart_types.dart';
+import '../diagnostics/messages.dart';
import '../elements/elements.dart';
+import '../elements/modelx.dart' show WrappedMessage;
import '../resolution/access_semantics.dart';
import '../resolution/operators.dart';
import '../resolution/send_structure.dart';
@@ -526,3 +528,63 @@ Element deserializeElementReference(
}
return element;
}
+
+void serializeMessageArguments(
+ ObjectEncoder encoder, Key key, Map<String, dynamic> messageArguments) {
+ if (messageArguments.isNotEmpty) {
+ MapEncoder mapEncoder = encoder.createMap(Key.ARGUMENTS);
+ messageArguments.forEach((String key, var value) {
+ mapEncoder.setString(key, Message.convertToString(value));
+ });
+ }
+}
+
+Map<String, String> deserializeMessageArguments(
+ ObjectDecoder decoder, Key key) {
+ Map<String, String> arguments = <String, String>{};
+ MapDecoder mapDecoder = decoder.getMap(key, isOptional: true);
+ if (mapDecoder != null) {
+ mapDecoder.forEachKey((String key) {
+ arguments[key] = mapDecoder.getString(key);
+ });
+ }
+ return arguments;
+}
+
+void serializeSourceSpan(ObjectEncoder encoder, SourceSpan sourceSpan) {
+ encoder.setUri(Key.URI, sourceSpan.uri, sourceSpan.uri);
+ encoder.setInt(Key.OFFSET, sourceSpan.begin);
+ encoder.setInt(Key.LENGTH, sourceSpan.end - sourceSpan.begin);
+}
+
+SourceSpan deserializeSourceSpan(ObjectDecoder decoder) {
+ Uri uri = decoder.getUri(Key.URI);
+ int offset = decoder.getInt(Key.OFFSET);
+ int length = decoder.getInt(Key.LENGTH);
+ return new SourceSpan(uri, offset, offset + length);
+}
+
+void serializeWrappedMessage(
+ ObjectEncoder encoder, Key key, WrappedMessage message) {
+ ObjectEncoder object = encoder.createObject(key);
+ if (message.sourceSpan != null) {
+ serializeSourceSpan(
+ object.createObject(Key.SOURCE_SPAN), message.sourceSpan);
+ }
+ object.setEnum(Key.KIND, message.messageKind);
+ serializeMessageArguments(object, Key.ARGUMENTS, message.messageArguments);
+}
+
+WrappedMessage deserializeWrappedMessage(ObjectDecoder decoder, Key key) {
+ ObjectDecoder object = decoder.getObject(key);
+ SourceSpan sourceSpan;
+ ObjectDecoder sourceSpanDecoder =
+ object.getObject(Key.SOURCE_SPAN, isOptional: true);
+ if (sourceSpanDecoder != null) {
+ sourceSpan = deserializeSourceSpan(sourceSpanDecoder);
+ }
+ MessageKind messageKind = object.getEnum(Key.KIND, MessageKind.values);
+ Map<String, dynamic> messageArguments =
+ deserializeMessageArguments(object, Key.ARGUMENTS);
+ return new WrappedMessage(sourceSpan, messageKind, messageArguments);
+}
« no previous file with comments | « pkg/compiler/lib/src/serialization/keys.dart ('k') | tests/compiler/dart2js/serialization/equivalence_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698