Я использую компилятор Dart2JS версии 1.0.0_r30798 (STABLE).Компилятор Dart2JS не может скомпилировать код. Является ли эта ошибка, функция или ограничение?
Пример кода (только для введения проблемы):
Реальный код здесь (теперь с поправкой на поведение dart2js): https://github.com/mezoni/queries/blob/master/lib/src/queries/lookup.dart
Это часть Queryable collections for Dart language.
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 Дарта 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
компилятор не может скомпилировать этот код.
Итак, я не могу понять: «Это ошибка, функция или ограничение?».
Невозможно дать разумный ответ на этот вопрос, поскольку он содержит в основном случайные тирады (как обычно) и не предоставляет никакой информации о ожидаемом результате. «Я хочу, чтобы компилятор компилировал некоторые случайные символы, на самом деле не вопрос». –
Я сделал небольшое редактирование 'с Enumerable impl', но поскольку вы не предоставили никакой информации, кроме' Я хочу, чтобы это скомпилировать', я не могу знать, какой параметр типа следует использовать здесь, поэтому я взял один случайный случай. –
Этот код соответствует спецификации языка. Это не потребовало вашего редактирования. – mezoni