Xo is experimental. The source code is not public yet; it will be soon. Read the release notes
Menu · XO0604

Docs

XO0604: cyclic module imports

error · reported by the checker

Modules may not import each other in a cycle, so every module can be checked and built after its dependencies. Move the shared declarations into a third module that both import, or merge the two modules. See core 4.1.

Example

// a/a.xo
use example.com/app/b

pub fn fa() -> Int { b.fb() }

// b/b.xo
use example.com/app/a

pub fn fb() -> Int { 1 }
pub fn g() -> Int { a.fa() }

Fix

// a/a.xo
use example.com/app/b

pub fn fa() -> Int { b.fb() }

// b/b.xo (no longer imports a)
pub fn fb() -> Int { 1 }

Run xo explain XO0604 for this text in a terminal, or see section 10.6 of the specification.