OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 class A native "*A" { | |
6 } | |
7 | |
8 makeA() native; | |
9 | |
10 void setup() native """ | |
11 function A() {}; | |
12 A.prototype.foo = function() { return 42; } | |
13 makeA = function() { return new A; } | |
14 """; | |
15 | |
16 class B { | |
17 // We need to define a foo method so that Frog sees it. Because it's | |
18 // the only occurence of 'foo', Frog does not bother mangling the | |
19 // call sites. It thinks all calls will either go to this method, or | |
20 // throw a NoSuchMethodException. | |
21 foo() { return 42; } | |
22 } | |
23 | |
24 typedContext() { | |
25 var things = [ makeA(), new B() ]; | |
26 A a = things[0]; | |
27 Expect.throws(() => a.foo(), | |
28 (e) => e is NoSuchMethodException); | |
29 Expect.throws(() => a.foo, | |
30 (e) => e is NoSuchMethodException); | |
31 Expect.throws(() => a.foo = 4, | |
32 (e) => e is NoSuchMethodException); | |
33 } | |
34 | |
35 untypedContext() { | |
36 var things = [ makeA(), new B() ]; | |
37 var a = things[0]; | |
38 Expect.throws(() => a.foo(), | |
39 (e) => e is NoSuchMethodException); | |
40 Expect.throws(() => a.foo, | |
41 (e) => e is NoSuchMethodException); | |
42 Expect.throws(() => a.foo = 4, | |
43 (e) => e is NoSuchMethodException); | |
44 } | |
45 | |
46 main() { | |
47 setup(); | |
48 typedContext(); | |
49 untypedContext(); | |
50 } | |
OLD | NEW |