为什么模块会发生冲突?

Arl*_*len 6 d compiler-errors

module ma;

struct A{ }
Run Code Online (Sandbox Code Playgroud)

mb.d

module mb;
import ma : A;

struct B{ }
Run Code Online (Sandbox Code Playgroud)

main.d

import ma;
import mb;

void main(){

  A a;
}
Run Code Online (Sandbox Code Playgroud)

编译时:

main.d(6):错误:ma.A at ma.d(3)与mb.A在mb.d(2)冲突

mb.d A不是一个公共的进口,那么为什么这个错误吗?

奇怪的是,以下代码编译:

main.d

import mb;

void main(){

  A a;
}
Run Code Online (Sandbox Code Playgroud)

那么,这是另一个DMD错误,还是我误解了进口和公共进口的运作方式?