On Thu, Sep 22, 2011 at 9:36 PM, Vitja Makarov <[email protected]> wrote: > 2011/9/23 Robert Bradshaw <[email protected]>: >> On Thu, Sep 22, 2011 at 5:08 AM, Vitja Makarov <[email protected]> >> wrote: >>> 2011/9/22 Robert Bradshaw <[email protected]>: >>>> On Wed, Sep 21, 2011 at 1:20 AM, <[email protected]> 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 [email protected] http://mail.python.org/mailman/listinfo/cython-devel
