2011-12-29 9 views
6

ma.dPerché c'è un conflitto di moduli?

module ma; 

struct A{ } 

mb.d

module mb; 
import ma : A; 

struct B{ } 

main.d

import ma; 
import mb; 

void main(){ 

    A a; 
} 

Quando compilato:

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

In mb.dA è non un'importazione pubblico, quindi perché l'errore?

Stranamente, il seguente codice viene compilato:

main.d

import mb; 

void main(){ 

    A a; 
} 

Quindi, è questo un altro bug DMD, o ho frainteso come le importazioni e le importazioni pubblici funzionano?

risposta

5
+1

Incredibile !!! – Arlen

+1

@Arlen In questi giorni i bug di dmd vengono corretti rapidamente (come mostra il [changelog] (http://d-programming-language.org/changelog.html), ma ci sono ancora molti bug fastidiosi lasciato in esso. La situazione è molto migliorata rispetto a prima, ma se ti aspetti un compilatore privo di bug a questo punto, rischia di essere deluso. Sta arrivando però. –

+1

Walter [appena unito] (https://github.com/D-Programming-Language/dmd/pull/190) la correzione per questo problema. – eco

Problemi correlati