OK, I understand now that in the SWC case these are read from the ABC as
three independent definitions with no connections between them. I would
expect that the Scope that contains the def for the backing variable also
contains the getter/setter refs, as three definitions in a DefinitionSet
for that definition name. Are you saying that the DefinitionSet has only
one item? If so, you're going to have to read the ABC parsing code and
figure out what is happening to the getter/setter.

- Gordon


On 9/26/13 2:18 PM, "Alex Harui" <aha...@adobe.com> wrote:

>I'm trying to build a simpler test case so I can follow what's going on.
>I've seen that the SyntheticBindableSetterDefinition gets created by some
>analyzer run by the MXML and AS CompilationUnits.  But it doesn't seem to
>get created by SWCCompilationUnits.  That sort of makes sense to me
>because by then, the variable should have been converted to its
>getter/setter pair and the backing variable.  But somehow, when the
>MXMLPropertySpecifierNode is figuring out its definition it gets the
>backing variable in the BindableNamespace instead of the setter.  I tried
>getting all definitions that matched the name and it didn't return
>anything other than the backing variable which was also puzzling.
>
>Thanks,
>-Alex
>
>On 9/26/13 2:09 PM, "Gordon Smith" <gosm...@adobe.com> wrote:
>
>>I didn't work on Falcon's data bindingÅ  Bruce Frazer implemented what's
>>there.
>>
>>If you can get the synthetic SetterDefinition then you can get its Name
>>with getMName(). So find the code that synthesizes the getter/setter pair
>>for a [Bindable] var, and make it store references to the getter and
>>setter on the BindableVariableDefinition so that you can retrieve these
>>synthetic definitions.
>>
>>- Gordon
>>
>>On 9/26/13 1:17 PM, "Alex Harui" <aha...@adobe.com> wrote:
>>
>>>getMName returns a Name with the same namespace as calling
>>>getNamespaceReference() on the definition.
>>>
>>>That still doesn't help me when the property is a [Bindable] var in a
>>>class in a SWC. The definition is a VariableDefinition with the
>>>BindableNamespace which represents the backing variable for the
>>>generated
>>>[Bindable] code.    I somehow have to find a SetterDefinition and figure
>>>out its namespace.
>>>
>>>Any thoughts on that?
>>>
>>>Thanks,
>>>-Alex
>>>
>>>On 9/26/13 12:13 PM, "Gordon Smith" <gosm...@adobe.com> wrote:
>>>
>>>>I was able to browse the Apache repo. getMName() is on DefinitionBase,
>>>>but
>>>>not on IDefinition. So try
>>>>((DefinitionBase)propertyNode.getDefinition()).getMName() and see
>>>>whether
>>>>it returns the right kind of Name when the property is private or
>>>>protected.
>>>>
>>>>- Gordon
>>>>
>>>>On 9/26/13 12:05 PM, "Gordon Smith" <gosm...@adobe.com> wrote:
>>>>
>>>>>I'm in a meeting in San Jose and don't have access to the Falcon code
>>>>>at
>>>>>the moment. But I think Idefinition (or maybe only DefinitionBase) has
>>>>>a
>>>>>getMName() method that returns a Name.
>>>>>
>>>>>- Gordon
>>>>>
>>>>>
>>>>>On 9/26/13 11:37 AM, "Alex Harui" <aha...@adobe.com> wrote:
>>>>>
>>>>>>It turns out that MXMLPropertySpecifierNode just calls its
>>>>>>definition's
>>>>>>getBaseName().  There doesn't seem to be any API on IDefinition to
>>>>>>return
>>>>>>a fully qualified name.  I can get the INamespaceReference from the
>>>>>>definition, but then how to I convert the INamespaceReference to a
>>>>>>Namespace I can pass into Name?
>>>>>>
>>>>>>Thanks,
>>>>>>-Alex
>>>>>>
>>>>>>On 9/26/13 11:28 AM, "Gordon Smith" <gosm...@adobe.com> wrote:
>>>>>>
>>>>>>>I don't think using a Binding should be necessary. I think the bug
>>>>>>>is
>>>>>>>the
>>>>>>>getName() of MXMLPropertySpecifierNode isn't returning the right
>>>>>>>kind
>>>>>>>of
>>>>>>>Name when the property is protected or private.
>>>>>>>
>>>>>>>- Gordon
>>>>>>>
>>>>>>>
>>>>>>>On 9/26/13 11:13 AM, "Alex Harui" <aha...@adobe.com> wrote:
>>>>>>>
>>>>>>>>Darrell, Gordon (mostly),
>>>>>>>>
>>>>>>>>I'm having trouble with the codegen for a Binding destination
>>>>>>>>function.
>>>>>>>>I
>>>>>>>>have an MXMLPropertySpecifierNode for the property to be set.  This
>>>>>>>>property can be protected or private as well as public.  I want to
>>>>>>>>use
>>>>>>>>the
>>>>>>>>OP_setproperty instruction which seems to take a Name.  However,
>>>>>>>>the
>>>>>>>>MXMLPropertySpecifierNode's getName() returns a Name that isn't
>>>>>>>>qualified
>>>>>>>>as protected or private.  In looking around, I see that other code
>>>>>>>>that
>>>>>>>>uses OP_setproperty seems to have a Binding and the getName() of
>>>>>>>>that
>>>>>>>>Binding is used.
>>>>>>>>
>>>>>>>>I passed in the LexicalScope from the class and called getBinding
>>>>>>>>on
>>>>>>>>the
>>>>>>>>MXMLPropertySpecifierNode's getDefinition() and that worked for
>>>>>>>>protected
>>>>>>>>and private members of the class, but what I'm seeing is that if
>>>>>>>>the
>>>>>>>>public variable is [Bindable] and comes from a class in a SWC then
>>>>>>>>the
>>>>>>>>MXMLPropertySpecifierNode has a VariableDefinition (instead of a
>>>>>>>>SynthesizedBindableSetterDefinition) and getBinding returns a
>>>>>>>>binding
>>>>>>>>with
>>>>>>>>the namespace set to the BindableNamespace instead of a public
>>>>>>>>setter.
>>>>>>>>
>>>>>>>>I'm wondering if the MXMLPropertySpecifierNode's definition should
>>>>>>>>be
>>>>>>>>something other than a VariableDefinition when coming from a SWC,
>>>>>>>>or
>>>>>>>>the
>>>>>>>>code should somehow special case that VariableDefinition and go
>>>>>>>>hunting
>>>>>>>>for a SetterDefinition, or something else.
>>>>>>>>
>>>>>>>>Thanks,
>>>>>>>>-Alex
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to