[Issue 23835] New: Accessing variable outside nested function creates delegate even if it is static
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Apr 12 09:16:22 UTC 2023
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 at puremagic.com
Reporter: alphaglosined at 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
--
More information about the Digitalmars-d-bugs
mailing list