[Issue 15411] New: Function literal accessing variable in declaration scope produces bad error message with inline call

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Dec 5 18:01:49 PST 2015


https://issues.dlang.org/show_bug.cgi?id=15411

          Issue ID: 15411
           Summary: Function literal accessing variable in declaration
                    scope produces bad error message with inline call
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Keywords: diagnostic
          Severity: enhancement
          Priority: P4
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: dhasenan at gmail.com

---
// not_nested_func.d
void bar() {
  auto i = 0;
  auto j = (function() { return i; })();
}
---
$ dmd not_nested_func.d
not_nested_func.d(3): Error: function not_nested_func.bar is a nested function
and cannot be accessed from not_nested_func.foo()

Compare:
---
// not_called.d
void bar() {
  auto i = 0;
  auto fn = function() { return i; };
}
---
$ dmd not_nested_func.d
not_nested_func.d(3): Error: cannot match function literal to delegate type
'int delegate() pure nothrow @nogc @safe

Here, the error message is confusing, but I at least get a hint that using
'delegate' in place of 'function' might help.

Tested on 2.069.2 and 2.069.0.

--


More information about the Digitalmars-d-bugs mailing list