我使用 Dart2JS 编译器版本 1.0.0_r30798 (STABLE)。
示例代码(仅用于引入问题):
此处的真实代码(现已针对 dart2js 行为进行了更正):https ://github.com/mezoni/queries/blob/master/lib/src/queries/lookup.dart
这是 Dart 语言的 Queryable 集合的一部分。
class ILookup<TKey, TElement> implements IEnumerable<IGrouping<TKey, TElement>> {
}
class Lookup<TKey, TElement> extends Object with Enumerable implements ILookup<TKey, TElement> {
}
class IEnumerable<T> implements HasIterator<T> {
}
class HasIterator<T> {
}
class IGrouping<TKey, TElement> implements IEnumerable<TKey> {
}
class Enumerable<T> implements IEnumerable<T> {
}
void main() {
var obj = new Lookup();
print(obj);
}
此代码生成 Google Dart dart2js 编译器的以下错误:
Internal Error: Inheritance of the same class with different type arguments is not
supported: Both HasIterator<dynamic> and HasIterator<IGrouping<TKey, TElement>> are
supertypes of Lookup<TKey, TElement>.
class Lookup<TKey, TElement> extends Object with Enumerable implements ILookup<TKey,
TElement> {
^^^^^
Error: Compilation failed.
也就是说,dart2js
编译器无法编译这段代码。
所以,我无法理解:“这是错误、功能还是限制?”。