Josh Tynjala created FLEX-35323: ----------------------------------- Summary: 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" click="event.target"/> </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)