Oh, btw, I have found another area where partial-casing is restrictive: bar.nim: import typetraits proc bar*[X]() = echo "bar:" & type(X).name
foo.nim: import bar as nil when isMainModule: bar.bar[int32]() Leads to: foo.nim(4, 10) Error: could not resolve: bar[int32] If I change the proc name to `Bar*` but still call it as `bar.bar[int32]()`, then I get this: foo.nim(4, 6) Error: expression 'bar' has no type (or is ambiguous) But it works fine if I change the proc-name to `Bar*` _and_ I call it as `bar.Bar[int32]()`. You could call this a language bug (or a feature), but I say it's evidence that this whole partial-casing idea was not considered clearly.