Таки глобальный анализ. "Обо всех.. Собирать..."

Раздельная компиляция - это если я могу скомпилировать модуль А без наличия исходных текстов других модулей, а только их интерфейсов.

Впрочем, да, в обсуждаемом примере непосредственных проблем с этим не будет (но остаётся вопрос, как проверять совместимость модулей - т.е. если вдруг я что-то меняю в декларации типа, и т.п. Тонкостей может быть много).

А вот автовывод типов - уже всё, подавайте исходные тексты всех модулей. Нужна полная инофрмация обо всех использованиях типа.