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

Side by Side Diff: pkg/compiler/lib/src/constants/expressions.dart

Issue 2120943002: Fix evaluation of constant map with duplicate keys. (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 unified diff | Download patch
« no previous file with comments | « no previous file | tests/compiler/dart2js/constant_expression_evaluate_test.dart » ('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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library dart2js.constants.expressions; 5 library dart2js.constants.expressions;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../constants/constant_system.dart'; 8 import '../constants/constant_system.dart';
9 import '../core_types.dart'; 9 import '../core_types.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 keys[index]._createStructuredText(sb); 475 keys[index]._createStructuredText(sb);
476 sb.write('->'); 476 sb.write('->');
477 values[index]._createStructuredText(sb); 477 values[index]._createStructuredText(sb);
478 } 478 }
479 sb.write('])'); 479 sb.write('])');
480 } 480 }
481 481
482 @override 482 @override
483 ConstantValue evaluate( 483 ConstantValue evaluate(
484 Environment environment, ConstantSystem constantSystem) { 484 Environment environment, ConstantSystem constantSystem) {
485 Map<ConstantValue, ConstantValue> valueMap =
486 <ConstantValue, ConstantValue>{};
487 for (int index = 0; index < keys.length; index++) {
488 ConstantValue key =
489 keys[index].evaluate(environment, constantSystem);
490 ConstantValue value =
491 values[index].evaluate(environment, constantSystem);
492 valueMap[key] = value;
493 }
485 return constantSystem.createMap( 494 return constantSystem.createMap(
486 environment.compiler, 495 environment.compiler,
487 type, 496 type,
488 keys.map((k) => k.evaluate(environment, constantSystem)).toList(), 497 valueMap.keys.toList(),
489 values.map((v) => v.evaluate(environment, constantSystem)).toList()); 498 valueMap.values.toList());
490 } 499 }
491 500
492 ConstantExpression apply(NormalizedArguments arguments) { 501 ConstantExpression apply(NormalizedArguments arguments) {
493 return new MapConstantExpression( 502 return new MapConstantExpression(
494 type, 503 type,
495 keys.map((k) => k.apply(arguments)).toList(), 504 keys.map((k) => k.apply(arguments)).toList(),
496 values.map((v) => v.apply(arguments)).toList()); 505 values.map((v) => v.apply(arguments)).toList());
497 } 506 }
498 507
499 @override 508 @override
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1882 visit(exp.name); 1891 visit(exp.name);
1883 if (exp.defaultValue != null) { 1892 if (exp.defaultValue != null) {
1884 sb.write(', defaultValue: '); 1893 sb.write(', defaultValue: ');
1885 visit(exp.defaultValue); 1894 visit(exp.defaultValue);
1886 } 1895 }
1887 sb.write(')'); 1896 sb.write(')');
1888 } 1897 }
1889 1898
1890 String toString() => sb.toString(); 1899 String toString() => sb.toString();
1891 } 1900 }
OLDNEW
« no previous file with comments | « no previous file | tests/compiler/dart2js/constant_expression_evaluate_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698