www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17931] New: [scope] `return` == `return scope` breaks for


          Issue ID: 17931
           Summary: [scope] `return` == `return scope` breaks for struct
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: safe
          Severity: normal
          Priority: P3
         Component: dmd
          Assignee: bugzilla digitalmars.com
          Reporter: code dawg.eu

cat > bug.d << CODE
struct S
   safe S foo() return /* scope */
    return this;

  int* p; // so it has an indirection

void test(scope S s)  safe

dmd -c -dip1000 bug.d
bug.d(13): Error: scope variable s assigned to non-scope parameter this calling

Introduced with https://github.com/dlang/dmd/pull/5909.

The above code can be compiled by using `return scope` instead, but in that
case the `return scope` is still reduced to `return` in the mangling.

Maybe it's a problem with struct methods being implicity ref for the this
Hopefully we can consistently use `return` as abbreviation for `return scope`,
if it depends on the context, then it might not be worth the confusion.

Oct 23 2017