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

Unified Diff: pkg/analyzer/tool/summary/generate.dart

Issue 1747413002: Implement forwards compatibility for summary enums. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/tool/summary/generate.dart
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index c748efa74207e8b6e4378968339ef177e63e8de7..e35808b5a8f672f5b5ca3d2d7a7beddeda750a03 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -615,8 +615,7 @@ class _CodeGenerator {
String listCode = '$valueName.map((b) => $itemCode).toList()';
writeCode = '$offsetName = fbBuilder.writeListUint8($listCode);';
} else if (fieldType.typeName == 'bool') {
- writeCode =
- '$offsetName = fbBuilder.writeListBool($valueName);';
+ writeCode = '$offsetName = fbBuilder.writeListBool($valueName);';
} else if (fieldType.typeName == 'int') {
writeCode =
'$offsetName = fbBuilder.writeListUint32($valueName);';
@@ -689,6 +688,8 @@ class _CodeGenerator {
void _generateEnumReader(idlModel.EnumDeclaration enm) {
String name = enm.name;
String readerName = '_${name}Reader';
+ String count = '${idlPrefix(name)}.values.length';
+ String def = '${idlPrefix(name)}.${enm.values[0].name}';
out('class $readerName extends fb.Reader<${idlPrefix(name)}> {');
indent(() {
out('const $readerName() : super();');
@@ -700,7 +701,7 @@ class _CodeGenerator {
out('${idlPrefix(name)} read(fb.BufferPointer bp) {');
indent(() {
out('int index = const fb.Uint8Reader().read(bp);');
- out('return ${idlPrefix(name)}.values[index];');
+ out('return index < $count ? ${idlPrefix(name)}.values[index] : $def;');
});
out('}');
});
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698