| Index: dart/tests/compiler/dart2js_foreign/native_class_inheritance2_test.dart
|
| diff --git a/dart/tests/compiler/dart2js_foreign/native_class_inheritance2_test.dart b/dart/tests/compiler/dart2js_foreign/native_class_inheritance2_test.dart
|
| deleted file mode 100644
|
| index da23d5f6b95e60ab480923556840e04850b1f856..0000000000000000000000000000000000000000
|
| --- a/dart/tests/compiler/dart2js_foreign/native_class_inheritance2_test.dart
|
| +++ /dev/null
|
| @@ -1,86 +0,0 @@
|
| -// 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.
|
| -
|
| -// Test to see if resolving a hidden native class's method interferes with
|
| -// subsequent resolving the subclass's method. This might happen if the
|
| -// superclass caches the method in the prototype, so shadowing the dispatcher
|
| -// stored on Object.prototype.
|
| -
|
| -import "package:expect/expect.dart";
|
| -import 'native_metadata.dart';
|
| -
|
| -@Native("*A")
|
| -class A {
|
| - @native foo([a=100]);
|
| -}
|
| -
|
| -@Native("*B")
|
| -class B extends A {
|
| -}
|
| -
|
| -@Native("*C")
|
| -class C extends B {
|
| - @native foo([z=300]);
|
| -}
|
| -
|
| -@Native("*D")
|
| -class D extends C {
|
| -}
|
| -
|
| -@native makeA();
|
| -@native makeB();
|
| -@native makeC();
|
| -@native makeD();
|
| -
|
| -@Native("""
|
| -// This code is all inside 'setup' and so not accesible from the global scope.
|
| -function inherits(child, parent) {
|
| - if (child.prototype.__proto__) {
|
| - child.prototype.__proto__ = parent.prototype;
|
| - } else {
|
| - function tmp() {};
|
| - tmp.prototype = parent.prototype;
|
| - child.prototype = new tmp();
|
| - child.prototype.constructor = child;
|
| - }
|
| -}
|
| -
|
| -function A(){}
|
| -function B(){}
|
| -inherits(B, A);
|
| -function C(){}
|
| -inherits(C, B);
|
| -function D(){}
|
| -inherits(D, C);
|
| -
|
| -A.prototype.foo = function(a){return 'A.foo(' + a + ')';}
|
| -C.prototype.foo = function(z){return 'C.foo(' + z + ')';}
|
| -
|
| -makeA = function(){return new A};
|
| -makeB = function(){return new B};
|
| -makeC = function(){return new C};
|
| -makeD = function(){return new D};
|
| -""")
|
| -void setup();
|
| -
|
| -
|
| -main() {
|
| - setup();
|
| -
|
| - var a = makeA();
|
| - var b = makeB();
|
| - var c = makeC();
|
| - var d = makeD();
|
| -
|
| - Expect.equals('A.foo(100)', b.foo());
|
| - Expect.equals('C.foo(300)', d.foo());
|
| - // If the above line fails with C.foo(100) then the dispatch to fill in the
|
| - // default got the wrong one, followed by a second dispatch that resolved to
|
| - // the correct native method.
|
| -
|
| - Expect.equals('A.foo(1)', a.foo(1));
|
| - Expect.equals('A.foo(2)', b.foo(2));
|
| - Expect.equals('C.foo(3)', c.foo(3));
|
| - Expect.equals('C.foo(4)', d.foo(4));
|
| -}
|
|
|