You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/11/15 07:28:29 UTC
[7/8] git commit: [flex-falcon] [refs/heads/develop] - allow omission
of unused types from jsdoc
allow omission of unused types from jsdoc
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/e7f31d1c
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/e7f31d1c
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/e7f31d1c
Branch: refs/heads/develop
Commit: e7f31d1c50767e001db43fcdf8c0f13ce916ab6a
Parents: 2ee9fb2
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 14 16:46:57 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 14 16:46:57 2014 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSDocEmitter.java | 47 +++++++++++++++++++-
.../codegen/js/flexjs/JSFlexJSEmitter.java | 32 ++++++++++++-
.../codegen/js/goog/JSGoogDocEmitter.java | 2 +-
3 files changed, 76 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e7f31d1c/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 052547c..b676956 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
@@ -19,6 +19,8 @@
package org.apache.flex.compiler.internal.codegen.js.flexjs;
+import java.util.ArrayList;
+
import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
import org.apache.flex.compiler.clients.MXMLJSC;
import org.apache.flex.compiler.codegen.js.IJSEmitter;
@@ -33,7 +35,6 @@ import org.apache.flex.compiler.definitions.references.IReference;
import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter;
-import org.apache.flex.compiler.internal.definitions.InterfaceDefinition;
import org.apache.flex.compiler.internal.scopes.ASScope;
import org.apache.flex.compiler.projects.ICompilerProject;
import org.apache.flex.compiler.tree.as.IDefinitionNode;
@@ -49,9 +50,30 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
super(emitter);
}
+ public ArrayList<String> classIgnoreList;
+ private ArrayList<String> ignoreList;
+
+ @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;
+ }
+ return super.convertASTypeToJS(name, pname);
+ }
+
@Override
public void emitMethodDoc(IFunctionNode node, ICompilerProject project)
{
+ ignoreList = null;
+
IClassDefinition classDefinition = resolveClassDefinition(node);
ASDocComment asDoc = (ASDocComment) node.getASDocComment();
@@ -98,7 +120,13 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (ns != null)
{
if (asDoc != null && MXMLJSC.keepASDoc)
+ {
+ String docText = asDoc.commentNoEnd();
+ String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION.getToken();
+ if (docText.contains(ignoreToken))
+ loadIgnores(docText);
write(changeAnnotations(asDoc.commentNoEnd()));
+ }
else
begin();
emitMethodAccess(node);
@@ -178,7 +206,22 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
end();
}
}
-
+
+ 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);
+ }
+ }
private String changeAnnotations(String doc)
{
// rename these tags so they don't conflict with generated
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e7f31d1c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 7dbd74e..5e4951b 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -29,6 +29,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
+import org.apache.flex.compiler.clients.MXMLJSC;
import org.apache.flex.compiler.codegen.IASGlobalFunctionConstants;
import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
@@ -130,6 +131,10 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
{
thisClass = node.getDefinition();
+ ASDocComment asDoc = (ASDocComment) node.getASDocComment();
+ if (asDoc != null && MXMLJSC.keepASDoc)
+ loadImportIgnores(asDoc.commentNoEnd());
+
project = getWalker().getProject();
IClassDefinition definition = node.getDefinition();
@@ -200,7 +205,25 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
}
- @Override
+ private void loadImportIgnores(String doc)
+ {
+ ArrayList<String> ignoreList = new ArrayList<String>();
+ String ignoreToken = JSFlexJSEmitterTokens.IGNORE_IMPORT.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);
+ }
+ this.getDocEmitter();
+ docEmitter.classIgnoreList = ignoreList;
+ }
+
+ @Override
public void emitInterface(IInterfaceNode node)
{
ICompilerProject project = getWalker().getProject();
@@ -1260,10 +1283,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
write("_");
}
+ private JSFlexJSDocEmitter docEmitter = null;
+
@Override
public IDocEmitter getDocEmitter()
{
- return new JSFlexJSDocEmitter(this);
+ if (docEmitter == null)
+ docEmitter = new JSFlexJSDocEmitter(this);
+ return docEmitter;
}
@Override
@@ -1744,4 +1771,5 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
super.emitUnaryOperator(node);
}
+
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e7f31d1c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
index 242cc4e..8986fa4 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
@@ -455,7 +455,7 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
return false;
}
- private String convertASTypeToJS(String name, String pname)
+ protected String convertASTypeToJS(String name, String pname)
{
String result = "";