I tried stepping through the code to see what’s going on. In VarDeclarationEmitter.emit():
IDefinition leftDef = dyn.getLeftOperandNode().resolveType(getProject()); dyn.getLeftOperandNode() is a MemberAccessExpressionNode of “.” With two sub-nodes of type IdentifierNode. The first is “object” and the second is “coordinate”. resolveType() on that returns null. It seems to go up the scope and as best as I could understand it seems to be trying to resolve it to a member of a class rather than a member of an object literal. But I’m not sure I was understanding what’s going on… I don’t know if this is helpful, but I know that I’m confused… ;-) Harbs > On Dec 24, 2018, at 8:40 PM, GitBox <[email protected]> wrote: > > Harbs commented on issue #69: compiler omits expressions with dynamic object > access > URL: > https://github.com/apache/royale-compiler/issues/69#issuecomment-449762572 > > > Interesting. > > I tried adding the code to an MXML file and I get a NullPointerException. > > ```` > <?xml version="1.0" encoding="utf-8"?> > > <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009" > xmlns:js="library://ns.apache.org/royale/basic" > xmlns:ns1="*" applicationComplete="onComplete()"> > <fx:Script> > <![CDATA[ > import org.apache.royale.test.Assert; > > private function onComplete():void{ > var object: Object = { coordinate : [ 10, 20 ] }; > var x: Number = object.coordinate[0]; > Assert.strictEqual(x, 10); > trace("OK"); > } > ]]> > </fx:Script> > <js:valuesImpl> > <js:SimpleCSSValuesImpl /> > </js:valuesImpl> > <js:initialView> > <js:View> > <js:TextButton text="Click Me"/> > </js:View> > </js:initialView> > </js:Application> > ```` > Outputs: > ```` > test_project as: [test_project, org.apache.royale.test.Assert] > test_project mxml: [org.apache.royale.core.SimpleCSSValuesImpl, > org.apache.royale.core.View, org.apache.royale.html.TextButton, test_project, > org.apache.royale.core.Application, org.apache.royale.events.Event] > /test_project/src/test_project.mxml line 11 column 16 Error: Internal error > in ASBlockWalker subsystem, when generating code for: > /test_project/src/test_project.mxml line 11 column 16: > java.lang.NullPointerException > at > org.apache.royale.compiler.internal.codegen.js.jx.VarDeclarationEmitter.emit(VarDeclarationEmitter.java:159) > at > org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitter.emitVarDeclaration(JSRoyaleEmitter.java:716) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.visitVariable(ASBlockWalker.java:278) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeSwitch.handle(ASNodeSwitch.java:162) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeHandler.handle(ASNodeHandler.java:85) > at > org.apache.royale.compiler.internal.visitor.as.BeforeAfterStrategy.handle(BeforeAfterStrategy.java:110) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.walk(ASBlockWalker.java:159) > at > org.apache.royale.compiler.internal.codegen.js.jx.StatementEmitter.emit(StatementEmitter.java:40) > at > org.apache.royale.compiler.internal.codegen.js.jx.StatementEmitter.emit(StatementEmitter.java:29) > at > org.apache.royale.compiler.internal.codegen.js.JSEmitter.emitStatement(JSEmitter.java:323) > at > org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitter.emitStatement(JSRoyaleEmitter.java:1004) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.visitBlock(ASBlockWalker.java:349) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeSwitch.handle(ASNodeSwitch.java:278) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeHandler.handle(ASNodeHandler.java:85) > at > org.apache.royale.compiler.internal.visitor.as.BeforeAfterStrategy.handle(BeforeAfterStrategy.java:110) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.walk(ASBlockWalker.java:159) > at > org.apache.royale.compiler.internal.codegen.as.ASEmitter.emitMethodScope(ASEmitter.java:867) > at > org.apache.royale.compiler.internal.codegen.js.jx.MethodEmitter.emit(MethodEmitter.java:145) > at > org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitter.emitMethod(JSRoyaleEmitter.java:740) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.visitFunction(ASBlockWalker.java:290) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeSwitch.handle(ASNodeSwitch.java:152) > at > org.apache.royale.compiler.internal.visitor.as.ASNodeHandler.handle(ASNodeHandler.java:85) > at > org.apache.royale.compiler.internal.visitor.as.BeforeAfterStrategy.handle(BeforeAfterStrategy.java:110) > at > org.apache.royale.compiler.internal.codegen.as.ASBlockWalker.walk(ASBlockWalker.java:159) > at > org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyaleEmitter.emitScripts(MXMLRoyaleEmitter.java:1750) > at > org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyaleEmitter.emitDocument(MXMLRoyaleEmitter.java:709) > at > org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyaleBlockWalker.visitDocument(MXMLRoyaleBlockWalker.java:69) > at > org.apache.royale.compiler.internal.visitor.mxml.MXMLNodeSwitch.handle(MXMLNodeSwitch.java:86) > at > org.apache.royale.compiler.internal.codegen.mxml.MXMLBlockWalker.walk(MXMLBlockWalker.java:153) > at > org.apache.royale.compiler.internal.codegen.mxml.royale.MXMLRoyaleBlockWalker.visitFile(MXMLRoyaleBlockWalker.java:61) > at > org.apache.royale.compiler.internal.visitor.mxml.MXMLNodeSwitch.handle(MXMLNodeSwitch.java:92) > at > org.apache.royale.compiler.internal.codegen.mxml.MXMLBlockWalker.walk(MXMLBlockWalker.java:153) > at > org.apache.royale.compiler.internal.codegen.mxml.MXMLBlockWalker.visitCompilationUnit(MXMLBlockWalker.java:184) > at > org.apache.royale.compiler.internal.codegen.mxml.MXMLWriter.writeTo(MXMLWriter.java:71) > at > org.apache.royale.compiler.clients.MXMLJSCRoyale.compile(MXMLJSCRoyale.java:411) > at > org.apache.royale.compiler.clients.MXMLJSCRoyale._mainNoExit(MXMLJSCRoyale.java:265) > at > org.apache.royale.compiler.clients.MXMLJSCRoyale.mainNoExit(MXMLJSCRoyale.java:222) > at > org.apache.royale.compiler.clients.MXMLJSC._mainNoExit(MXMLJSC.java:365) > at > org.apache.royale.compiler.clients.MXMLJSC.mainNoExit(MXMLJSC.java:300) > at > org.apache.royale.compiler.clients.MXMLJSC.staticMainNoExit(MXMLJSC.java:259) > at org.apache.royale.compiler.clients.MXMLJSC.main(MXMLJSC.java:241) > ```` > > ---------------------------------------------------------------- > This is an automated message from the Apache Git Service. > To respond to the message, please log on GitHub and use the > URL above to go to the specific comment. > > For queries about this service, please contact Infrastructure at: > [email protected] > > > With regards, > Apache Git Services
