Index: frog/tests/frog_native/native_class_inheritance2_frog_test.dart |
=================================================================== |
--- frog/tests/frog_native/native_class_inheritance2_frog_test.dart (revision 8644) |
+++ frog/tests/frog_native/native_class_inheritance2_frog_test.dart (working copy) |
@@ -1,78 +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. |
- |
-class A native "*A" { |
- foo([a=100]) native; |
-} |
- |
-class B extends A native "*B" { |
-} |
- |
-class C extends B native "*C" { |
- foo([z=300]) native; |
-} |
- |
-class D extends C native "*D" { |
-} |
- |
-makeA() native; |
-makeB() native; |
-makeC() native; |
-makeD() native; |
- |
-void setup() 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}; |
-"""; |
- |
- |
-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)); |
-} |