Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: tests/compiler/dart2js_native/native_missing_method1_frog_test.dart

Issue 2383273002: Revert "Add native_testing library to mock @Native classes" (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'native_testing.dart'; 5 import "dart:_js_helper";
6 import "package:expect/expect.dart";
6 7
7 @Native("A") 8 @Native("A")
8 class A {} 9 class A {}
9 10
10 A makeA() native ; 11 makeA() native ;
11 12
12 void setup() native """ 13 void setup() native """
13 function A() {}; 14 function A() {};
14 A.prototype.foo = function() { return 99; } 15 A.prototype.foo = function() { return 42; }
15 makeA = function() { return new A; } 16 makeA = function() { return new A; }
16 self.nativeConstructor(A);
17 """; 17 """;
18 18
19 class B { 19 class B {
20 // We need to define a foo method so that dart2js sees it. Because the the 20 // We need to define a foo method so that Frog sees it. Because it's
21 // only occurences of 'foo' is on B, a Dart class, no interceptor is used. It 21 // the only occurence of 'foo', Frog does not bother mangling the
22 // thinks all calls will either go to this method, or throw a 22 // call sites. It thinks all calls will either go to this method, or
23 // NoSuchMethodError. It is possible that the native class will shadow a 23 // throw a NoSuchMethodError.
24 // method, but it will not shadow 'foo' because the name is either 'mangled'
25 // with the arity, or minified.
26 foo() { 24 foo() {
27 return 42; 25 return 42;
28 } 26 }
29 } 27 }
30 28
31 typedContext() { 29 typedContext() {
32 confuse(new B()).foo(); 30 var things = [makeA(), new B()];
33 A a = makeA(); 31 A a = things[0];
34 Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError); 32 Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError);
35 Expect.throws(() => a.foo, (e) => e is NoSuchMethodError); 33 Expect.throws(() => a.foo, (e) => e is NoSuchMethodError);
36 Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError); 34 Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError);
37 } 35 }
38 36
39 untypedContext() { 37 untypedContext() {
40 confuse(new B()).foo(); 38 var things = [makeA(), new B()];
41 var a = confuse(makeA()); 39 var a = things[0];
42 Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError); 40 Expect.throws(() => a.foo(), (e) => e is NoSuchMethodError);
43 Expect.throws(() => a.foo, (e) => e is NoSuchMethodError); 41 Expect.throws(() => a.foo, (e) => e is NoSuchMethodError);
44 Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError); 42 Expect.throws(() => a.foo = 4, (e) => e is NoSuchMethodError);
45 } 43 }
46 44
47 main() { 45 main() {
48 nativeTesting();
49 setup(); 46 setup();
50 typedContext(); 47 typedContext();
51 untypedContext(); 48 untypedContext();
52 } 49 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698