I am using package level object to break module dependencies within package, here is working example
$ cd ~
$ mkdir -p pkgdir/mypkg
$ touch pkgdir/mypkg.nimble
# pkgdir/mypkg.nim
type
mypkg.Inner = object
Outter* = object
inner: ref Inner
# pkgdir/mypkg/inner.nim
type
Inner* {.package.} = object
# test.nim
import mypkg
import mypkg / inner
discard new Outter
Run with command below without problem
$ nim r --path:pkgdir test.nim
If I move pkgdir/mypkg.nim to pkgdir/mypkg/outter.nim, and chage test.nim to below code
# test.nim
import mypkg / [inner, outter]
discard new Outter
nim report Inner is incomplete
$ nim r --path:pkgdir test.nim
Hint: used config file 'Nim/config/nim.cfg' [Conf]
Hint: used config file 'Nim/config/config.nims' [Conf]
......
Nim/lib/system.nim(905, 11) Error: request for RTTI generation for incomplete object: Inner
How do I declare Inner properly in outter.nim?