| // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // Regression test for https://github.com/flutter/flutter/issues/20122 |
| // Verifies that identityHashCode for strings does not interfere |
| // with normal hashCode. |
| |
| import 'package:expect/expect.dart'; |
| |
| var prefix = 'x'; |
| |
| make(v) => '${prefix}${v}'; // to inhibit constant folding. |
| |
| void main() { |
| final x = make('test'); |
| final y = make('test'); |
| // On 64-bit platforms there is a field in the header that is used to cache |
| // hash value for both Object.get:hashCode and identityHashCode(...). |
| // Which means that implementation of these two methods should match |
| // otherwise you will get different hash codes for otherwise identical objects. |
| identityHashCode(y); |
| Expect.equals(x.hashCode, y.hashCode); |
| } |