| 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();
|
|
|