www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - DMD 0.130: Properties don't access opIndexAssign overload

reply Burton Radons <burton-radons smocky.com> writes:
This code fails compilation with the error message "p.property()[4]" is not
an lvalue.  It is valid code.

        struct Array
        {
                int opIndex (int a) { return a; }
                int opIndexAssign (int a, int b) { return a; }
        }
        
        struct Property
        {
                Array property () { Array a; return a; }
        }
        
        void test ()
        {
                Property p;
        
                p.property [4] = 8;
        }
Sep 07 2005
next sibling parent zwang <nehzgnaw gmail.com> writes:
Burton Radons wrote:
 This code fails compilation with the error message "p.property()[4]" is not
 an lvalue.  It is valid code.
 
         struct Array
         {
                 int opIndex (int a) { return a; }
                 int opIndexAssign (int a, int b) { return a; }
         }
         
         struct Property
         {
                 Array property () { Array a; return a; }
         }
         
         void test ()
         {
                 Property p;
         
                 p.property [4] = 8;
         }
 
 

This is an old bug. The workaround I used is to write parentheses explicitly like p.property()[4] = 8;
Sep 07 2005
prev sibling parent =?ISO-8859-1?Q?Thomas_K=FChne?= <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Burton Radons schrieb:
 This code fails compilation with the error message "p.property()[4]" is not
 an lvalue.  It is valid code.
 
         struct Array
         {
                 int opIndex (int a) { return a; }
                 int opIndexAssign (int a, int b) { return a; }
         }
         
         struct Property
         {
                 Array property () { Array a; return a; }
         }
         
         void test ()
         {
                 Property p;
         
                 p.property [4] = 8;
         }

Added to DStress as http://dstress.kuehne.cn/run/o/opIndexAssign_02_A.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_B.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_C.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_D.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_E.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_F.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_G.d http://dstress.kuehne.cn/run/o/opIndexAssign_02_H.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFDIneC3w+/yD4P9tIRAqeSAJwLjDII5nhWmJh7dtp0h9LyNq8q2gCff4My MdwGRULXFqS/o1zVaEu9hk8= =I8JO -----END PGP SIGNATURE-----
Sep 09 2005