Index: tests/compiler/dart2js_native/native_missing_method1_frog_test.dart |
diff --git a/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart b/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart |
index a6c0e077f2dbc0e7922ccbf7b847ab6b81ec7007..6223080f73f0bb515f8da61fd2613d7fb85c914d 100644 |
--- a/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart |
+++ b/tests/compiler/dart2js_native/native_missing_method1_frog_test.dart |
@@ -2,47 +2,50 @@ |
// 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 "dart:_js_helper"; |
-import "package:expect/expect.dart"; |
+import 'native_testing.dart'; |
@Native("A") |
class A {} |
-makeA() native ; |
+A makeA() native ; |
void setup() native """ |
function A() {}; |
-A.prototype.foo = function() { return 42; } |
+A.prototype.foo = function() { return 99; } |
makeA = function() { return new A; } |
+self.nativeConstructor(A); |
"""; |
class B { |
- // We need to define a foo method so that Frog sees it. Because it's |
- // the only occurence of 'foo', Frog does not bother mangling the |
- // call sites. It thinks all calls will either go to this method, or |
- // throw a NoSuchMethodError. |
+ // We need to define a foo method so that dart2js sees it. Because the the |
+ // only occurences of 'foo' is on B, a Dart class, no interceptor is used. It |
+ // thinks all calls will either go to this method, or throw a |
+ // NoSuchMethodError. It is possible that the native class will shadow a |
+ // method, but it will not shadow 'foo' because the name is either 'mangled' |
+ // with the arity, or minified. |
foo() { |
return 42; |
} |
} |
typedContext() { |
- var things = [makeA(), new B()]; |
- A a = things[0]; |
+ confuse(new B()).foo(); |
+ A a = makeA(); |
Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError); |
Expect.throws(() => a.foo, (e) => e is NoSuchMethodError); |
Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError); |
} |
untypedContext() { |
- var things = [makeA(), new B()]; |
- var a = things[0]; |
+ confuse(new B()).foo(); |
+ var a = confuse(makeA()); |
Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError); |
Expect.throws(() => a.foo, (e) => e is NoSuchMethodError); |
Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError); |
} |
main() { |
+ nativeTesting(); |
setup(); |
typedContext(); |
untypedContext(); |