Improvements to OCaml code editing: the basics of a refactor engine
-
Цель стажировки – заложить основу для системы рефакторинга в Merlin, вдохновлённой IntelliJ и Gleam.
-
Первый эксперимент – команда «вынести выражение на верхний уровень» (extract to toplevel).
-
Как работает
- Выделяется наибольшее выражение внутри выбранного фрагмента.
- Оно переносится в новое
let
-связывание на уровень выше. - Если выражение не чистое, создаётся thunk
unit -> …
, чтобы сохранить семантику. - Свободные переменные превращаются в параметры новой функции.
-
Примеры
- Константа
3.14159
→let const_name1 = 3.14159
. print_endline
внутри блока → оборачивается вfun () -> …
.a + b + c + (c * x * y) + z
→ функция, принимающаяx, y, a, b, c
.
- Константа
-
Результат – работающий прототип, готовый к расширению другими командами.