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

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

Issue 1605763007: Validate that int values that we write to summaries are >= 0. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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/test/generated/resolver_test.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 792b8ac86bab455dcdc4c50c356c0dd1bab19ba0..5e41b4ad711884f6d8678571c0147c4e052dd529 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -312,12 +312,13 @@ class _CodeGenerator {
// Generate getters and setters.
for (idlModel.FieldDeclaration field in cls.fields) {
String fieldName = field.name;
- String typeStr = encodedType(field.type);
- String def = defaultValue(field.type);
+ idlModel.FieldType fieldType = field.type;
+ String typeStr = encodedType(fieldType);
+ String def = defaultValue(fieldType);
String defSuffix = def == null ? '' : ' ?? $def';
out();
out('@override');
- out('${dartType(field.type)} get $fieldName => _$fieldName$defSuffix;');
+ out('${dartType(fieldType)} get $fieldName => _$fieldName$defSuffix;');
out();
outDoc(field.documentation);
constructorParams.add('$typeStr $fieldName');
@@ -325,6 +326,15 @@ class _CodeGenerator {
indent(() {
String stateFieldName = '_' + fieldName;
out('assert(!_finished);');
+ // Validate that int(s) are non-negative.
+ if (fieldType.typeName == 'int') {
+ if (!fieldType.isList) {
+ out('assert(_value == null || _value >= 0);');
+ } else {
+ out('assert(_value == null || _value.every((e) => e >= 0));');
+ }
+ }
+ // Set the value.
out('$stateFieldName = _value;');
});
out('}');
« no previous file with comments | « pkg/analyzer/test/generated/resolver_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698