- Refactored Class emitting into shared jx package for future use. - Refactored Bindable class level emittion; - Refactored GetSet class level emition - Created a shared model for each emitter session.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/b2097f4e Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/b2097f4e Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/b2097f4e Branch: refs/heads/develop Commit: b2097f4e9dd112339369a278c4638b5d7d83a182 Parents: 6209a24 Author: Michael Schmalle <[email protected]> Authored: Sat May 30 17:40:46 2015 -0400 Committer: Michael Schmalle <[email protected]> Committed: Sat May 30 17:40:46 2015 -0400 ---------------------------------------------------------------------- .../js/flexjs/TestFlexJSExpressions.java | 18 +- .../mxml/flexjs/TestFlexJSMXMLScript.java | 2 +- .../flex/compiler/codegen/ISubEmitter.java | 45 + .../flex/compiler/codegen/js/IJSEmitter.java | 3 +- .../compiler/internal/codegen/as/ASEmitter.java | 2 +- .../compiler/internal/codegen/js/JSEmitter.java | 9 + .../internal/codegen/js/JSSessionModel.java | 79 + .../internal/codegen/js/JSSubEmitter.java | 99 ++ .../internal/codegen/js/amd/JSAMDEmitter.java | 2 + .../codegen/js/flexjs/JSFlexJSDocEmitter.java | 134 +- .../codegen/js/flexjs/JSFlexJSEmitter.java | 1524 +++++++----------- .../internal/codegen/js/goog/JSGoogEmitter.java | 33 +- .../internal/codegen/js/jx/BindableEmitter.java | 76 + .../internal/codegen/js/jx/ClassEmitter.java | 156 ++ .../internal/codegen/js/jx/GetSetEmitter.java | 195 +++ .../codegen/js/utils/DocEmitterUtils.java | 49 + .../internal/codegen/js/utils/EmitterUtils.java | 121 ++ .../codegen/js/vf2js/JSVF2JSEmitter.java | 10 +- .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 14 +- .../codegen/mxml/vf2js/MXMLVF2JSEmitter.java | 4 +- 20 files changed, 1573 insertions(+), 1002 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java ---------------------------------------------------------------------- diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java index 9691b70..99fc70f 100644 --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java @@ -19,7 +19,7 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs; -import org.apache.flex.compiler.definitions.IDefinition; +import org.apache.flex.compiler.definitions.IClassDefinition; import org.apache.flex.compiler.driver.IBackend; import org.apache.flex.compiler.internal.codegen.js.goog.TestGoogExpressions; import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend; @@ -164,9 +164,9 @@ public class TestFlexJSExpressions extends TestGoogExpressions IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType( fnode, IBinaryOperatorNode.class); ((NodeBase)fnode).setParent(null); - IDefinition def = classnode.getDefinition(); + IClassDefinition def = classnode.getDefinition(); - ((JSFlexJSEmitter)asEmitter).thisClass = def; + ((JSFlexJSEmitter)asEmitter).getModel().setCurrentClass(def); asBlockWalker.visitBinaryOperator(bnode); assertOut("this.b = 1"); } @@ -188,9 +188,9 @@ public class TestFlexJSExpressions extends TestGoogExpressions IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType( fnode, IBinaryOperatorNode.class); ((NodeBase)fnode).setParent(null); - IDefinition def = classnode.getDefinition(); + IClassDefinition def = classnode.getDefinition(); - ((JSFlexJSEmitter)asEmitter).thisClass = def; + ((JSFlexJSEmitter)asEmitter).getModel().setCurrentClass(def); asBlockWalker.visitBinaryOperator(bnode); assertOut("this.b = 1"); } @@ -478,9 +478,9 @@ public class TestFlexJSExpressions extends TestGoogExpressions IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType( fnode, IBinaryOperatorNode.class); ((NodeBase)fnode).setParent(null); - IDefinition def = classnode.getDefinition(); + IClassDefinition def = classnode.getDefinition(); - ((JSFlexJSEmitter)asEmitter).thisClass = def; + ((JSFlexJSEmitter)asEmitter).getModel().setCurrentClass(def); asBlockWalker.visitBinaryOperator(bnode); assertOut("foo_bar_B.d.b = 1"); } @@ -538,9 +538,9 @@ public class TestFlexJSExpressions extends TestGoogExpressions IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType( fnode, IBinaryOperatorNode.class); ((NodeBase)fnode).setParent(null); - IDefinition def = classnode.getDefinition(); + IClassDefinition def = classnode.getDefinition(); - ((JSFlexJSEmitter)asEmitter).thisClass = def; + ((JSFlexJSEmitter)asEmitter).getModel().setCurrentClass(def); asBlockWalker.visitBinaryOperator(bnode); assertOut("org_apache_flex_utils_Language.as(this.model, foo_bar_E, true).labelText = null"); } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java ---------------------------------------------------------------------- diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java index 8984cd4..6d79603 100644 --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java @@ -40,7 +40,7 @@ public class TestFlexJSMXMLScript extends FlexJSTestBase IMXMLDocumentNode dnode = (IMXMLDocumentNode) node .getAncestorOfType(IMXMLDocumentNode.class); - ((JSFlexJSEmitter)(mxmlBlockWalker.getASEmitter())).thisClass = dnode.getDefinition(); + ((JSFlexJSEmitter)(mxmlBlockWalker.getASEmitter())).getModel().setCurrentClass(dnode.getDefinition()); mxmlBlockWalker.visitDocument(dnode); String appName = dnode.getQualifiedName(); String outTemplate = "/**\n * AppName\n *\n * @fileoverview\n *\n * @suppress {checkTypes}\n */\n\ngoog.provide('AppName');\n\ngoog.require('org_apache_flex_core_Application');\n\n\n\n\n/**\n * @constructor\n * @extends {org_apache_flex_core_Application}\n */\nAppName = function() {\n AppName.base(this, 'constructor');\n \n /**\n * @private\n * @type {Array}\n */\n this.mxmldd;\n \n /**\n * @private\n * @type {Array}\n */\n this.mxmldp;\n};\ngoog.inherits(AppName, org_apache_flex_core_Application);\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nAppName.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'AppName', qName: 'AppName' }] };\n\n\n/**\n * @expose\n * @override\n */\nAppName.prototype.addedToParent = function() {\n AppName.base(this, 'addedToParent');\n};\n\n\n"; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/codegen/ISubEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/ISubEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/ISubEmitter.java new file mode 100644 index 0000000..1431c4b --- /dev/null +++ b/compiler.jx/src/org/apache/flex/compiler/codegen/ISubEmitter.java @@ -0,0 +1,45 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.flex.compiler.codegen; + +import org.apache.flex.compiler.tree.as.IASNode; + +/** + * The {@link IEmitter} emitter can use composition for it's more + * complicated production sequences with member, dynamic, binary expressions and + * identifiers etc. + * + * @author Michael Schmalle + */ +public interface ISubEmitter<T> +{ + /** + * The main emitter will call this method of the sub emitter with the + * correct generic type implemented. + * <p> + * The main idea here is abstraction. Producing JavaScript can get + * complicated, the best way to avoid bugs is to avoid as much state and + * interdependence between emit() calls of the main emitter. + * + * @param node The current {@link IASNode} being emitted by the + * {@link IEmitter}. + */ + void emit(T node); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java index 09bb858..01444e7 100644 --- a/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java @@ -22,6 +22,7 @@ package org.apache.flex.compiler.codegen.js; import java.io.Writer; import org.apache.flex.compiler.codegen.as.IASEmitter; +import org.apache.flex.compiler.internal.codegen.js.JSSessionModel; import org.apache.flex.compiler.visitor.IASNodeStrategy; /** @@ -32,5 +33,5 @@ import org.apache.flex.compiler.visitor.IASNodeStrategy; */ public interface IJSEmitter extends IASEmitter { - + JSSessionModel getModel(); } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java index b7db495..423571b 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java @@ -717,7 +717,7 @@ public class ASEmitter implements IASEmitter, IEmitter getWalker().walk(node.getNameExpressionNode()); } - protected void emitParameters(IParameterNode[] nodes) + public void emitParameters(IParameterNode[] nodes) { write(ASEmitterTokens.PAREN_OPEN); int len = nodes.length; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java index 6fb5576..4eb6ccb 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java @@ -33,10 +33,19 @@ import org.apache.flex.compiler.tree.as.IFunctionObjectNode; */ public class JSEmitter extends ASEmitter implements IJSEmitter { + private JSSessionModel model; + + @Override + public JSSessionModel getModel() + { + return model; + } public JSEmitter(FilterWriter out) { super(out); + + model = new JSSessionModel(); } @Override http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java new file mode 100644 index 0000000..97cc52b --- /dev/null +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java @@ -0,0 +1,79 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.flex.compiler.internal.codegen.js; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.apache.flex.compiler.definitions.IClassDefinition; +import org.apache.flex.compiler.tree.as.IGetterNode; +import org.apache.flex.compiler.tree.as.ISetterNode; + +/** + * @author Michael Schmalle + */ +public class JSSessionModel +{ + private IClassDefinition currentClass; + + public static class PropertyNodes + { + public IGetterNode getter; + public ISetterNode setter; + } + + private HashMap<String, PropertyNodes> propertyMap = new HashMap<String, PropertyNodes>(); + + private HashMap<String, PropertyNodes> staticPropertyMap = new HashMap<String, PropertyNodes>(); + + private ArrayList<String> bindableVars = new ArrayList<String>(); + + public IClassDefinition getCurrentClass() + { + return currentClass; + } + + public void setCurrentClass(IClassDefinition currentClass) + { + this.currentClass = currentClass; + } + + public HashMap<String, PropertyNodes> getPropertyMap() + { + return propertyMap; + } + + public HashMap<String, PropertyNodes> getStaticPropertyMap() + { + return staticPropertyMap; + } + + public boolean hasBindableVars() + { + return bindableVars.size() > 0; + } + + public List<String> getBindableVars() + { + return bindableVars; + } + +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSubEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSubEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSubEmitter.java new file mode 100644 index 0000000..00ed207 --- /dev/null +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSubEmitter.java @@ -0,0 +1,99 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.flex.compiler.internal.codegen.js; + +import org.apache.flex.compiler.codegen.IEmitterTokens; +import org.apache.flex.compiler.codegen.js.IJSEmitter; +import org.apache.flex.compiler.projects.ICompilerProject; + +public class JSSubEmitter +{ + private IJSEmitter emitter; + + protected IJSEmitter getEmitter() + { + return emitter; + } + + protected ICompilerProject getProject() + { + return emitter.getWalker().getProject(); + } + + protected JSSessionModel getModel() + { + return emitter.getModel(); + } + + public JSSubEmitter(IJSEmitter emitter) + { + this.emitter = emitter; + } + + protected void write(IEmitterTokens value) + { + emitter.write(value); + } + + protected void write(String value) + { + emitter.write(value); + } + + protected void writeToken(IEmitterTokens value) + { + emitter.writeToken(value); + } + + protected void writeToken(String value) + { + emitter.writeToken(value); + } + + protected void writeNewline() + { + emitter.writeNewline(); + } + + protected void writeNewline(IEmitterTokens value) + { + emitter.writeNewline(value); + } + + protected void writeNewline(String value) + { + emitter.writeNewline(value); + } + + protected void writeNewline(String value, boolean pushIndent) + { + emitter.writeNewline(value, pushIndent); + } + + protected void indentPush() + { + emitter.indentPush(); + } + + protected void indentPop() + { + emitter.indentPop(); + } +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java index bc45058..8dcbb2c 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java @@ -251,6 +251,8 @@ public class JSAMDEmitter extends JSEmitter implements IJSAMDEmitter //ICompilerProject project = getWalker().getProject(); IClassDefinition definition = node.getDefinition(); + getModel().setCurrentClass(definition); + final String className = definition.getBaseName(); write("AS3.compilationUnit($exports, function($primaryDeclaration){"); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b2097f4e/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java index 701bb99..b7ba9bd 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java @@ -20,6 +20,7 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs; import java.util.ArrayList; +import java.util.List; import org.apache.flex.compiler.asdoc.flexjs.ASDocComment; import org.apache.flex.compiler.clients.MXMLJSC; @@ -46,50 +47,59 @@ import org.apache.flex.compiler.tree.as.IVariableNode; public class JSFlexJSDocEmitter extends JSGoogDocEmitter { + private List<String> classIgnoreList; + private List<String> ignoreList; public JSFlexJSDocEmitter(IJSEmitter emitter) { super(emitter); } - public ArrayList<String> classIgnoreList; - private ArrayList<String> ignoreList; + public List<String> getClassIgnoreList() + { + return classIgnoreList; + } + public void setClassIgnoreList(List<String> value) + { + this.classIgnoreList = value; + } + @Override protected String convertASTypeToJS(String name, String pname) { - if (ignoreList != null) - { - if (ignoreList.contains(pname + "." + name)) - return IASLanguageConstants.Object; - } - if (classIgnoreList != null) - { - if (classIgnoreList.contains(pname + "." + name)) - return IASLanguageConstants.Object; - } - name = super.convertASTypeToJS(name, pname); - return formatQualifiedName(name); + if (ignoreList != null) + { + if (ignoreList.contains(pname + "." + name)) + return IASLanguageConstants.Object; + } + if (classIgnoreList != null) + { + if (classIgnoreList.contains(pname + "." + name)) + return IASLanguageConstants.Object; + } + name = super.convertASTypeToJS(name, pname); + return formatQualifiedName(name); } - + @Override protected String formatQualifiedName(String name) { - if (name.contains("goog.") || name.startsWith("Vector.")) - return name; - name = name.replaceAll("\\.", "_"); - return name; + if (name.contains("goog.") || name.startsWith("Vector.")) + return name; + name = name.replaceAll("\\.", "_"); + return name; } @Override public void emitMethodDoc(IFunctionNode node, ICompilerProject project) { ignoreList = null; - + IClassDefinition classDefinition = resolveClassDefinition(node); ASDocComment asDoc = (ASDocComment) node.getASDocComment(); - + if (node instanceof IFunctionNode) { boolean hasDoc = false; @@ -122,7 +132,9 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter .getContainingScope(), DependencyType.INHERITANCE, true); if (type == null) - System.out.println(iReference.getDisplayString() + " not resolved in " + classDefinition.getQualifiedName()); + System.out.println(iReference.getDisplayString() + + " not resolved in " + + classDefinition.getQualifiedName()); emitImplements(type, type.getPackageName()); } } @@ -133,10 +145,11 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter { if (asDoc != null && MXMLJSC.keepASDoc) { - String docText = asDoc.commentNoEnd(); - String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION.getToken(); - if (docText.contains(ignoreToken)) - loadIgnores(docText); + String docText = asDoc.commentNoEnd(); + String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION + .getToken(); + if (docText.contains(ignoreToken)) + loadIgnores(docText); write(changeAnnotations(asDoc.commentNoEnd())); } else @@ -166,7 +179,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter ITypeDefinition tdef = enode.resolveType(project); if (tdef == null) continue; - + emitParam(pnode, tdef.getPackageName()); } @@ -187,12 +200,12 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter hasDoc = true; } - ITypeDefinition tdef = ((IFunctionDefinition)node.getDefinition()) - .resolveReturnType(project); + ITypeDefinition tdef = ((IFunctionDefinition) node + .getDefinition()).resolveReturnType(project); String packageName = ""; packageName = tdef.getPackageName(); - + emitReturn(node, packageName); } @@ -221,38 +234,40 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter private void loadIgnores(String doc) { - ignoreList = new ArrayList<String>(); - String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION.getToken(); - int index = doc.indexOf(ignoreToken); - while (index != -1) - { - String ignorable = doc.substring(index + ignoreToken.length()); - int endIndex = ignorable.indexOf("\n"); - ignorable = ignorable.substring(0, endIndex); - ignorable = ignorable.trim(); - ignoreList.add(ignorable); - index = doc.indexOf(ignoreToken, index + endIndex); - } + ignoreList = new ArrayList<String>(); + String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION.getToken(); + int index = doc.indexOf(ignoreToken); + while (index != -1) + { + String ignorable = doc.substring(index + ignoreToken.length()); + int endIndex = ignorable.indexOf("\n"); + ignorable = ignorable.substring(0, endIndex); + ignorable = ignorable.trim(); + ignoreList.add(ignorable); + index = doc.indexOf(ignoreToken, index + endIndex); + } } + private String changeAnnotations(String doc) { - // rename these tags so they don't conflict with generated - // jsdoc tags - String pass1 = doc.replaceAll("@param", "@asparam"); - String pass2 = pass1.replaceAll("@return", "@asreturn"); - String pass3 = pass2.replaceAll("@private", "@asprivate"); - return pass3; + // rename these tags so they don't conflict with generated + // jsdoc tags + String pass1 = doc.replaceAll("@param", "@asparam"); + String pass2 = pass1.replaceAll("@return", "@asreturn"); + String pass3 = pass2.replaceAll("@private", "@asprivate"); + return pass3; } - - public void emitInterfaceMemberDoc(IDefinitionNode node, ICompilerProject project) + + public void emitInterfaceMemberDoc(IDefinitionNode node, + ICompilerProject project) { boolean hasDoc = false; - - ASDocComment asDoc = (ASDocComment) ((IFunctionNode) node).getASDocComment(); - + + ASDocComment asDoc = (ASDocComment) ((IFunctionNode) node) + .getASDocComment(); + String returnType = ((IFunctionNode) node).getReturnType(); - if (returnType != "" - && returnType != ASEmitterTokens.VOID.getToken()) // has return + if (returnType != "" && returnType != ASEmitterTokens.VOID.getToken()) // has return { if (asDoc != null && MXMLJSC.keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); @@ -260,13 +275,14 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter begin(); hasDoc = true; - ITypeDefinition tdef = ((IFunctionDefinition)node.getDefinition()) + ITypeDefinition tdef = ((IFunctionDefinition) node.getDefinition()) .resolveReturnType(project); emitReturn((IFunctionNode) node, tdef.getPackageName()); } - IParameterNode[] parameters = ((IFunctionNode) node).getParameterNodes(); + IParameterNode[] parameters = ((IFunctionNode) node) + .getParameterNodes(); for (IParameterNode pnode : parameters) { if (!hasDoc) @@ -303,7 +319,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter emitPublic(node); } } - + @Override public void emitFieldDoc(IVariableNode node, IDefinition def) { @@ -320,7 +336,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter } else { - emitPublic(node); + emitPublic(node); } if (node.isConst())
