June 16, 2022
https://issues.dlang.org/show_bug.cgi?id=23191

          Issue ID: 23191
           Summary: [dip1000] scope parameter can be returned in @system
                    code
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: dkorpel@live.nl

`scope` checks are only enabled in @safe code because they might have false positives, and we don't want to break valid @system code, where we trust the programmer to get it right.

However, blatantly returning a `scope` parameter could still be made an error. This is useful since @system is still the default and `scope` may be hidden behind `in`.

```
int* f(scope int* x)
{
    return x;
}

const(int)* f(in int* x) // with -preview=in, it means `const scope`
{
    return x; // may look innocuous
}
```

This came up in the news group: https://forum.dlang.org/post/t7rfdm$1jjc$1@digitalmars.com https://forum.dlang.org/post/t88iuv$mbb$1@digitalmars.com

--