Index: packages/code_transformers/lib/messages/messages.dart |
diff --git a/packages/code_transformers/lib/messages/messages.dart b/packages/code_transformers/lib/messages/messages.dart |
index 56f3c0e22315734071b69be714372996eb99e272..77ea05f4239e6f137aaa7168ef378622173d3056 100644 |
--- a/packages/code_transformers/lib/messages/messages.dart |
+++ b/packages/code_transformers/lib/messages/messages.dart |
@@ -11,13 +11,14 @@ library code_transformers.messages; |
// so it can easily be used both in the transformers and in client-side apps |
// (for example in the log_injector). |
import 'dart:collection' show LinkedHashMap; |
+ |
import 'package:source_span/source_span.dart'; |
/// A globally unique identifier for an error message. This identifier should be |
/// stable, that is, it should never change after it is asigned to a particular |
/// message. That allows us to document our error messages and make them |
/// searchable for prosperity. |
-class MessageId implements Comparable { |
+class MessageId implements Comparable<MessageId> { |
/// Name of the package that declares this message. |
final String package; |
@@ -48,7 +49,9 @@ class MessageId implements Comparable { |
data.substring(0, index), int.parse(data.substring(index + 1))); |
} |
- operator ==(MessageId other) => package == other.package && id == other.id; |
+ operator ==(Object other) => |
+ other is MessageId && package == other.package && id == other.id; |
+ |
int get hashCode => 31 * package.hashCode + id; |
} |
@@ -164,7 +167,10 @@ class BuildLogEntry { |
/// Serializes this log entry to JSON. |
Map toJson() { |
- var data = {'level': level, 'message': message.toJson(),}; |
+ var data = { |
+ 'level': level, |
+ 'message': message.toJson(), |
+ }; |
if (span != null) { |
data['span'] = { |
'start': { |
@@ -184,6 +190,7 @@ class BuildLogEntry { |
} |
return data; |
} |
+ |
String toString() => '${toJson()}'; |
} |
@@ -194,7 +201,7 @@ class LogEntryTable { |
LogEntryTable() : entries = new LinkedHashMap(); |
/// Creates a new [LogEntryTable] from an encoded value produced via [toJson]. |
- factory LogEntryTable.fromJson(Map json) { |
+ factory LogEntryTable.fromJson(Map<String, Iterable> json) { |
var res = new LogEntryTable(); |
for (String key in json.keys) { |
var id = new MessageId.fromJson(key); |
@@ -212,11 +219,13 @@ class LogEntryTable { |
}); |
return res; |
} |
+ |
String toString() => '${toJson()}'; |
void add(BuildLogEntry entry) { |
entries.putIfAbsent(entry.message.id, () => []).add(entry); |
} |
+ |
void addAll(LogEntryTable other) { |
for (var key in other.entries.keys) { |
var values = entries.putIfAbsent(key, () => []); |