I emailed them a case to replicate and i saw your code in the bug base
(which is the same as mine basically), other than that no info :(

On 10/30/07, Derek Vadneau <[EMAIL PROTECTED]> wrote:
>
>   Hi Johannes,
>
> Did Adobe contact you for more info about the Proxy bug?:
> https://bugs.adobe.com/jira/browse/ASC-2812
>
> I posted the information I had, but the bug is still indicating
> "incomplete" and "Waiting on Info".
>
> Is Adobe waiting for information from you? Or has the bug slipped into the
> (at least now visible) blackhole?
>
>
>
> On 9/27/07, Derek Vadneau < [EMAIL PROTECTED]> wrote:
> >
> > First of all, thank you Johannes for posting the bug. I entered some
> > code in the comments.
> >
> > Second, yes it's a bug.
> >
> > Retrieving the property isn't the issue. Executing it as a function is.
> >
> > For example:
> > mp['prop'] = 'something';
> >
> > Why doesn't that execute getProperty? If it did Proxy would be
> > completely useless. How would you know what was trying to be set or that a
> > set action was being attempted at all?
> >
> > The same applies to a function call. The fact is a method is being
> > called - the player expects it, that's why you get a runtime error if you
> > don't return a function.
> >
> > Functionally, there's no difference here:
> > mp['go']();
> > mp.go();
> >
> > We are accessing the same property. go is a property that references a
> > function, in BOTH cases. Why would getProperty not be called for both? Why
> > is there a callProperty method at all?
> >
> > There's a difference between:
> > var a = mp['go'];
> >
> > and:
> > var a = mp['go']();
> >
> > Just as there's a difference between:
> > var a = mp.go;
> >
> > and:
> > var a = mp.go();
> >
> > mp['go'] requires a lookup, the same as mp.go requires a lookup. The
> > latter calls the function directly but the other does not?
> >
> > A peer of mine suggested this may be a compiler bug rather than a player
> > bug. It's possible that the compiler is treating the [] as a property lookup
> > that needs to call getProperty, ignoring the fact that a function is being
> > called. At least that's our suggestion from the outside. The compiler/player
> > team would know best.
> >
> > Fwiw, check this entry in the Flash Player 10 bug list. This is a bug
> > listed that suggests a similar behaviour:
> > https://bugs.adobe.com/jira/browse/ASC-2298
> > -------------------
> > myXML:XML = new XML('<a>test</a>');
> > trace(myXML['toXMLString']());
> >
> > Actual Results:
> >
> > TypeError: Error #1006: value is not a function.
> >
> > Expected Results:
> >
> > <a>test</a>
> > -------------------
> >
> > That happens because, I'll bet, under the covers the E4X implementation
> > is doing the same thing as Proxy. When you type myXML.somenode you get
> > back a reference to the node, but it doesn't exist on myXML directly. The
> > reason all of the members of XML are methods is so they don't conflict with
> > this process. The reason the above code fails is because getProperty is
> > being called and XML is doing a lookup on the data, not finding it, or
> > finding it, whatever the case, but not returning the method as expected.
> >
> > A workaround in that case is to lookup the XML methods first and return
> > them if found, but then you have conflicts, a problem that using methods was
> > supposed to resolve.
> >
> > The solution is to have callProperty called.
> >
> >
> > On 9/27/07, Johannes Nel < [EMAIL PROTECTED]> wrote:
> > >
> > >   and here is the bug id:
> > > http://bugs.adobe.com/jira/browse/ASC-2812
> > >
> > >
> > > On 9/27/07, Johannes Nel < [EMAIL PROTECTED]> wrote:
> > > >
> > > > as a side note, someone on the player team did think this was a bug
> > > > before i logged it post i escalated it to people who know more people 
> > > > than i
> > > > do :)
> > > >
> > > > On 9/27/07, Johannes Nel <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > >  var mo:MyOther = new MyOther();
> > > > > var mp:MyProxy = new MyProxy();
> > > > > mo.nextfunction = mp['go']
> > > > >
> > > > > this is a very good point.
> > > > >
> > > > >
> > > > >
> > > > > On 9/27/07, actionscript_czar <[EMAIL PROTECTED] > wrote:
> > > > > >
> > > > > >   This doesn't seem to be a bug to me, just looking at it from a
> > > > > >
> > > > > > limited perspective.
> > > > > >
> > > > > > Image a class that lookes like this:
> > > > > >
> > > > > > class MyClass
> > > > > > {
> > > > > > public var go:Function;
> > > > > >
> > > > > > public function MyClass( goFunc:Function )
> > > > > > {
> > > > > > this.go = goFunc;
> > > > > > }
> > > > > > }
> > > > > >
> > > > > > In this case go is a property that happens to be a function
> > > > > > object.
> > > > > > So what if using your proxy with another class you did something
> > > > > > like
> > > > > > this:
> > > > > >
> > > > > > var mo:MyOther = new MyOther();
> > > > > > var mp:MyProxy = new MyProxy();
> > > > > > mo.nextfunction = mp['go']; // could also be mp.go
> > > > > >
> > > > > > In that case it would use getProperty and your description is no
> > > > > >
> > > > > > different. When you use the [] operators it gets the property
> > > > > > then
> > > > > > you use the () operators to call the property. The () property
> > > > > > is
> > > > > > expecting a function object on the left hand side. The reason it
> > > > > >
> > > > > > doesn't use callProperty is because the () operators only see a
> > > > > > function object but don't see it as part of the MyProxy object.
> > > > > >
> > > > > > This doesn't mean it couldn't work as you expect in the future,
> > > > > > but
> > > > > > my understanding says the two methods of getting to go are
> > > > > > processed
> > > > > > distinctly for a reason.
> > > > > >
> > > > > > --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>,
> > > > > > "Derek Vadneau" <[EMAIL PROTECTED]>
> > > > > >
> > > > > > wrote:
> > > > > > >
> > > > > > > There seems to be a bug in flash.utils.Proxy. Here's some
> > > > > > sample
> > > > > > code:
> > > > > > >
> > > > > > > var mp:MyProxy = new MyProxy();
> > > > > > >
> > > > > > > mp.myVar = 'something'; // calls flash_proxy setProperty as
> > > > > > expected
> > > > > > >
> > > > > > > mp['myVar'] = 'something'; // calls flash_proxy setProperty as
> > > > > >
> > > > > > expected
> > > > > > >
> > > > > > > mp.go(); // calls flash_proxy callProperty as expected
> > > > > > >
> > > > > > > mp['go'](); // calls flash_proxy getProperty - NOT expected
> > > > > > >
> > > > > > > Why is getProperty called where the [] operator is used
> > > > > > instead of
> > > > > > the
> > > > > > > . operator in the case where a function is being called, but
> > > > > > not
> > > > > > when
> > > > > > > setting a property?
> > > > > > >
> > > > > > > And in that case you MUST return a function or a runtime error
> > > > > > will
> > > > > > be thrown.
> > > > > > >
> > > > > > > This is unexpected behaviour, as far as I can see.
> > > > > > >
> > > > > > > Another example:
> > > > > > >
> > > > > > > mp.obj.go();
> > > > > > >
> > > > > > > mp['obj']['go'](); // getProperty is called twice,
> > > > > > callProperty is
> > > > > > NOT
> > > > > > > called at all
> > > > > > >
> > > > > > > The issue is that I am dealing with a dynamic API, so I don't
> > > > > > always
> > > > > > > know that 'obj' or 'go' is a property vs. a method.
> > > > > > >
> > > > > > > But, because the getProperty is called when a callProperty
> > > > > > should be
> > > > > > > called I am passing an instance of my Proxy class and a
> > > > > > runtime
> > > > > > error
> > > > > > > is thrown.
> > > > > > >
> > > > > > > --
> > > > > > >
> > > > > > > Derek Vadneau
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > j:pn
> > > > > \\no comment
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > j:pn
> > > > \\no comment
> > >
> > >
> > >
> > >
> > > --
> > > j:pn
> > > \\no comment
> > >
> > >
> >
> >
> > --
> >
> > Derek Vadneau
>
>
>
>
> --
>
> Derek Vadneau
>
>  
>



-- 
j:pn
\\no comment

Reply via email to