| 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 | 
|---|