OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014, 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 // VMOptions=--compile-all --error_on_bad_type --error_on_bad_override --checked | |
5 | |
6 library vm_references_test; | |
7 | |
8 import 'dart:mirrors'; | |
9 import 'package:observatory/service_io.dart'; | |
10 import 'package:unittest/unittest.dart'; | |
11 import 'test_helper.dart'; | |
12 | |
13 class Foo { } | |
14 | |
15 Foo foo; | |
16 var /*MirrorReference*/ ref; | |
17 | |
18 void script() { | |
19 foo = new Foo(); | |
20 ClassMirror fooClassMirror = reflectClass(Foo); | |
21 InstanceMirror fooClassMirrorMirror = reflect(fooClassMirror); | |
22 LibraryMirror libmirrors = fooClassMirrorMirror.type.owner; | |
23 ref = reflect(fooClassMirror).getField(MirrorSystem.getSymbol('_reflectee', li
bmirrors)).reflectee; | |
24 } | |
25 | |
26 var tests = [ | |
27 | |
28 (Isolate isolate) => | |
29 isolate.rootLib.load().then((Library lib) { | |
30 Field fooField = lib.variables.singleWhere((v) => v.name == 'foo'); | |
31 Instance foo = fooField.value; | |
32 Field refField = lib.variables.singleWhere((v) => v.name == 'ref'); | |
33 Instance ref = refField.value; | |
34 | |
35 expect(foo.isMirrorReference, isFalse); | |
36 expect(ref.isMirrorReference, isTrue); | |
37 expect(ref.referent, isNull); | |
38 return ref.load().then((Instance loadedRef) { | |
39 expect(loadedRef.referent, isNotNull); | |
40 expect(loadedRef.referent.name, equals('Foo')); | |
41 expect(loadedRef.referent, equals(foo.clazz)); | |
42 }); | |
43 }), | |
44 | |
45 ]; | |
46 | |
47 main(args) => runIsolateTests(args, tests, testeeBefore: script); | |
OLD | NEW |