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

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

If it's not too much trouble, I'm going to try to fix this one before the end 
of the day. From my investigation, it looks pretty straightforward. If it turns 
out to be a more challenging fix than I think it will be, I'm okay with 
deferring.

> 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, Apache FalconJX 0.8.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