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

Side by Side Diff: lib/generated_message.dart

Issue 106663007: When clearing a field make the field state "does not exist" (Closed) Base URL: https://github.com/dart-lang/dart-protobuf.git@master
Patch Set: Created 7 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | pubspec.yaml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of protobuf; 5 part of protobuf;
6 6
7 typedef GeneratedMessage CreateBuilderFunc(); 7 typedef GeneratedMessage CreateBuilderFunc();
8 typedef Object MakeDefaultFunc(); 8 typedef Object MakeDefaultFunc();
9 typedef ProtobufEnum ValueOfFunc(int value); 9 typedef ProtobufEnum ValueOfFunc(int value);
10 10
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 var value = extension.makeDefault(); 867 var value = extension.makeDefault();
868 if (value is List) { 868 if (value is List) {
869 _setExtension(extension, value); 869 _setExtension(extension, value);
870 } else { 870 } else {
871 _extensions.remove(extension.tagNumber); 871 _extensions.remove(extension.tagNumber);
872 } 872 }
873 } 873 }
874 874
875 void clearField(int tagNumber) { 875 void clearField(int tagNumber) {
876 _fieldValues.remove(tagNumber); 876 _fieldValues.remove(tagNumber);
877 // Restore the default value for the field.
878 // For repeated fields, the default is an empty list.
879 // For required/optional fields, the BuilderInfo contains the initializer.
880 int fieldType = _getFieldType(tagNumber);
881 if ((fieldType & _REPEATED_BIT) != 0) {
882 _fieldValues[tagNumber] = new PbList();
883 } else {
884 var defaultValue = info_.defaultValue(tagNumber);
885 if (defaultValue != null) {
886 _fieldValues[tagNumber] = defaultValue;
887 }
888 }
889 } 877 }
890 878
891 bool extensionsAreInitialized() { 879 bool extensionsAreInitialized() {
892 return _extensions.keys.every((int tagNumber) { 880 return _extensions.keys.every((int tagNumber) {
893 return info_._isFieldInitialized(_fieldValues, tagNumber, 881 return info_._isFieldInitialized(_fieldValues, tagNumber,
894 _extensions[tagNumber].type); 882 _extensions[tagNumber].type);
895 }); 883 });
896 } 884 }
897 885
898 /** 886 /**
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 _generateMessage(tagNumber, value, 'not a GeneratedMessage')); 1224 _generateMessage(tagNumber, value, 'not a GeneratedMessage'));
1237 } 1225 }
1238 break; 1226 break;
1239 default: 1227 default:
1240 throw new ArgumentError( 1228 throw new ArgumentError(
1241 _generateMessage(tagNumber, value, 'field has unknown type ' 1229 _generateMessage(tagNumber, value, 'field has unknown type '
1242 '$fieldType')); 1230 '$fieldType'));
1243 } 1231 }
1244 } 1232 }
1245 } 1233 }
OLDNEW
« no previous file with comments | « no previous file | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698