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();
     }

Reply via email to