我可以在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(#[])
哪一个有窃听器?:
更新: 我报告了这个窃听器
发布于 2014-06-08 15:53:40
我认为这是Dart2JS中的一个错误,因为在这个位置应该允许一个操作符。
https://stackoverflow.com/questions/24107533
复制相似问题