mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
c347b0ed16
Deleted http_resource_test – the associated classes no longer exist Deleted int_fromEnvironment3 - validated type semantics Tweaked hash_set_type_check – made it very simple. Also tweaked some analyzer hints R=rnystrom@google.com Review-Url: https://codereview.chromium.org/2990623002 .
48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
// Copyright (c) 2013, 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
class Override {
|
|
int hash;
|
|
int get superHash => super.hashCode;
|
|
int get hashCode => hash;
|
|
|
|
int foo() => hash; // Just some function that can be closurized.
|
|
|
|
bool operator ==(Object other) => other is Override && other.hash == hash;
|
|
}
|
|
|
|
int bar() => 42; // Some global function.
|
|
|
|
main() {
|
|
var o = new Object();
|
|
var hash = o.hashCode;
|
|
// Doesn't change.
|
|
Expect.equals(hash, o.hashCode);
|
|
Expect.equals(hash, identityHashCode(o));
|
|
|
|
var c = new Override();
|
|
int identityHash = c.superHash;
|
|
hash = (identityHash == 42) ? 37 : 42;
|
|
c.hash = hash;
|
|
Expect.equals(hash, c.hashCode);
|
|
Expect.equals(identityHash, identityHashCode(c));
|
|
|
|
// These classes don't override hashCode.
|
|
var samples = [0, 0x10000000, 1.5, -0, null, true, false, const Object()];
|
|
for (var v in samples) {
|
|
print(v);
|
|
Expect.equals(v.hashCode, identityHashCode(v));
|
|
}
|
|
// These do, or might do, but we can still use hashCodeOf and get the same
|
|
// result each time.
|
|
samples = ["string", "", (x) => 42, c.foo, bar];
|
|
for (var v in samples) {
|
|
print(v);
|
|
Expect.equals(v.hashCode, v.hashCode);
|
|
Expect.equals(identityHashCode(v), identityHashCode(v));
|
|
}
|
|
}
|