You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2017/03/21 23:11:07 UTC
[30/50] git commit: [flex-falcon] [refs/heads/master] - [BUGFIX]
Changed reflection data output to support static and instance members with
the same name. Note: This changes requires a corresponding change in the
Reflection framework classes to support t
[BUGFIX] Changed reflection data output to support static and instance members with the same name.
Note: This changes requires a corresponding change in the Reflection framework classes to support the output format change.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/e1fbc8b5
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/e1fbc8b5
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/e1fbc8b5
Branch: refs/heads/master
Commit: e1fbc8b55677261d4bad448380b891ab9da1a745
Parents: 82a0704
Author: greg-dove <gr...@gmail.com>
Authored: Sat Feb 25 16:03:00 2017 +1300
Committer: greg-dove <gr...@gmail.com>
Committed: Sat Feb 25 16:03:00 2017 +1300
----------------------------------------------------------------------
.../codegen/js/jx/PackageFooterEmitter.java | 39 +++++--
.../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 117 ++++++++++---------
.../codegen/js/flexjs/TestFlexJSPackage.java | 4 +-
3 files changed, 93 insertions(+), 67 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index d2f53c5..65b69d1 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -367,12 +367,15 @@ public class PackageFooterEmitter extends JSSubEmitter implements
accessorData.add(staticEventDispatcher);
}
- HashMap<String, AccessorData> accessorMap = new HashMap<String, AccessorData>();
+ HashMap<String, AccessorData> instanceAccessorMap = new HashMap<String, AccessorData>();
+ HashMap<String, AccessorData> staticAccessorMap = new HashMap<String, AccessorData>();
for (IDefinitionNode dnode : dnodes)
{
ModifiersSet modifierSet = dnode.getDefinition().getModifiers();
boolean isStatic = (modifierSet != null && modifierSet
.hasModifier(ASModifier.STATIC));
+
+ HashMap<String, AccessorData> accessorMap = isStatic ? staticAccessorMap : instanceAccessorMap;
if ((dnode.getNodeID() == ASTNodeID.GetterID ||
dnode.getNodeID() == ASTNodeID.SetterID))
{
@@ -589,6 +592,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
count++;
// varname: { type: typename
write(ASEmitterTokens.SINGLE_QUOTE);
+ //prefix static var names with |
+ if (var.isStatic) {
+ write("|");
+ }
write(var.name);
write(ASEmitterTokens.SINGLE_QUOTE);
writeToken(ASEmitterTokens.COLON);
@@ -598,9 +605,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
write(ASEmitterTokens.SINGLE_QUOTE);
write(var.type);
write(ASEmitterTokens.SINGLE_QUOTE);
- if (var.isStatic) {
- writeIsStatic();
- }
+ // if (var.isStatic) {
+ // writeIsStatic();
+ // }
IMetaTagNode[] tags = var.metaData;
if (tags != null) {
writeToken(ASEmitterTokens.COMMA);
@@ -650,6 +657,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
count++;
// accessorname: { type: typename
write(ASEmitterTokens.SINGLE_QUOTE);
+ //prefix static accessor names with |
+ if (accessor.isStatic) {
+ write("|");
+ }
write(accessor.name);
write(ASEmitterTokens.SINGLE_QUOTE);
writeToken(ASEmitterTokens.COLON);
@@ -659,9 +670,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
write(ASEmitterTokens.SINGLE_QUOTE);
write(accessor.type);
write(ASEmitterTokens.SINGLE_QUOTE);
- if (accessor.isStatic) {
- writeIsStatic();
- }
+ // if (accessor.isStatic) {
+ // writeIsStatic();
+ // }
writeToken(ASEmitterTokens.COMMA);
write("access");
writeToken(ASEmitterTokens.COLON);
@@ -723,6 +734,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
count++;
// methodname: { type: typename
write(ASEmitterTokens.SINGLE_QUOTE);
+ //prefix static method names with |
+ if (method.isStatic) {
+ write("|");
+ }
write(method.name);
write(ASEmitterTokens.SINGLE_QUOTE);
writeToken(ASEmitterTokens.COLON);
@@ -732,9 +747,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
write(ASEmitterTokens.SINGLE_QUOTE);
write(method.type);
write(ASEmitterTokens.SINGLE_QUOTE);
- if (method.isStatic) {
- writeIsStatic();
- }
+ // if (method.isStatic) {
+ // writeIsStatic();
+ // }
writeToken(ASEmitterTokens.COMMA);
write("declaredBy");
writeToken(ASEmitterTokens.COLON);
@@ -801,12 +816,12 @@ public class PackageFooterEmitter extends JSSubEmitter implements
writeToken(ASEmitterTokens.SQUARE_CLOSE);
}
- private void writeIsStatic() {
+ /*private void writeIsStatic() {
writeToken(ASEmitterTokens.COMMA);
write("isStatic");
writeToken(ASEmitterTokens.COLON);
writeToken(ASEmitterTokens.TRUE);
- }
+ }*/
private void writeEmptyContent(Boolean appendComma, Boolean includeNewline) {
//return {};
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/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 2379a62..21aef44 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
@@ -717,59 +717,11 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
ArrayList<PackageFooterEmitter.AccessorData> accessorData = new ArrayList<PackageFooterEmitter.AccessorData>();
HashMap<String, PropertyNodes> accessors = asEmitter.getModel().getPropertyMap();
- for (String propName : accessors.keySet())
- {
- PropertyNodes p = accessors.get(propName);
-
- IFunctionNode accessorNode = p.getter;
- if (accessorNode == null)
- accessorNode = p.setter;
- String ns = accessorNode.getNamespace();
- if (ns == IASKeywordConstants.PUBLIC)
- {
- PackageFooterEmitter.AccessorData data = asEmitter.packageFooterEmitter.new AccessorData();
- accessorData.add(data);
- data.name = accessorNode.getName();
-
- data.isStatic = accessorNode.hasModifier(ASModifier.STATIC);
- if (p.getter != null)
- {
- data.type = p.getter.getReturnTypeNode().resolveType(fjs).getQualifiedName();
- if (p.setter !=null) {
- data.access = "readwrite";
- } else data.access = "readonly";
- }
- else
- {
- data.type = p.setter.getVariableTypeNode().resolveType(fjs).getQualifiedName();
- data.access = "writeonly";
- }
-
- data.declaredBy = (cdef.getQualifiedName());
- IMetaTagsNode metaData = accessorNode.getMetaTags();
- if (metaData != null)
- {
- IMetaTagNode[] tags = metaData.getAllTags();
- if (tags.length > 0)
- {
- data.metaData = tags;
- /* accessors don't need exportProp since they are referenced via the defineProp data structure
- for (IMetaTagNode tag : tags)
- {
- String tagName = tag.getTagName();
- if (exportMetadata.contains(tagName))
- {
- if (data.isStatic)
- exportSymbols.add(data.name);
- else
- exportProperties.add(data.name);
- }
- }
- */
- }
- }
- }
- }
+ //instance accessors
+ collectAccessors(accessors,accessorData,cdef);
+ accessors = asEmitter.getModel().getStaticPropertyMap();
+ //static accessors
+ collectAccessors(accessors,accessorData,cdef);
//additional bindables
HashMap<String, BindableVarInfo> bindableVars = asEmitter.getModel().getBindableVars();
@@ -899,6 +851,65 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
exportSymbols);
}
+ private void collectAccessors(HashMap<String, PropertyNodes> accessors, ArrayList<PackageFooterEmitter.AccessorData> accessorData,IClassDefinition cdef ) {
+ JSFlexJSEmitter asEmitter = (JSFlexJSEmitter)((IMXMLBlockWalker) getMXMLWalker()).getASEmitter();
+ FlexJSProject fjs = (FlexJSProject) getMXMLWalker().getProject();
+
+ for (String propName : accessors.keySet())
+ {
+ PropertyNodes p = accessors.get(propName);
+
+ IFunctionNode accessorNode = p.getter;
+ if (accessorNode == null)
+ accessorNode = p.setter;
+ String ns = accessorNode.getNamespace();
+ if (ns == IASKeywordConstants.PUBLIC)
+ {
+ PackageFooterEmitter.AccessorData data = asEmitter.packageFooterEmitter.new AccessorData();
+ accessorData.add(data);
+ data.name = accessorNode.getName();
+
+ data.isStatic = accessorNode.hasModifier(ASModifier.STATIC);
+ if (p.getter != null)
+ {
+ data.type = p.getter.getReturnTypeNode().resolveType(fjs).getQualifiedName();
+ if (p.setter !=null) {
+ data.access = "readwrite";
+ } else data.access = "readonly";
+ }
+ else
+ {
+ data.type = p.setter.getVariableTypeNode().resolveType(fjs).getQualifiedName();
+ data.access = "writeonly";
+ }
+
+ data.declaredBy = (cdef.getQualifiedName());
+ IMetaTagsNode metaData = accessorNode.getMetaTags();
+ if (metaData != null)
+ {
+ IMetaTagNode[] tags = metaData.getAllTags();
+ if (tags.length > 0)
+ {
+ data.metaData = tags;
+ /* accessors don't need exportProp since they are referenced via the defineProp data structure
+ for (IMetaTagNode tag : tags)
+ {
+ String tagName = tag.getTagName();
+ if (exportMetadata.contains(tagName))
+ {
+ if (data.isStatic)
+ exportSymbols.add(data.name);
+ else
+ exportProperties.add(data.name);
+ }
+ }
+ */
+ }
+ }
+ }
+ }
+ }
+
//--------------------------------------------------------------------------
protected void emitPropertyDecls()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index 0215e25..9e94828 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -790,14 +790,14 @@ public class TestFlexJSPackage extends TestGoogPackage
" return {\n" +
" variables: function () {\n" +
" return {\n" +
- " 'someString': { type: 'String', isStatic: true }\n" +
+ " '|someString': { type: 'String'}\n" +
" };\n" +
" },\n" +
" accessors: function () {return {};},\n" +
" methods: function () {\n" +
" return {\n" +
" 'InternalClass': { type: '', declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
- " 'someStaticFunction': { type: 'String', isStatic: true , declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
+ " '|someStaticFunction': { type: 'String', declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
" 'someMethod': { type: 'String', declaredBy: 'foo.bar.baz.A.InternalClass'}\n" +
" };\n" +
" }\n" +