On Thu, Sep 22, 2011 at 9:36 PM, Vitja Makarov <vitja.maka...@gmail.com> wrote: > 2011/9/23 Robert Bradshaw <rober...@math.washington.edu>: >> On Thu, Sep 22, 2011 at 5:08 AM, Vitja Makarov <vitja.maka...@gmail.com> >> wrote: >>> 2011/9/22 Robert Bradshaw <rober...@math.washington.edu>: >>>> On Wed, Sep 21, 2011 at 1:20 AM, <robert....@exasol.com> wrote: >>>>> Hi Robert, >>>>> >>>>> Robert Bradshaw wrote: >>>>>> >>>>>> The warning seem correct to me, or is foo actually modifying the >>>>>> values of cya and cyb? (I suppose this could be possible by taking the >>>>>> address of the "passed by reference" arguments, but would seem like a >>>>>> *very* poor API design.) >>>>> >>>>> thanks for your fast answer! What made me came up with this issue is >>>>> that GCC/C++ will not complain in similar situations in C++ code (and >>>>> assumes foo() to initialize/change the value of cya/cyb). Thus, there >>>>> is an (arguable) difference in C++ compiler/Cython warnings. >>>> >>>> Yes, in C++ the called function can modify values passed by reference, >>>> so we need to add this exception to Cython. >>>> >>> >>> That could be hard because we can not always resolve function to check >>> its args at create-control-flow stage. >> >> Doesn't this always happen after declaration analysis? >> > > Sure. But before analyse expressions, so you have to manually lookup > entries for names and attributes.
Ah, yes. > I see two cases here: global function call and method call. Both are > SimpleCallNodes. Yep, and the function could be an arbitrary expression... Ugly. - Robert _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel