www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2647] New: typedef's and struct constructors

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

           Summary: typedef's and struct constructors
           Product: D
           Version: 2.023
          Platform: PC
        OS/Version: All
            Status: NEW
          Keywords: spec
          Severity: minor
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: s.d.hammett googlemail.com


when using typedefs of structs
their constructors return the original type instead of the new type

struct Ca {
        this(int a) {
                _answer = a / 2;
        }

        int _answer;
}

void testClasses() {
        typedef Ca Da;

        Ca a = Ca(84);
        Da c = Da(84);

}

tests0.d(38):

Error: cannot implicitly convert expression (((Ca __ctmp276 = __ctmp276 = 0;
) , __ctmp276).this(84)) of type Ca to Da

A cast is required for the code to work.


-- 
Feb 06 2009
next sibling parent "Denis Koroskin" <2korden gmail.com> writes:
On Fri, 06 Feb 2009 11:25:37 +0300, <d-bugmail puremagic.com> wrote:

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

            Summary: typedef's and struct constructors
            Product: D
            Version: 2.023
           Platform: PC
         OS/Version: All
             Status: NEW
           Keywords: spec
           Severity: minor
           Priority: P2
          Component: DMD
         AssignedTo: bugzilla digitalmars.com
         ReportedBy: s.d.hammett googlemail.com


 when using typedefs of structs
 their constructors return the original type instead of the new type

 struct Ca {
         this(int a) {
                 _answer = a / 2;
         }

         int _answer;
 }

 void testClasses() {
         typedef Ca Da;

         Ca a = Ca(84);
         Da c = Da(84);

 }

 tests0.d(38):

 Error: cannot implicitly convert expression (((Ca __ctmp276 = __ctmp276  
 = 0;
 ) , __ctmp276).this(84)) of type Ca to Da

 A cast is required for the code to work.

Ouch!
Feb 06 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2647


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug yahoo.com.au
         Resolution|                            |WONTFIX


--- Comment #1 from Don <clugdbug yahoo.com.au> 2009-11-19 07:56:32 PST ---
Dropping typedef, so won't fix.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 19 2009