Замечательная и халявная оптимизация для гарбадж коллектора
emptyList|Map|Set|Array() это синглтоны иммутабельный пустых коллекций
Создавая новую коллекцию создается новый инстанс, а так все пустые коллекции будут одним и тем же.
Конечно это возможно только для иммутабельных
Тоже самое в других языках, каждый [] в жс это новый объект для гцшки
emptyList|Map|Set|Array() это синглтоны иммутабельный пустых коллекций
Создавая новую коллекцию создается новый инстанс, а так все пустые коллекции будут одним и тем же.
Конечно это возможно только для иммутабельных
Тоже самое в других языках, каждый [] в жс это новый объект для гцшки
💯1
This media is not supported in your browser
VIEW IN TELEGRAM
добавил поддержку лсп go to definition для типов и методов, остались переменные и мб еще чето
This media is not supported in your browser
VIEW IN TELEGRAM
Вы даже не представляете наскооолько все усложняют многострочные экспрешоны
- Когда он однострочный
> получили номер строки и позицию
> идем на строку, ищем там такой экспрешон внутрь токена которого попадает курсор юзверя
- Когда он многострочный
> вииуувииу, теперь нужно добавлять многострочные стейтменты в мапу {номер строки: Set(expr)} столько раз, сколько строк он занимает
> окей это Range
- а еще теперь позиция начала может быть > позиции конца, ведь конец может быть на другой строке, поэтому чтобы найти попал ли курсор в токен просто проверить 2 неравенства
> если номер строки совпадает с
> место кончилось, если мы на последней строке то <= end
> посередине всегда true
- Когда он однострочный
> получили номер строки и позицию
> идем на строку, ищем там такой экспрешон внутрь токена которого попадает курсор юзверя
- Когда он многострочный
> вииуувииу, теперь нужно добавлять многострочные стейтменты в мапу {номер строки: Set(expr)} столько раз, сколько строк он занимает
> окей это Range
(tok.lineStart..tok.lineEnd).forEach {add...}- а еще теперь позиция начала может быть > позиции конца, ведь конец может быть на другой строке, поэтому чтобы найти попал ли курсор в токен просто проверить 2 неравенства
start <= cursor && cursor <= end не выйдет, нужно.. рассмотреть 3 случая> если номер строки совпадает с
tok.lineStart то пользователь нажал на первую строку экспрешона, и для проверки диапазона позиции на строке мы будем сравнивать курсор с позицией начала токенаcur.line == tok.startLine && cur.pos >= tok.start > место кончилось, если мы на последней строке то <= end
> посередине всегда true
This media is not supported in your browser
VIEW IN TELEGRAM
Добавил ховер буквально за 30 мин, он не особо отличается от остального, токо возвращаем строку типов
🥰2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
добавил деструктирующее присваивание
gavr_sas
официальный день вендекапца
Если я правильно понимаю невидия переходит на опенсурс дрова
https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/
"and the NVIDIA Open Kernel Modules would eventually supplant the closed-source driver"
https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/
"and the NVIDIA Open Kernel Modules would eventually supplant the closed-source driver"