blob: 9e8093f4d482d230dac875d4d06f074c57072cc1 [file] [log] [blame]
// Copyright (c) 2012, 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.
class C<T> {}
class D {}
typedef int Foo(bool b);
sameType(a, b) {
Expect.identical(a.runtimeType, b.runtimeType);
}
differentType(a, b) {
print("a: ${a.runtimeType}");
print("b: ${b.runtimeType}");
Expect.isFalse(a.runtimeType === b.runtimeType);
}
main() {
// Test type literals.
Expect.identical(int, int);
Expect.isFalse(int === num);
Expect.identical(Foo, Foo);
// Test that class literals return instances of Type.
Expect.isTrue((D).runtimeType is Type);
// Test that types from runtimeType and literals agree.
Expect.identical(int, 1.runtimeType);
Expect.identical(C, new C().runtimeType);
Expect.identical(D, new D().runtimeType);
// runtimeType on type is idempotent.
Expect.identical((D).runtimeType, (D).runtimeType.runtimeType);
// Test that operator calls on class literals go to Type.
Expect.throws(() => C = 1, (e) => e is NoSuchMethodError);
Expect.throws(() => C++, (e) => e is NoSuchMethodError);
Expect.throws(() => C + 1, (e) => e is NoSuchMethodError);
Expect.throws(() => C[2], (e) => e is NoSuchMethodError);
Expect.throws(() => C[2] = 'hest', (e) => e is NoSuchMethodError);
}