Dart2js括号元数据注释中的符号

时间:2014-06-08 15:12:24

标签: dart dart2js

我可以在Dart VM上运行此代码:

@MirrorsUsed(metaTargets: Tag)
import 'dart:mirrors';

class Tag {
  final Symbol name;
  const Tag(this.name);
}
@proxy
@Tag(#[])
class Tagged {
  noSuchMethod(Invocation invocation) {
    InstanceMirror instanceMirror = reflect(this);
    ClassMirror classMirror = instanceMirror.type;
    classMirror.metadata.forEach((em) {
      if (em.reflectee is Tag && em.reflectee.name == invocation.memberName)
         print(invocation.positionalArguments);
    });
  }
}
void main() {
  var tagged = new Tagged();
  tagged[42];
  tagged.foo();
  tagged["Dart"];
}

输出:

  

[42]
  [达特]

但是当我尝试使用dart2js编译它时,它会失败并出现此错误:

  

[来自Dart2JS的错误]:
  BIN \ dart2jswithbracketanotation.dart:9:7:
  预期的标识符,但得到了' ['   @Tag(#[])

哪一个有错误?:

  1. (Dart VM),因为我可以运行它。
  2. (dart2js)因为它没有编译成js。
  3. 更新: I reported this bug

1 个答案:

答案 0 :(得分:1)

我认为这是Dart2JS中的一个错误,因为应允许操作员进入此位置。