// Copyright (c) 2011, 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 "native_testing.dart"; // Test for correct simple is-checks on hidden native classes. abstract class I { I read(); write(covariant I x); } // Native implementation. @Native("A") class A implements I { // The native class accepts only other native instances. A read() native; write(A x) native; } makeA() native; void setup() { JS('', r""" (function(){ // This code is inside 'setup' and so not accessible from the global scope. function A(){} A.prototype.read = function() { return this._x; }; A.prototype.write = function(x) { this._x = x; }; self.makeA = function(){return new A()}; self.nativeConstructor(A); })()"""); applyTestExtensions(['A']); } class B {} main() { nativeTesting(); setup(); var a1 = makeA(); var ob = new Object(); Expect.isFalse(ob is I); Expect.isFalse(ob is A); Expect.isFalse(ob is B); Expect.isTrue(a1 is I); Expect.isTrue(a1 is A); Expect.isTrue(a1 is! B); }