April 04, 2018 [Issue 18725] New: compiler does not check all levels of methods for privateness, if used in invariant | ||||
|---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=18725 Issue ID: 18725 Summary: compiler does not check all levels of methods for privateness, if used in invariant Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: sascha.orlov@gmail.com Given this ´´´ void main() { auto s = S(); assert(&s); } struct S { invariant { assert(fun); } size_t[] member; private bool fun() const { return fun1(); } /*private*/ bool fun1() const { return true; } } ´´´ The code compiles with or without privateness of fun1. However, if the privateness for fun1 is missing the run yields a segmentation fault, while when it is present, the result is as expected. If privateness for fun is missing, the compiler complains about using it in the invariant, as expected. -- | ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply