www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 10451] New: Array of pointers to opaque struct gives forward reference errors.

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451

           Summary: Array of pointers to opaque struct gives forward
                    reference errors.
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: aldacron gmail.com



struct foo;

struct bar {
    foo*[] foos;
}

The error only occurs when the array is declared as a struct field. When
declared as a class member or in a function, there is no error.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 23 2013
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451




I've got some new info on this. The error also occurs outside of structs if the
array is initialized:

=========
struct foo;

void main() {
    foo*[] foos = [];
}
=========

Here's the full error spew that I get in both cases:

==================
forref.d(3): Error: struct forrref.foo is forward referenced when looking for
't
oHash'
forref.d(3): Error: struct forrref.foo is forward referenced when looking for
'o
pCmp'
forref.d(3): Error: struct forrref.foo is forward referenced when looking for
't
oString'
forref.d(3): Error: struct forrref.foo unknown size
forref.d(3): Error: struct forrref.foo no size yet for forward reference
forref.d(3): Error: struct forrref.foo unknown size
forref.d(3): Error: struct forrref.foo no size yet for forward reference
===================

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 11 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Manu <turkeyman gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |turkeyman gmail.com



http://d.puremagic.com/issues/show_bug.cgi?id=10451

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 31 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Ali Cehreli <acehreli yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |acehreli yahoo.com



Manu meant this: :)

  http://d.puremagic.com/issues/show_bug.cgi?id=10766

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 31 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451





 Manu meant this: :)
 
   http://d.puremagic.com/issues/show_bug.cgi?id=10766
Haha, thx ;) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 31 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Iain Buclaw <ibuclaw ubuntu.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ibuclaw ubuntu.com



This happens because, eg: array literals are initialised by the GC by calling
_d_arrayliteralTX (typeinfo, dim);

This requires that the struct has a complete runtime type information about a
type.  Something that does not get generated for opaque types, which makes this
bug not the easiest to fix - and the same is with other array operations which
also require typeinfo to be available.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 18 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451




But the compiler doesn't need to know anything about the type to allocate an
array of pointers. Surely the compiler can use/share the typeinfo of void* in
this case?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 18 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451





 But the compiler doesn't need to know anything about the type to allocate an
 array of pointers. Surely the compiler can use/share the typeinfo of void* in
 this case?
Sure we could use void* if is your expectation for typeid(foo*).toString to return "void*" =) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451




Surely it can't be hard to synthesize a named pointer type... unless it's
dereferenced, it shouldn't need an actual definition in the typeinfo. So it
would just be a stub or dummy typeinfo that's empty?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 18 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


grogan.colin gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |grogan.colin gmail.com



A possible workaround to this is to create the struct like:

struct foo {}

Though, in this case it isn't an opaque struct and is merely a struct with no
members.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 18 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451




---
*** Issue 10766 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 28 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Kenji Hara <k.hara.pg gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull



---
https://github.com/D-Programming-Language/dmd/pull/2594

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 28 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451




Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/e7d3e97cdaf4653a39f7f9c68a4868ede2c4bb6b
fix Issue 10451 - Array of pointers to opaque struct gives forward reference
errors.

https://github.com/D-Programming-Language/dmd/commit/f2cc07963d2ade375c056b48580d7c638d11f60c


Issue 10451 - Array of pointers to opaque struct gives forward reference
errors.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 29 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |andrej.mitrovich gmail.com
         Resolution|                            |FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 29 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10451


Kenji Hara <k.hara.pg gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kodlists-dlang yahoo.com



---
*** Issue 9795 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 01 2013