April 12, 2023 [Issue 23835] New: Accessing variable outside nested function creates delegate even if it is static | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=23835 Issue ID: 23835 Summary: Accessing variable outside nested function creates delegate even if it is static Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: alphaglosined@gmail.com This will error with: Error: function `onlineapp.main.__lambda2` cannot access variable `builder` in frame of function `D main` Builder.perform is static, which means no context pointer is required for perform to be callable inside a nested function. ```d alias Function = int function(); void main() { Builder builder; Function func = () { return builder.perform(); }; assert(func() == 2); } struct Builder { static int perform() { return 2; } } ``` This should not be creating a delegate. Possibly a duplicate of: https://issues.dlang.org/show_bug.cgi?id=10877 -- |
Copyright © 1999-2021 by the D Language Foundation