----- module test; // opaque type struct S; void main() { S** s; void* ptr; *s = cast(S*)ptr; // pointer assignment, not value assignment } ----- $ dmd test.d > test.d(4): Error: struct test.S unknown size > test.d(4): Error: struct test.S no size yet for forward reference > test.d(4): Error: struct test.S unknown size > test.d(4): Error: struct test.S no size yet for forward reference The size of the structure does not need to be known since what is being assigned is a memory address. It is not a value assign of the struct.
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/e4ba50055c42f4b0dc67369dfcffd8a1526c7821 add test cases for issues 10497 and 10793 https://github.com/D-Programming-Language/dmd/commit/7a3dd014165c3710ffc4ed9f375d962be7516152 Merge pull request #2466 from hpohl/10793 add test cases for issues 10497 and 10793