Repository: flex-falcon Updated Branches: refs/heads/develop 49835eca1 -> d36ecbce6
FLEX-35195 handle Object as single instance Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/d36ecbce Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/d36ecbce Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/d36ecbce Branch: refs/heads/develop Commit: d36ecbce62e9082683a012598db67b17eca1b369 Parents: 49835ec Author: Alex Harui <[email protected]> Authored: Tue Dec 6 21:27:04 2016 -0800 Committer: Alex Harui <[email protected]> Committed: Tue Dec 6 21:27:04 2016 -0800 ---------------------------------------------------------------------- .../internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 8 +++++++- .../internal/as/codegen/MXMLClassDirectiveProcessor.java | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d36ecbce/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java index 943bf70..7f40d3f 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java @@ -1974,7 +1974,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements MXMLDescriptorSpecifier currentPropertySpecifier = new MXMLDescriptorSpecifier(); currentPropertySpecifier.isProperty = true; - currentPropertySpecifier.name = cdef.getQualifiedName(); + currentPropertySpecifier.name = cdef != null ? cdef.getQualifiedName() : node.getName(); currentPropertySpecifier.parent = currentInstance; boolean oldInMXMLContent = inMXMLContent; @@ -2101,6 +2101,12 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements final int len = node.getChildCount(); if (!makingSimpleArray) { + MXMLDescriptorSpecifier ps = getCurrentDescriptor("ps"); + if (ps.hasObject) + { + emitInstance(node); + return; + } for (int i = 0; i < len; i++) { getMXMLWalker().walk(node.getChild(i)); // props in object http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d36ecbce/compiler/src/main/java/org/apache/flex/compiler/internal/as/codegen/MXMLClassDirectiveProcessor.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/as/codegen/MXMLClassDirectiveProcessor.java b/compiler/src/main/java/org/apache/flex/compiler/internal/as/codegen/MXMLClassDirectiveProcessor.java index 9ee0b29..f7c3eb3 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/internal/as/codegen/MXMLClassDirectiveProcessor.java +++ b/compiler/src/main/java/org/apache/flex/compiler/internal/as/codegen/MXMLClassDirectiveProcessor.java @@ -3000,6 +3000,12 @@ public class MXMLClassDirectiveProcessor extends ClassDirectiveProcessor context.makingSimpleArray = context.parentContext.makingSimpleArray; + if (newCodeGen && + !context.isStateDescriptor && + !context.parentContext.isContentFactory && + !context.parentContext.makingArrayValues) + context.addInstruction(OP_pushfalse); // complex type + if (newCodeGen && !context.makingSimpleArray) { context.addInstruction(OP_findpropstrict, IMXMLTypeConstants.NAME_OBJECT);
