[Issue 18282] New: Assignment of local variable to `scope` variable not recognized by compiler

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jan 23 01:50:21 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18282

          Issue ID: 18282
           Summary: Assignment of local variable to `scope` variable not
                    recognized by compiler
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: slavo5150 at yahoo.com

void main() @safe
{
    string foo = "foo";
    scope string*[] ls;
    ls ~= &foo;
}

Compile with `-dip1000`

onlineapp.d(5): Error: reference to local variable foo assigned to non-scope ls

https://run.dlang.io/is/ecYAKZ

The compiler doesn't seem to recognize that ls is attributed with `scope`. 
However due to the way D's attributes are parsed, I'm not sure if it should
actually be `scope string*[]`, `scope(string*)[]`, or `scope(string*[])`. 
Anyway, if you use `scope()` (i.e. with parens) the compiler confuses it with
`scope(exit)` and friends.


void main() @safe
{
    string foo = "foo";
    scope(string*[]) ls;
    ls ~= &foo;
}

Compile with `-dip1000`

onlineapp.d(4): Error: valid scope identifiers are exit, failure, or success,
not string

https://run.dlang.io/is/ecYAKZ

--


More information about the Digitalmars-d-bugs mailing list