почему dart вместо этого не генерировал исключение опечатки во время компиляции. времени выполнения?

Рассмотрим этот пример кода:

void main() {

  List<int> array = <int>[];

  for (int i = 0; i < 5; i++) {
    array.add(i);
  }

  Iterable<int> newList = array.where( (value) =>  value % 2 == 0 );

  printFunction(array);
  printFunction(newList);
}

void printFunction(List<int> list) {
 print(list); 
}

Этот код успешно компилируется, но, конечно, вызывает исключение во время выполнения, потому что он не может выполнить код для printFunction(newList), если не вызывает toList() перед передачей newList

Почему в этом случае компилятор не сгенерировал исключение ???


person hamid_c    schedule 14.03.2020    source источник


Ответы (1)


Этот вид проверки можно включить с помощью настройки анализатора дротиков (analysis_options.yaml), как показано ниже:

analyzer:
  strong-mode:
    implicit-casts: false
person Alex Radzishevsky    schedule 14.03.2020