blob: 6b79c949f9f7b44e796e368456cd9d73ec64eaa9 [file] [log] [blame]
// Copyright (c) 2019, 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.
// dart2jsOptions=--experiment-new-rti --no-minify
import 'dart:_rti' as rti;
import "package:expect/expect.dart";
class Thingy {}
class Generic<AA> {
checkMethod(o) => o is AA;
}
@pragma('dart2js:noInline')
void check<T>(o) {
Expect.isTrue(o is T);
Expect.isFalse(o is! T);
}
main() {
check<Thingy>(Thingy());
check<Generic<int>>(Generic<int>());
check<Generic<dynamic>>(Generic<dynamic>());
check<Generic<Object>>(Generic<Object>());
check<Generic<Object>>(Generic<dynamic>());
check<Generic<dynamic>>(Generic<Object>());
Expect.isTrue(Generic<Thingy>().checkMethod(Thingy()));
Expect.isTrue(Generic<Object>().checkMethod(Object()));
Expect.isTrue(Generic<Object>().checkMethod(Thingy()));
Expect.isFalse(Generic<Thingy>().checkMethod(Object()));
Expect.isTrue(Generic<dynamic>().checkMethod(Object()));
Expect.isFalse(Generic<Thingy>().checkMethod(123));
Expect.isFalse(Generic<Thingy>().checkMethod(Object()));
}