Skip to content

dart:mirrors fails to find metadata on dependencies #33774

Closed
@sestegra

Description

@sestegra

Dart VM version: 2.0.0-dev.67.0 (Tue Jul 3 18:17:07 2018 +0200) on "macos_x64"

@Foo()
import 'dart:mirrors';

class Foo {
  const Foo();
}

@Foo()
class Bar {
  @Foo()
  String it;

  void doIt(@Foo() String param) {}
}

void main() {
  {
    print("### Annotation on dependencies");
    final mirror = currentMirrorSystem().isolate.rootLibrary;

    for (var d in mirror.libraryDependencies) {
      print(d.targetLibrary.simpleName);
      print(d.metadata);
    }
  }

  {
    print("### Annotation on class, field and parameters");
    final mirror = reflectClass(Bar);
    print(mirror.metadata);
    print((mirror.declarations[#it] as VariableMirror).metadata);
    for (var p in (mirror.declarations[#doIt] as MethodMirror).parameters) {
      print("${p.simpleName} -> ${p.metadata}");
    }
  }
}

Output with Dart 1.24.3

## Annotation on dependencies
Symbol("dart.mirrors")
[InstanceMirror on Instance of 'Foo']
Symbol("dart.core")
[]
### Annotation on class, field and parameters
[InstanceMirror on Instance of 'Foo']
[InstanceMirror on Instance of 'Foo']
Symbol("param") -> [InstanceMirror on Instance of 'Foo']

Output with Dart 2.0.0-dev.67.0

### Annotation on dependencies
Symbol("dart.mirrors")
[]
### Annotation on class, field and parameters
[InstanceMirror on Instance of 'Foo']
[InstanceMirror on Instance of 'Foo']
Symbol("param") -> []

Metadata

Metadata

Assignees

Labels

area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions