Почему происходит такое странное поведение компилятора в Android Studio 3.6? - PullRequest
0 голосов
/ 25 февраля 2020

Я обновил для Android Studio 3.6 сегодня (#AI-192.7142.36.36.6200805, построено 12 февраля 2020 г.). Я использую Kotlin (моя версия - 1.3.61 - обновлена). Моя Gradle версия 5.6.4 (последняя).

Для меня происходит очень странная вещь.

Первая проблема заключается в том, что теперь мне нужно нажать значок сохранения (^s) перед запуском. До тех пор, пока Android 3,5 не был автоматом c. Но это нормально, к этому нужно привыкнуть.

Вторая проблема хуже всего. У меня есть typealias , который был ArrayList , и мне нужно было перейти на простой Array , поэтому я изменил предыдущий код typealias Duo = ArrayList<Double> для typealias Duo = Array<Double>.

Это большой проект, и у меня в каком-то модуле есть небольшой фрагмент кода, который может быть показан как

var gData = ArrayList<Duo>()    
gData.add(arrayOf(5.0, 1.0))

после того, как я сохраню файлы (^s) и запустить.

Теперь появляется следующее сообщение об ошибке, указывающее на вторую строку, даже если редактор не показывает красную метку в коде:

Type inference failed. Expected type mismatch: inferred type is Array<Double>
 but Duo /* = ArrayList<Double> */ was expected

Я понятия не имею, что происходит. ... Я пытался restart и restart and invalidate caches, но безуспешно. Одни и те же сообщения. Я использую find in path (^+f) для проверки дубликатов объявлений duo. Нет.

Когда я попробовал приведенный ниже игрушечный код в Kotlin Playground , все в порядке. Нет ошибки.

typealias Duo = Array<Double>
fun main() {
    var gData = ArrayList<Duo>()    
    gData.add(arrayOf(5.0, 1.0))
    println(gData[0][0])
}

Я заблудился!

ОБНОВЛЕНИЕ

Это должно быть очень серьезной ошибкой в ​​Android Studio 3.6. Я решил проблему, но это не имеет никакого смысла. Я просто заменил все 13 вхождений duo на dux, и проблема окончена! (Ctrl + Shift + R - Replace in Path) После этого я переключился обратно на duo (13 случаев), и проблема не вернулась, но тайна в эфире.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...