| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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.values; | 5 library dart2js.constants.values; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../core_types.dart'; | 8 import '../core_types.dart'; |
| 9 import '../dart_types.dart'; | 9 import '../dart_types.dart'; |
| 10 import '../elements/elements.dart' | 10 import '../elements/elements.dart' |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 this.hashCode = value.slowToString().hashCode; | 382 this.hashCode = value.slowToString().hashCode; |
| 383 | 383 |
| 384 StringConstantValue.fromString(String value) | 384 StringConstantValue.fromString(String value) |
| 385 : this(new DartString.literal(value)); | 385 : this(new DartString.literal(value)); |
| 386 | 386 |
| 387 bool get isString => true; | 387 bool get isString => true; |
| 388 | 388 |
| 389 DartType getType(CoreTypes types) => types.stringType; | 389 DartType getType(CoreTypes types) => types.stringType; |
| 390 | 390 |
| 391 bool operator ==(var other) { | 391 bool operator ==(var other) { |
| 392 if (identical(this, other)) return true; |
| 392 if (other is !StringConstantValue) return false; | 393 if (other is !StringConstantValue) return false; |
| 393 StringConstantValue otherString = other; | 394 StringConstantValue otherString = other; |
| 394 return hashCode == otherString.hashCode && | 395 return hashCode == otherString.hashCode && |
| 395 primitiveValue == otherString.primitiveValue; | 396 primitiveValue == otherString.primitiveValue; |
| 396 } | 397 } |
| 397 | 398 |
| 398 DartString toDartString() => primitiveValue; | 399 DartString toDartString() => primitiveValue; |
| 399 | 400 |
| 400 int get length => primitiveValue.length; | 401 int get length => primitiveValue.length; |
| 401 | 402 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 final int hashCode; | 455 final int hashCode; |
| 455 | 456 |
| 456 ListConstantValue(InterfaceType type, List<ConstantValue> entries) | 457 ListConstantValue(InterfaceType type, List<ConstantValue> entries) |
| 457 : this.entries = entries, | 458 : this.entries = entries, |
| 458 hashCode = Hashing.listHash(entries, Hashing.objectHash(type)), | 459 hashCode = Hashing.listHash(entries, Hashing.objectHash(type)), |
| 459 super(type); | 460 super(type); |
| 460 | 461 |
| 461 bool get isList => true; | 462 bool get isList => true; |
| 462 | 463 |
| 463 bool operator ==(var other) { | 464 bool operator ==(var other) { |
| 465 if (identical(this, other)) return true; |
| 464 if (other is !ListConstantValue) return false; | 466 if (other is !ListConstantValue) return false; |
| 465 ListConstantValue otherList = other; | 467 ListConstantValue otherList = other; |
| 466 if (hashCode != otherList.hashCode) return false; | 468 if (hashCode != otherList.hashCode) return false; |
| 467 if (type != otherList.type) return false; | 469 if (type != otherList.type) return false; |
| 468 if (entries.length != otherList.entries.length) return false; | 470 if (entries.length != otherList.entries.length) return false; |
| 469 for (int i = 0; i < entries.length; i++) { | 471 for (int i = 0; i < entries.length; i++) { |
| 470 if (entries[i] != otherList.entries[i]) return false; | 472 if (entries[i] != otherList.entries[i]) return false; |
| 471 } | 473 } |
| 472 return true; | 474 return true; |
| 473 } | 475 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 this.hashCode = Hashing.listHash(values, | 520 this.hashCode = Hashing.listHash(values, |
| 519 Hashing.listHash(keys, | 521 Hashing.listHash(keys, |
| 520 Hashing.objectHash(type))), | 522 Hashing.objectHash(type))), |
| 521 super(type) { | 523 super(type) { |
| 522 assert(keys.length == values.length); | 524 assert(keys.length == values.length); |
| 523 } | 525 } |
| 524 | 526 |
| 525 bool get isMap => true; | 527 bool get isMap => true; |
| 526 | 528 |
| 527 bool operator ==(var other) { | 529 bool operator ==(var other) { |
| 530 if (identical(this, other)) return true; |
| 528 if (other is !MapConstantValue) return false; | 531 if (other is !MapConstantValue) return false; |
| 529 MapConstantValue otherMap = other; | 532 MapConstantValue otherMap = other; |
| 530 if (hashCode != otherMap.hashCode) return false; | 533 if (hashCode != otherMap.hashCode) return false; |
| 531 if (type != other.type) return false; | 534 if (type != other.type) return false; |
| 532 if (length != other.length) return false; | 535 if (length != other.length) return false; |
| 533 for (int i = 0; i < length; i++) { | 536 for (int i = 0; i < length; i++) { |
| 534 if (keys[i] != otherMap.keys[i]) return false; | 537 if (keys[i] != otherMap.keys[i]) return false; |
| 535 if (values[i] != otherMap.values[i]) return false; | 538 if (values[i] != otherMap.values[i]) return false; |
| 536 } | 539 } |
| 537 return true; | 540 return true; |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 : this.fields = fields, | 657 : this.fields = fields, |
| 655 hashCode = Hashing.mapHash(fields, Hashing.objectHash(type)), | 658 hashCode = Hashing.mapHash(fields, Hashing.objectHash(type)), |
| 656 super(type) { | 659 super(type) { |
| 657 assert(type != null); | 660 assert(type != null); |
| 658 assert(!fields.containsValue(null)); | 661 assert(!fields.containsValue(null)); |
| 659 } | 662 } |
| 660 | 663 |
| 661 bool get isConstructedObject => true; | 664 bool get isConstructedObject => true; |
| 662 | 665 |
| 663 bool operator ==(var otherVar) { | 666 bool operator ==(var otherVar) { |
| 667 if (identical(this, otherVar)) return true; |
| 664 if (otherVar is !ConstructedConstantValue) return false; | 668 if (otherVar is !ConstructedConstantValue) return false; |
| 665 ConstructedConstantValue other = otherVar; | 669 ConstructedConstantValue other = otherVar; |
| 666 if (hashCode != other.hashCode) return false; | 670 if (hashCode != other.hashCode) return false; |
| 667 if (type != other.type) return false; | 671 if (type != other.type) return false; |
| 668 if (fields.length != other.fields.length) return false; | 672 if (fields.length != other.fields.length) return false; |
| 669 for (FieldElement field in fields.keys) { | 673 for (FieldElement field in fields.keys) { |
| 670 if (fields[field] != other.fields[field]) return false; | 674 if (fields[field] != other.fields[field]) return false; |
| 671 } | 675 } |
| 672 return true; | 676 return true; |
| 673 } | 677 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 | 762 |
| 759 @override | 763 @override |
| 760 DartType getType(CoreTypes types) => const DynamicType(); | 764 DartType getType(CoreTypes types) => const DynamicType(); |
| 761 | 765 |
| 762 @override | 766 @override |
| 763 String toStructuredString() => 'NonConstant'; | 767 String toStructuredString() => 'NonConstant'; |
| 764 | 768 |
| 765 @override | 769 @override |
| 766 String unparse() => '>>non-constant<<'; | 770 String unparse() => '>>non-constant<<'; |
| 767 } | 771 } |
| OLD | NEW |