Thread overview
[Issue 8064] New: return reference semantics not obeyed on delegates?
May 08, 2012
Gašper Ažman
May 08, 2012
Gašper Ažman
May 08, 2012
Kenji Hara
May 11, 2012
Walter Bright
May 08, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8064

           Summary: return reference semantics not obeyed on delegates?
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: gasper.azman@gmail.com


--- Comment #0 from Gašper Ažman <gasper.azman@gmail.com> 2012-05-08 03:12:02 PDT ---
I feel this is best explained with a testcase:
This is the error DMD gives:
test.d(21): Error: arryacc(3LU) is not an lvalue
code: #####

class A {
   private size_t size = 5;
   auto newArrayAccessor(T)() {
      T[] a = new T[size];
      ref T accessor(size_t i) {
          return a[i];
      }
      return &accessor;
   }
}

void main() {
   uint[5] arry;
   ref uint acc(size_t i) {
       return arry[i];
   }
   acc(3) = 5; // works

   auto a = new A;
   auto arryacc = a.newArrayAccessor!(uint)();
   arryacc(3) = 5; // doesn't work. What gives?
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 08, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8064



--- Comment #1 from Gašper Ažman <gasper.azman@gmail.com> 2012-05-08 03:27:13 PDT ---
Simplified testcase (by q66):
void main() {
   uint[5] arry;
   ref uint acc(size_t i) {
       return arry[i];
   }
   auto arryacc = &acc;
   arryacc(3) = 5; // same error
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 08, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8064


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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull, rejects-valid


--- Comment #2 from Kenji Hara <k.hara.pg@gmail.com> 2012-05-08 04:57:01 PDT ---
https://github.com/D-Programming-Language/dmd/pull/933

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 11, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8064



--- Comment #3 from github-bugzilla@puremagic.com 2012-05-10 20:00:23 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/5a9b927ae2501aac795c03d1cd6be79188e1e197 fix Issue 8064 - return reference semantics not obeyed on delegates?

https://github.com/D-Programming-Language/dmd/commit/813a0216b2a205fb06bd8d02d7c667317c7b5ce4 Merge pull request #933 from 9rnsr/fix8064

Issue 8064 - return reference semantics not obeyed on delegates?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 11, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8064


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla@digitalmars.com
         Resolution|                            |FIXED


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