www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 21990] New: scope inference fails with foreach on AliasSeq


          Issue ID: 21990
           Summary: scope inference fails with foreach on AliasSeq
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dkorpel live.nl

Continuation of issue 21209

Scope inference fails on foreach loops of tuples / alias sequences:

void foo(A...)(A args) 
    static int x; x++; // force impure for issue 20150
    foreach(a; args) 
        // gets lowered to unrolled loop with `string a = _param_0;`

void main() 
    scope string x = "hey";

Error: scope variable `x` assigned to non-scope parameter `_param_0` calling

It gets lowered to a special 'unrolled' loop which puts the loop variable in a
temporary (`string a = _param_0;`), which makes _param_0 non-scope.

Jun 03 2021