.\main.d .\foo.d main.d: module main; import foo; void main() { test(); } foo.d: module bar; void test() { } This is OK: $ dmd -c main.d foo.d > main.d(2): Error: module bar from file foo.d must be imported as module 'bar' This should also fail to compile but it doesn't $ dmd -c main.d >
According to Walter, this is by design. See the duplicate bug. *** This issue has been marked as a duplicate of issue 16071 ***