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: [email protected]
Reporter: [email protected]
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
--