2011-12-29 14 views
6

ma.dDlaczego występuje konflikt modułów?

module ma; 

struct A{ } 

mb.d

module mb; 
import ma : A; 

struct B{ } 

main.d

import ma; 
import mb; 

void main(){ 

    A a; 
} 

Po opracowaniu:

main.d(6): Error: ma.A at ma.d(3) conflicts with mb.A at mb.d(2)

W mb.dA jest nie publiczny import, więc dlaczego błąd?

Co dziwne, następujący kod kompiluje:

main.d

import mb; 

void main(){ 

    A a; 
} 

Tak, jest to kolejny błąd DMD, albo ja źle jak import i import publiczne działają?

Odpowiedz

5
+1

Niewiarygodne !!! – Arlen

+1

@Allen Błędy w dmd są obecnie naprawiane w szybkim tempie (jak pokazuje [dziennik zmian] (http://d-programming-language.org/changelog.html), ale wciąż jest mnóstwo irytujących błędów pozostawione w nim. Sytuacja jest o wiele lepsza niż kiedyś, ale jeśli spodziewasz się w tym momencie kompilatora wolnego od błędów, najprawdopodobniej zostaniesz zignorowany. Idzie tam jednak. –

+1

Walter [właśnie scalony] (https://github.com/D-Programming-Language/dmd/pull/190) poprawka dla tego problemu. – eco

Powiązane problemy