[ 
https://issues.apache.org/jira/browse/FLEX-35323?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16040997#comment-16040997
 ] 

Josh Tynjala commented on FLEX-35323:
-------------------------------------

Looking in BindingDestinationMaker.makeDestinationFunctionInstructionList(), it 
seems likely that the result of psn.getDefinition() will be null, since it's 
dynamic:

{code:title=BindingDestinationMaker.java}
IMXMLPropertySpecifierNode psn = (IMXMLPropertySpecifierNode)parent;
IDefinition d = psn.getDefinition();
Binding b = host.getInstanceScope().getBinding(d);
{code}

It can probably fall back to using the name of the IMXMLPropertySpecifierNode 
if the definition is null.

> NullPointerException when setting property of <fx:Object/> with binding
> -----------------------------------------------------------------------
>
>                 Key: FLEX-35323
>                 URL: https://issues.apache.org/jira/browse/FLEX-35323
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Falcon
>    Affects Versions: Apache FalconJX 0.7.0
>            Reporter: Josh Tynjala
>
> Using the following code:
> {code:title=src/InternalError.mxml}
> <?xml version="1.0" encoding="utf-8"?>
> <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
>       xmlns:js="library://ns.apache.org/flexjs/basic"
>       xmlns:local="*">
>       <fx:Declarations>
>               <fx:Object test="{MY_CONST}"/>
>       </fx:Declarations>
>       <js:initialView>
>               <js:View>
>                       <js:Label id="label" text="Hello World" x="100" 
> y="100"/>
>               </js:View>
>       </js:initialView>
>       <js:valuesImpl>
>               <js:SimpleCSSValuesImpl />
>       </js:valuesImpl>
>       <fx:Script><![CDATA[
>               public static const MY_CONST:String = "hello";
>       ]]></fx:Script>
> </js:Application>
> {code}
> Compile with js/bin/mxmlc:
> {code}
> mxmlc src/InternalError.mxml
> {code}
> The following error will be included in the output:
> {code}
> InternalError.mxml Error: Internal error in ABC generator subsystem, when 
> generating code for: 
> /Users/joshtynjala/Development/NextGenAS/examples/HelloFlexJS/src/HelloFlexJS.mxml:
>  java.lang.NullPointerException
>       at 
> org.apache.flex.compiler.internal.as.codegen.LexicalScope.getNameFromDefinition(LexicalScope.java:1178)
>       at 
> org.apache.flex.compiler.internal.as.codegen.LexicalScope.getBinding(LexicalScope.java:1069)
>       at 
> org.apache.flex.compiler.internal.codegen.databinding.BindingDestinationMaker.makeDestinationFunctionInstructionList(BindingDestinationMaker.java:131)
>       at 
> org.apache.flex.compiler.internal.codegen.databinding.BindingInfo.<init>(BindingInfo.java:114)
>       at 
> org.apache.flex.compiler.internal.codegen.databinding.BindingAnalyzer.analyze(BindingAnalyzer.java:56)
>       at 
> org.apache.flex.compiler.internal.codegen.databinding.BindingDatabase.analyze(BindingDatabase.java:122)
>       at 
> org.apache.flex.compiler.internal.codegen.databinding.MXMLBindingDirectiveHelper.visitNode(MXMLBindingDirectiveHelper.java:116)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processMXMLDataBinding(MXMLClassDirectiveProcessor.java:4803)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processMXMLPropertySpecifier(MXMLClassDirectiveProcessor.java:3702)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processNode(MXMLClassDirectiveProcessor.java:962)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:861)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:831)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processMXMLObject(MXMLClassDirectiveProcessor.java:3014)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processNode(MXMLClassDirectiveProcessor.java:919)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:861)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:831)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processMXMLDeclarations(MXMLClassDirectiveProcessor.java:4132)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processNode(MXMLClassDirectiveProcessor.java:977)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:861)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.traverse(MXMLClassDirectiveProcessor.java:831)
>       at 
> org.apache.flex.compiler.internal.as.codegen.MXMLClassDirectiveProcessor.processMainClassDefinitionNode(MXMLClassDirectiveProcessor.java:653)
>       at 
> org.apache.flex.compiler.internal.as.codegen.GlobalDirectiveProcessor.declareMXMLDocument(GlobalDirectiveProcessor.java:518)
>       at 
> org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.processNode(DirectiveProcessor.java:232)
>       at 
> org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.traverse(DirectiveProcessor.java:188)
>       at 
> org.apache.flex.compiler.internal.as.codegen.ABCGenerator.generate(ABCGenerator.java:122)
>       at 
> org.apache.flex.compiler.internal.units.MXMLCompilationUnit.handleABCBytesRequest(MXMLCompilationUnit.java:199)
>       at 
> org.apache.flex.compiler.internal.units.CompilationUnitBase.processABCBytesRequest(CompilationUnitBase.java:876)
>       at 
> org.apache.flex.compiler.internal.units.CompilationUnitBase.access$300(CompilationUnitBase.java:109)
>       at 
> org.apache.flex.compiler.internal.units.CompilationUnitBase$4$1.call(CompilationUnitBase.java:313)
>       at 
> org.apache.flex.compiler.internal.units.CompilationUnitBase$4$1.call(CompilationUnitBase.java:309)
>       at 
> org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:228)
>       at 
> org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:222)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> {code}
> Can reproduce with both FlexJS 0.7.0 and the latest 0.8.0 release branch 
> nightly.
> Simply setting the property without binding does not produce a 
> NullPointerException.
> Instead of using <fx:Object/>, if you switch to the following code, there is 
> no NullPointerException:
> {code}
> <js:Label text="{MY_CONST}"/>
> {code}
> With that in mind, it may have something to do with the fact that the Object 
> class is dynamic.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to