Dart2JS コンパイラ バージョン 1.0.0_r30798 (STABLE) を使用します。
サンプルコード (問題の導入のみ):
実際のコードはこちら (現在は dart2js の動作に合わせて修正されています): https://github.com/mezoni/queries/blob/master/lib/src/queries/lookup.dart
これは、 Dart 言語のクエリ可能なコレクションの一部です。
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
コンパイラはこのコードをコンパイルできません。
だから、「これはバグなのか、機能なのか、それとも制限なのか?」ということを理解できません。