OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 // Regression test for http://dartbug.com/23432 | 5 // Regression test for http://dartbug.com/23432. Test that the receiver of a |
| 6 // NoSuchMethodError is correct on an intercepted method. The bug (issue 23432) |
| 7 // is that the interceptor is captured instead of the receiver. |
6 | 8 |
7 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
8 | 10 |
9 class N { | 11 class N { |
10 noSuchMethod(i) { print('x'); return 42; } | 12 noSuchMethod(i) { print('x'); return 42; } |
11 } | 13 } |
12 | 14 |
13 get NEVER => new DateTime.now().millisecondsSinceEpoch < 42; | 15 @NoInline() @AssumeDynamic() |
| 16 get NEVER => false; |
14 | 17 |
15 main() { | 18 main() { |
16 var c = 12345; | 19 var c = 12345; |
17 if (NEVER) c = new N(); | 20 if (NEVER) c = new N(); |
18 var e; | 21 var e; |
19 try { | 22 try { |
20 c..toString()..add(88); | 23 c..toString()..add(88); |
21 } catch (ex) { | 24 } catch (ex) { |
22 e = ex; | 25 e = ex; |
23 } | 26 } |
24 var s = e.toString(); | 27 var s = e.toString(); |
25 Expect.isTrue(s.contains('$c'), 'Text "$s" should contain "$c"'); | 28 Expect.isTrue(s.contains('$c'), 'Text "$s" should contain "$c"'); |
26 } | 29 } |
OLD | NEW |