fix inject_html
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/dfa08156 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/dfa08156 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/dfa08156 Branch: refs/heads/master Commit: dfa0815652a3172a92a8068075a8fd5067fc1e18 Parents: d66093a Author: Alex Harui <[email protected]> Authored: Mon Jan 2 21:35:27 2017 -0800 Committer: Alex Harui <[email protected]> Committed: Mon Jan 2 21:35:27 2017 -0800 ---------------------------------------------------------------------- .../apache/flex/compiler/clients/MXMLJSC.java | 4 - .../codegen/js/flexjs/JSFlexJSDocEmitter.java | 20 +++-- .../internal/codegen/js/jx/ClassEmitter.java | 7 +- .../codegen/js/flexjs/TestFlexJSEmitter.java | 79 +++++++++++++++++++- .../js/flexjs/TestFlexJSExpressions.java | 1 - 5 files changed, 97 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dfa08156/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java index 54b1bad..bb10a06 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java @@ -152,7 +152,6 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider, } public static JSOutputType jsOutputType; - public static boolean keepASDoc; @Override public String getName() @@ -305,9 +304,6 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider, { final boolean continueCompilation = configure(args); - // ToDo (erikdebruin): use JSSharedData for globals ... -// keepASDoc = ((JSGoogConfiguration) config).getKeepASDoc(); - /* if (outProblems != null && !config.isVerbose()) JSSharedData.STDOUT = JSSharedData.STDERR = null;*/ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dfa08156/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java index 71306d4..2c49b25 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java @@ -39,6 +39,7 @@ import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens; import org.apache.flex.compiler.internal.codegen.js.JSSessionModel; import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter; import org.apache.flex.compiler.internal.codegen.js.jx.BindableEmitter; +import org.apache.flex.compiler.internal.projects.FlexJSProject; import org.apache.flex.compiler.internal.scopes.ASScope; import org.apache.flex.compiler.projects.ICompilerProject; import org.apache.flex.compiler.tree.as.IDefinitionNode; @@ -105,6 +106,9 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter @Override public void emitMethodDoc(IFunctionNode node, ICompilerProject project) { + FlexJSProject fjp = (FlexJSProject)project; + boolean keepASDoc = fjp.config != null && fjp.config.getKeepASDoc(); + coercionList = null; ignoreList = null; emitStringConversions = true; @@ -120,7 +124,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter if (node.isConstructor()) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); @@ -192,7 +196,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter String ns = node.getNamespace(); if (ns != null) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) { String docText = asDoc.commentNoEnd(); String keepToken = JSFlexJSEmitterTokens.EMIT_COERCION @@ -224,7 +228,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter { if (!hasDoc) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); @@ -253,7 +257,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter { if (!hasDoc) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); @@ -275,7 +279,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter { if (!hasDoc) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); @@ -337,6 +341,8 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter public void emitInterfaceMemberDoc(IDefinitionNode node, ICompilerProject project) { + FlexJSProject fjp = (FlexJSProject)project; + boolean keepASDoc = fjp.config != null && fjp.config.getKeepASDoc(); boolean hasDoc = false; ASDocComment asDoc = (ASDocComment) ((IFunctionNode) node) @@ -345,7 +351,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter String returnType = ((IFunctionNode) node).getReturnType(); if (returnType != "" && returnType != ASEmitterTokens.VOID.getToken()) // has return { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); @@ -363,7 +369,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter { if (!hasDoc) { - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) write(changeAnnotations(asDoc.commentNoEnd())); else begin(); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dfa08156/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java index 5cb397c..5a3dcc3 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java @@ -31,6 +31,7 @@ import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter; import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens; import org.apache.flex.compiler.internal.codegen.js.utils.DocEmitterUtils; import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils; +import org.apache.flex.compiler.internal.projects.FlexJSProject; import org.apache.flex.compiler.internal.tree.as.IdentifierNode; import org.apache.flex.compiler.tree.ASTNodeID; import org.apache.flex.compiler.tree.as.IASNode; @@ -53,13 +54,17 @@ public class ClassEmitter extends JSSubEmitter implements @Override public void emit(IClassNode node) { + boolean keepASDoc = false; + FlexJSProject project = (FlexJSProject)getEmitter().getWalker().getProject(); + keepASDoc = project.config != null && project.config.getKeepASDoc(); + getModel().pushClass(node.getDefinition()); // TODO (mschmalle) will remove this cast as more things get abstracted JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter(); ASDocComment asDoc = (ASDocComment) node.getASDocComment(); - if (asDoc != null && MXMLJSC.keepASDoc) + if (asDoc != null && keepASDoc) DocEmitterUtils.loadImportIgnores(fjs, asDoc.commentNoEnd()); IClassDefinition definition = node.getDefinition(); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dfa08156/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java index 62d5265..5d1c5bf 100644 --- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java @@ -21,8 +21,10 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs; import org.apache.flex.compiler.clients.MXMLJSC; import org.apache.flex.compiler.driver.IBackend; +import org.apache.flex.compiler.exceptions.ConfigurationException; import org.apache.flex.compiler.internal.codegen.js.goog.TestGoogEmitter; import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend; +import org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration; import org.apache.flex.compiler.internal.parsing.as.FlexJSASDocDelegate; import org.apache.flex.compiler.internal.projects.FlexJSProject; import org.apache.flex.compiler.tree.as.IFileNode; @@ -254,6 +256,74 @@ public class TestFlexJSEmitter extends TestGoogEmitter "};\n"); } + @Test + public void testInjectHTML() + { + String code = "package com.example.components {\n" + + "public class TestClass {" + + "/**\n" + + " * <inject_html>\n" + + " * This will be injected.\n" + + " * </inject_html>\n" + + " */\n" + + "public function TestClass() { } } }"; + IFileNode node = compileAS(code); + asBlockWalker.visitFile(node); + assertOutWithMetadata("/**\n" + + " * com.example.components.TestClass\n" + + " *\n" + + " * @fileoverview\n" + + " *\n" + + " * @suppress {checkTypes|accessControls}\n" + + " */\n" + + "\n" + + "goog.provide('com.example.components.TestClass');\n" + + "\n" + + "\n" + + "\n" + + "/**\n" + + " * <inject_html>\n" + + " * This will be injected.\n" + + " * </inject_html>\n" + + " * @constructor\n" + + " */\n" + + "com.example.components.TestClass = function() {\n" + + "};\n" + + "\n" + + "\n" + + "/**\n" + + " * Metadata\n" + + " *\n" + + " * @type {Object.<string, Array.<Object>>}\n" + + " */\n" + + "com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'com.example.components.TestClass', kind: 'class' }] };\n" + + "\n" + + "\n" + + "/**\n" + + " * Prevent renaming of class. Needed for reflection.\n" + + " */\n" + + "goog.exportSymbol('com.example.components.TestClass', com.example.components.TestClass);\n" + + "\n" + + "\n" + + "\n" + + "/**\n" + + " * Reflection\n" + + " *\n" + + " * @return {Object.<string, Function>}\n" + + " */\n" + + "com.example.components.TestClass.prototype.FLEXJS_REFLECTION_INFO = function () {\n" + + " return {\n" + + " variables: function () {return {};},\n" + + " accessors: function () {return {};},\n" + + " methods: function () {\n" + + " return {\n" + + " 'TestClass': { type: '', declaredBy: 'com.example.components.TestClass'}\n" + + " };\n" + + " }\n" + + " };\n" + + "};\n"); + } + @Override @Test @@ -343,7 +413,14 @@ public class TestFlexJSEmitter extends TestGoogEmitter { super.addDependencies(); workspace.setASDocDelegate(new FlexJSASDocDelegate()); - MXMLJSC.keepASDoc = true; + if (project.config == null) + project.config = new JSGoogConfiguration(); + try { + project.config.setKeepASDoc(null, true); + } catch (ConfigurationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dfa08156/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java index 29c6ff6..4791f1e 100644 --- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java @@ -59,7 +59,6 @@ public class TestFlexJSExpressions extends TestGoogExpressions // TODO Auto-generated catch block e.printStackTrace(); } - MXMLJSC.keepASDoc = true; ((FlexJSProject)project).config = config; super.setUp(); }
