【发布时间】:2015-08-14 06:44:33
【问题描述】:
以下代码在 VM 上执行良好,但失败并显示
"'_ListConstructorSentinel' 不是类型 'int' 的子类型"
当通过 Dart2JS 转换为 javascript 时。我正在使用“pub run test -p chrome”来运行代码。
import "dart:mirrors";
main() {
TypeMirror tm = new TypeToken<List<String>>().typeMirror;
(tm as ClassMirror).newInstance(const Symbol(""), []);
}
class TypeToken<T> {
TypeMirror get typeMirror => reflectType(T);
}
堆栈跟踪:
type '_ListConstructorSentinel' is not a subtype of type 'int'
error.dart.browser_test.dart.js 4385:15 dart.wrapException
error.dart.browser_test.dart.js 4604:13 dart.intTypeCheck
error.dart.browser_test.dart.js 36709:11 Isolate.dart.List.static.List_List.H.computeSignature.func
error.dart.browser_test.dart.js 13292:31 JsMethodMirror.dart.JsMethodMirror._invoke$2
error.dart.browser_test.dart.js 12724:21 JsClassMirror.dart.JsClassMirror._getInvokedInstance$3
error.dart.browser_test.dart.js 12054:30 JsTypeBoundClassMirror.<fn>
error.dart.browser_test.dart.js 12058:19 JsTypeBoundClassMirror.dart.JsTypeBoundClassMirror.newInstance$3
error.dart.browser_test.dart.js 85680:232 dart.main0
error.dart.browser_test.dart.js 15329:32 dart.Future.static.Future_Future$sync.H.computeSignature.func
error.dart.browser_test.dart.js 97668:16 IframeListener_start_closure.dart.IframeListener_start_closure.call$0
我是在做一些不应该被允许的事情,还是这是一个错误?如果是bug,有什么办法可以解决吗?
提前致谢!
【问题讨论】:
-
dart2js 不完全支持镜像。这可能不受支持或存在错误。
-
所以我尝试使用“Run as JavaScript”和“pub build”来运行它。而且我没有收到错误。你用的是哪个版本?
-
我现在不在笔记本电脑上,但如果我没记错的话,我正在 OSX (Macbook Pro) 上运行 1.10 稳定通道。我还使用“pub run test -p chrome”来运行其余部分,所以我不确定这是否也在做一些奇怪的事情。
-
看起来这是一个已知问题:github.com/dart-lang/sdk/issues/21927
标签: dart dart-mirrors dart2js dart-sdk