You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Piotr Zarzycki <pi...@gmail.com> on 2017/08/12 14:54:39 UTC

Re: [1/2] git commit: [flex-falcon] [refs/heads/develop] - upgrade to Google Closure Compiler 20170626. They deprecated a lot of APIs so lots of changes were required. The primary change is that GCC is being more careful about checking that types match in

Hi Alex,

I'm wondering why you have switched to version "v20170626" instead of
newest "v20170806" ?

Thanks,
Piotr

2017-08-12 5:55 GMT+02:00 <ah...@apache.org>:

> Repository: flex-falcon
> Updated Branches:
>   refs/heads/develop 8d7e14740 -> 207a95872
>
>
> upgrade to Google Closure Compiler 20170626.  They deprecated a lot of
> APIs so lots of changes were required.  The primary change is that GCC is
> being more careful about checking that types match in the superclasses, so
> that required adding @type to the accessors
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/6331b80d
> Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/6331b80d
> Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/6331b80d
>
> Branch: refs/heads/develop
> Commit: 6331b80de71706429d3a73d3d103537efdd0943e
> Parents: 8d7e147
> Author: Alex Harui <ah...@apache.org>
> Authored: Thu Aug 10 22:48:16 2017 -0700
> Committer: Alex Harui <ah...@apache.org>
> Committed: Thu Aug 10 22:48:16 2017 -0700
>
> ----------------------------------------------------------------------
>  .../externals/pass/AbstractCompilerPass.java    |  2 +-
>  .../codegen/externals/pass/AddMemberPass.java   |  2 +-
>  .../externals/pass/CollectTypesPass.java        |  2 +-
>  .../externals/pass/NamespaceResolutionPass.java |  2 +-
>  .../externals/pass/ReferenceCompiler.java       |  5 ++-
>  .../internal/codegen/js/JSSessionModel.java     |  2 +
>  .../codegen/js/goog/JSGoogDocEmitter.java       |  7 +++-
>  .../internal/codegen/js/goog/JarSourceFile.java |  5 ---
>  .../internal/codegen/js/jx/AccessorEmitter.java | 44 ++++++++++++++------
>  compiler-jx/src/main/resources/downloads.xml    |  4 +-
>  .../codegen/externals/TestExternChrome.java     |  2 +-
>  .../js/flexjs/TestFlexJSAccessorMembers.java    | 24 +++++------
>  .../codegen/js/flexjs/TestFlexJSAccessors.java  | 14 +++----
>  .../codegen/js/flexjs/TestFlexJSClass.java      | 14 +++----
>  .../js/flexjs/TestFlexJSExpressions.java        |  2 +-
>  .../codegen/js/flexjs/TestFlexJSPackage.java    |  4 +-
>  .../flexjs/files/MyInitialView_result.js        | 16 +++++--
>  .../flexjs/files/models/MyModel_result.js       | 12 ++++--
>  .../flexjs/projects/super/Base_result.js        |  4 +-
>  .../flexjs/projects/super/Super_result.js       |  4 +-
>  20 files changed, 105 insertions(+), 66 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AbstractCompilerPass.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AbstractCompilerPass.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AbstractCompilerPass.java
> index 9903fc2..0bf5966 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AbstractCompilerPass.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AbstractCompilerPass.java
> @@ -52,7 +52,7 @@ public abstract class AbstractCompilerPass implements
> CompilerPass, Callback
>      public void process(Node externs, Node root)
>      {
>          //NodeTraversal.traverse(compiler, root, this);
> -        NodeTraversal.traverseRoots(compiler, this, externs, root);
> +        NodeTraversal.traverseRootsEs6(compiler, this, externs, root);
>      }
>
>      protected void log(Node n)
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AddMemberPass.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AddMemberPass.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AddMemberPass.java
> index 732b9e9..64fc9a9 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AddMemberPass.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/AddMemberPass.java
> @@ -38,7 +38,7 @@ public class AddMemberPass extends AbstractCompilerPass
>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>              Node parent)
>      {
> -        return n.isBlock() || n.isScript();
> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>      }
>
>      @Override
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/CollectTypesPass.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/CollectTypesPass.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/CollectTypesPass.java
> index 44a9cc4..81e2ae2 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/CollectTypesPass.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/CollectTypesPass.java
> @@ -37,7 +37,7 @@ public class CollectTypesPass extends
> AbstractCompilerPass
>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>              Node parent)
>      {
> -        return n.isBlock() || n.isScript();
> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>      }
>
>      @Override
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/NamespaceResolutionPass.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/NamespaceResolutionPass.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/NamespaceResolutionPass.java
> index 6270227..8a8ec24 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/NamespaceResolutionPass.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/NamespaceResolutionPass.java
> @@ -42,7 +42,7 @@ public class NamespaceResolutionPass extends
> AbstractCompilerPass
>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>              Node parent)
>      {
> -        return n.isBlock() || n.isScript();
> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>      }
>
>      @Override
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/ReferenceCompiler.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/ReferenceCompiler.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/ReferenceCompiler.java
> index e941944..b2b6bdc 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/ReferenceCompiler.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/externals/pass/ReferenceCompiler.java
> @@ -32,6 +32,7 @@ import org.apache.flex.compiler.
> internal.codegen.externals.reference.ReferenceMo
>  import com.google.javascript.jscomp.*;
>  import com.google.javascript.jscomp.Compiler;
>  import com.google.javascript.jscomp.CompilerOptions.LanguageMode;
> +import com.google.javascript.jscomp.parsing.Config;
>
>  public class ReferenceCompiler
>  {
> @@ -67,10 +68,10 @@ public class ReferenceCompiler
>          options.setLineLengthThreshold(80);
>          options.setPreferSingleQuotes(true);
>          options.setIdeMode(true);
> -        options.setParseJsDocDocumentation(true);
> +        options.setParseJsDocDocumentation(Config.JsDocParsing.INCLUDE_
> DESCRIPTIONS_NO_WHITESPACE);
>          options.setExternExports(false);
>          options.setExtraAnnotationNames(Arrays.asList(asdocTags));
> -        options.setLanguageIn(LanguageMode.ECMASCRIPT6_STRICT);
> +        options.setLanguageIn(LanguageMode.ECMASCRIPT_2015);
>          options.setLanguageIn(LanguageMode.ECMASCRIPT5_STRICT);
>
>          options.addCustomPass(CustomPassExecutionTime.BEFORE_OPTIMIZATIONS,
> new NamespaceResolutionPass(model,
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/JSSessionModel.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/JSSessionModel.java b/compiler-jx/src/main/java/
> org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
> index 3ace9e5..8ceb44d 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/JSSessionModel.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/JSSessionModel.java
> @@ -26,6 +26,7 @@ import java.util.List;
>  import java.util.Stack;
>
>  import org.apache.flex.compiler.definitions.IClassDefinition;
> +import org.apache.flex.compiler.definitions.ITypeDefinition;
>  import org.apache.flex.compiler.tree.as.IFunctionNode;
>  import org.apache.flex.compiler.tree.as.IGetterNode;
>  import org.apache.flex.compiler.tree.as.ISetterNode;
> @@ -47,6 +48,7 @@ public class JSSessionModel
>      {
>          public IGetterNode getter;
>          public ISetterNode setter;
> +        public ITypeDefinition type;
>      }
>
>      public static class BindableVarInfo
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JSGoogDocEmitter.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JSGoogDocEmitter.java
> b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JSGoogDocEmitter.java
> index cd57e7a..332bc17 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JSGoogDocEmitter.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JSGoogDocEmitter.java
> @@ -469,6 +469,11 @@ public class JSGoogDocEmitter extends JSDocEmitter
> implements IJSGoogDocEmitter
>
>      protected String convertASTypeToJS(String name, String pname)
>      {
> +       return convertASTypeToJSType(name, pname);
> +    }
> +
> +    public static String convertASTypeToJSType(String name, String pname)
> +    {
>          String result = "";
>
>          if (name.equals(""))
> @@ -488,7 +493,7 @@ public class JSGoogDocEmitter extends JSDocEmitter
> implements IJSGoogDocEmitter
>          {
>                 // is a vector so convert the element type
>                 String elementType = name.substring(8, name.length() - 1);
> -               elementType = convertASTypeToJS(elementType, pname);
> +               elementType = convertASTypeToJSType(elementType, pname);
>                 name = "Vector.<" + elementType + ">";
>          }
>          IASGlobalFunctionConstants.BuiltinType[] builtinTypes =
> IASGlobalFunctionConstants.BuiltinType
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JarSourceFile.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JarSourceFile.java b/compiler-jx/src/main/java/
> org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
> index 5155aa0..ee0a89b 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JarSourceFile.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/goog/JarSourceFile.java
> @@ -54,11 +54,6 @@ public class JarSourceFile extends SourceFile {
>      }
>
>      @Override
> -    public CharSource getCodeCharSource() {
> -        return CharSource.wrap(code);
> -    }
> -
> -    @Override
>      public Reader getCodeReader() throws IOException {
>          return new StringReader(code);
>      }
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/jx/AccessorEmitter.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/
> org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
> index c060381..19c16ae 100644
> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/jx/AccessorEmitter.java
> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
> internal/codegen/js/jx/AccessorEmitter.java
> @@ -31,6 +31,7 @@ import org.apache.flex.compiler.definitions.
> IAccessorDefinition;
>  import org.apache.flex.compiler.definitions.IClassDefinition;
>  import org.apache.flex.compiler.definitions.IFunctionDefinition;
>  import org.apache.flex.compiler.definitions.INamespaceDefinition;
> +import org.apache.flex.compiler.definitions.IParameterDefinition;
>  import org.apache.flex.compiler.definitions.ITypeDefinition;
>  import org.apache.flex.compiler.definitions.metadata.IMetaTag;
>  import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
> @@ -40,7 +41,9 @@ import org.apache.flex.compiler.internal.codegen.js.
> JSSubEmitter;
>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
> JSFlexJSDocEmitter;
>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
> JSFlexJSEmitter;
>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
> JSFlexJSEmitterTokens;
> +import org.apache.flex.compiler.internal.codegen.js.goog.
> JSGoogDocEmitter;
>  import org.apache.flex.compiler.internal.codegen.js.goog.
> JSGoogEmitterTokens;
> +import org.apache.flex.compiler.internal.projects.FlexJSProject;
>  import org.apache.flex.compiler.internal.semantics.SemanticUtils;
>  import org.apache.flex.compiler.internal.tree.as.FunctionNode;
>  import org.apache.flex.compiler.internal.tree.as.SetterNode;
> @@ -77,6 +80,10 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>      {
>          // TODO (mschmalle) will remove this cast as more things get
> abstracted
>          JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
> +        FlexJSProject project = (FlexJSProject)getWalker().getProject();
> +        boolean emitExports = true;
> +        if (project != null && project.config != null)
> +               emitExports = project.config.getExportPublicSymbols();
>
>          if (!getModel().getPropertyMap().isEmpty())
>          {
> @@ -98,7 +105,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)getterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)getterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -161,7 +167,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)setterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)setterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -276,12 +281,17 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                  PropertyNodes p = getModel().getPropertyMap().
> get(propName);
>                  IGetterNode getterNode = p.getter;
>                  ISetterNode setterNode = p.setter;
> -                writeNewline("/** @export */");
> +               writeNewline("/**");
> +                if (emitExports)
> +                       writeNewline("  * @export");
> +                if (p.type != null)
> +                       writeNewline("  * @type {"+JSGoogDocEmitter.
> convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) + "}
> */");
> +                else
> +                       writeNewline("  */");
>                  FunctionNode fnNode = getterNode != null ? (FunctionNode)
> getterNode : (FunctionNode) setterNode;
>                  if (fjs.isCustomNamespace(fnNode))
>                  {
>                                 INamespaceDecorationNode ns =
> fnNode.getActualNamespaceNode();
> -                    ICompilerProject project = getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -304,7 +314,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)getterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)getterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -338,7 +347,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                          if (fjs.isCustomNamespace((
> FunctionNode)setterNode))
>                          {
>                                         INamespaceDecorationNode ns =
> ((FunctionNode)setterNode).getActualNamespaceNode();
> -                            ICompilerProject project =
> getWalker().getProject();
>                                         INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                         fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                         String s = nsDef.getURI();
> @@ -367,7 +375,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)setterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)setterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -402,7 +409,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                          if (fjs.isCustomNamespace((
> FunctionNode)getterNode))
>                          {
>                                         INamespaceDecorationNode ns =
> ((FunctionNode)getterNode).getActualNamespaceNode();
> -                            ICompilerProject project =
> getWalker().getProject();
>                                         INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                         fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                         String s = nsDef.getURI();
> @@ -440,7 +446,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)getterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)getterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -471,7 +476,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)setterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)setterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -526,7 +530,13 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                          propName);
>                  IGetterNode getterNode = p.getter;
>                  ISetterNode setterNode = p.setter;
> -                writeNewline("/** @export */");
> +               writeNewline("/**");
> +                if (emitExports)
> +                       writeNewline("  * @export");
> +                if (p.type != null)
> +                       writeNewline("  * @type {"+JSGoogDocEmitter.
> convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) + "}
> */");
> +                else
> +                       writeNewline("  */");
>                  write(propName);
>                  write(ASEmitterTokens.COLON);
>                  write(ASEmitterTokens.SPACE);
> @@ -541,7 +551,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)getterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)getterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -566,7 +575,6 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>                      if (fjs.isCustomNamespace((FunctionNode)setterNode))
>                      {
>                                 INamespaceDecorationNode ns =
> ((FunctionNode)setterNode).getActualNamespaceNode();
> -                        ICompilerProject project =
> getWalker().getProject();
>                                 INamespaceDefinition nsDef =
> (INamespaceDefinition)ns.resolve(project);
>                                 fjs.formatQualifiedName(nsDef.getQualifiedName());
> // register with used names
>                                 String s = nsDef.getURI();
> @@ -605,6 +613,9 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>              map.put(name, p);
>          }
>          p.getter = node;
> +        ICompilerProject project = (ICompilerProject)getWalker().
> getProject();
> +        if (project != null)
> +               p.type = node.getDefinition().resolveReturnType(project);
>          FunctionNode fn = (FunctionNode) node;
>          fn.parseFunctionBody(fjs.getProblems());
>      }
> @@ -628,6 +639,13 @@ public class AccessorEmitter extends JSSubEmitter
> implements
>              map.put(name, p);
>          }
>          p.setter = node;
> +        ICompilerProject project = (ICompilerProject)getWalker().
> getProject();
> +        if (project != null)
> +        {
> +               IFunctionDefinition def = node.getDefinition();
> +               IParameterDefinition[] params = def.getParameters();
> +               p.type = params[0].resolveType(project);
> +        }
>          FunctionNode fn = (FunctionNode) node;
>          fn.parseFunctionBody(fjs.getProblems());
>
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/main/resources/downloads.xml
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/main/resources/downloads.xml
> b/compiler-jx/src/main/resources/downloads.xml
> index 9885ede..5e78c35 100644
> --- a/compiler-jx/src/main/resources/downloads.xml
> +++ b/compiler-jx/src/main/resources/downloads.xml
> @@ -80,7 +80,7 @@
>      </antcall>
>
>      <!--  closure -->
> -    <property name="closure.version" value="20161201"/>
> +    <property name="closure.version" value="20170626"/>
>      <property name="closure.name" value="closure-compiler-v${
> closure.version}"/>
>      <property name="closure.dest.name" value="compiler"/>
>      <property name="closure.dest.folder" value="google/closure-
> compiler"/>
> @@ -90,7 +90,7 @@
>        <param name="src.server" value="http://dl.google.com"/>
>        <param name="src.folder" value="closure-compiler"/>
>        <param name="src.filename" value="compiler-${closure.
> version}.zip"/>
> -      <param name="src.checksum" value="bcd640e9c9f756df4117af2066621f
> 89"/>
> +      <param name="src.checksum" value="c565b5a1e12aefa5968b42ea83ea6c
> 28"/>
>      </antcall>
>
>      <!--  commons-io -->
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/externals/TestExternChrome.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/externals/TestExternChrome.java
> b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/externals/TestExternChrome.java
> index d2582bb..9aafd07 100644
> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/externals/TestExternChrome.java
> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/externals/TestExternChrome.java
> @@ -67,7 +67,7 @@ public class TestExternChrome extends ExternalsTestBase
>                  "ChromeLoadTimes",
>                  "ChromeCsiInfo" };
>
> -        assertEquals(301, model.getClasses().size());
> +        assertEquals(322, model.getClasses().size());
>          for (String className : classes)
>          {
>              assertTrue(model.hasClass(className));
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
> b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
> index 4070eb8..3950cc3 100644
> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
> @@ -39,7 +39,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.get__foo =
> function() {\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
> FalconTest_A.prototype.get__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>      }
>
>      @Override
> @@ -51,7 +51,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.get__foo =
> function() {\n  return -1;\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
> FalconTest_A.prototype.get__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>      }
>
>      @Override
> @@ -63,7 +63,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.get__foo =
> function() {\n  return -1;\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
> FalconTest_A.prototype.get__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>      }
>
>      @Override
> @@ -75,7 +75,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n" +
>                                 "B.prototype.get__foo = function() {\n
> return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
> B.prototype.get__foo}}\n);");
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget:
> B.prototype.get__foo}}\n);");
>      }
>
>      @Test
> @@ -86,7 +86,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n" +
>                                 "B.prototype.get__foo = function() {\n
> return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
> B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget:
> B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
>      }
>
>      @Override
> @@ -98,7 +98,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.get__foo = function() {\n
> return -1;\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A, /** @lends
> {FalconTest_A} */ {\n/** @export */\nfoo: {\nget:
> FalconTest_A.get__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A, /** @lends
> {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget:
> FalconTest_A.get__foo}}\n);");
>      }
>
>      @Override
> @@ -110,7 +110,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.set__foo =
> function(value) {\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
> FalconTest_A.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>      }
>
>      @Override
> @@ -122,7 +122,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.set__foo =
> function(value) {\n  fetch('haai');\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
> FalconTest_A.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>      }
>
>      @Override
> @@ -134,7 +134,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.prototype.set__foo =
> function(value) {\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
> FalconTest_A.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>      }
>
>      @Override
> @@ -146,7 +146,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n" +
>                                 "B.prototype.set__foo = function(value)
> {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\nfoo: {\nset:
> B.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset:
> B.prototype.set__foo}}\n);");
>      }
>
>      @Override
> @@ -158,7 +158,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>                                 "FalconTest_A.set__foo = function(value)
> {\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A, /** @lends
> {FalconTest_A} */ {\n/** @export */\nfoo: {\nset:
> FalconTest_A.set__foo}}\n);");
> +                       "Object.defineProperties(FalconTest_A, /** @lends
> {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset:
> FalconTest_A.set__foo}}\n);");
>      }
>
>      @Test
> @@ -169,7 +169,7 @@ public class TestFlexJSAccessorMembers extends
> TestGoogAccessorMembers
>          asBlockWalker.visitClass(node);
>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n" +
>                                 "B.prototype.set__foo = function(value)
> {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
> A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget:
> A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
>      }
>
>      @Override
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessors.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessors.java
> b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessors.java
> index 93a6e09..32d7f58 100644
> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessors.java
> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSAccessors.java
> @@ -49,7 +49,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
> = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */
> theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n
> */\nFalconTest_A.prototype._label;\n\n\n" +
>                         "FalconTest_A.prototype.get__label = function()
> {\n  return this._label;\n};\n\n\n" +
>                         "FalconTest_A.prototype.set__label =
> function(value) {\n  this._label = value;\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {string} */\n" +
>                         "label: {\nget: FalconTest_A.prototype.get__label,\nset:
> FalconTest_A.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
> @@ -64,7 +64,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nB = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
> */\nB.prototype.doStuff = function() {\n  this.label = this.label +
> 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n *
> @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
>                                 "B.prototype.get__label = function() {\n
> return this._label;\n};\n\n\n" +
>                                 "B.prototype.set__label = function(value)
> {\n  this._label = value;\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\nlabel: {\n" +
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
>                         "get: B.prototype.get__label,\nset:
> B.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
> @@ -79,7 +79,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
> = function() {\n  this.label = this.label + 'bye';\n  var /** @type
> {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type
> {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
>                                 "FalconTest_A.prototype.get__label =
> function() {\n  return this._label;\n};\n\n\n" +
>                                 "FalconTest_A.prototype.set__label =
> function(value) {\n  this._label = value;\n};\n\n\n" +
> -                               "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\n" +
> +                               "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {string} */\nlabel: {\n" +
>                                 "get: FalconTest_A.prototype.get__label,\nset:
> FalconTest_A.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
> @@ -94,7 +94,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nB = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
> */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var
> /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n *
> @type {string}\n */\nB.prototype._label;\n\n\n" +
>                                 "B.prototype.get__label = function() {\n
> return this._label;\n};\n\n\n" +
>                                 "B.prototype.set__label = function(value)
> {\n  this._label = value;\n};\n\n\n" +
> -                               "Object.defineProperties(B.prototype, /**
> @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
> +                               "Object.defineProperties(B.prototype, /**
> @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel:
> {\n" +
>                                 "get: B.prototype.get__label,\nset:
> B.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
> @@ -109,7 +109,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nB = function()
> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
> */\nB.prototype.doStuff = function() {\n  var /** @type {string} */
> theLabel = this[\"http://www.adobe.com/2006/actionscript/flash/proxy:
> :label\"];\n  this[\"http://www.adobe.com/2006/actionscript/flash/proxy:
> :label\"] = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n
> */\nB.prototype._label;\n\n\n" +
>                                 "B.prototype[\"http://www.
> adobe.com/2006/actionscript/flash/proxy::get__label\"] = function() {\n
> return this._label;\n};\n\n\n" +
>                                 "B.prototype[\"http://www.
> adobe.com/2006/actionscript/flash/proxy::set__label\"] = function(value)
> {\n  this._label = value;\n};\n\n\n" +
> -                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/** @export */\n\"http://www.adobe.com/
> 2006/actionscript/flash/proxy::label\": {\nget: B.prototype[\"http://www.
> adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset:
> B.prototype[\"http://www.adobe.com/2006/actionscript/
> flash/proxy::set__label\"]}}\n);";
> +                       "Object.defineProperties(B.prototype, /** @lends
> {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n\"
> http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget:
> B.prototype[\"http://www.adobe.com/2006/actionscript/
> flash/proxy::get__label\"],\nset: B.prototype[\"http://www.
> adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
>          assertOut(expected);
>      }
>
> @@ -126,7 +126,7 @@ public class TestFlexJSAccessors extends ASTestBase
>                         "FalconTest_A.prototype.set__label =
> function(value) {\nvar oldValue = this.get__label();\nif (oldValue !=
> value) {\nthis.bindable__set__label(value);\n" +
>                         "    this.dispatchEvent(org.apache.
> flex.events.ValueChangeEvent.createUpdateEvent(\n" +
>                         "         this, \"label\", oldValue,
> value));\n}\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {string} */\n" +
>                         "label: {\nget: FalconTest_A.prototype.get__label,\nset:
> FalconTest_A.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
> @@ -141,7 +141,7 @@ public class TestFlexJSAccessors extends ASTestBase
>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
> = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */
> theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n
> */\nFalconTest_A.prototype._label;\n\n\n" +
>                                 "FalconTest_A.prototype.get__label =
> function() {\n  return this._label;\n};\n\n\n" +
>                                 "FalconTest_A.prototype.set__label =
> function(value) {\n  this._label = value;\n};\n\n\n" +
> -                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
> +                       "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
> {string} */\n" +
>                         "label: {\nget: FalconTest_A.prototype.get__label,\nset:
> FalconTest_A.prototype.set__label}}\n);";
>          assertOut(expected);
>      }
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSClass.java
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSClass.java
> b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSClass.java
> index fbb1c41..83d727f 100644
> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSClass.java
> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
> internal/codegen/js/flexjs/TestFlexJSClass.java
> @@ -180,7 +180,7 @@ public class TestFlexJSClass extends TestGoogClass
>      {
>          IClassNode node = getClassNode("public class B {public function
> B() {}; public function set baz(value:Object):void {}; public function set
> foo(value:Object):void {baz = value;};}");
>          asBlockWalker.visitClass(node);
> -        String expected = "/**\n * @constructor\n */\norg.apache.flex.B =
> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz =
> function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo =
> function(value) {\n  this.baz = value;\n};\n\n\nObject.
> defineProperties(org.apache.flex.B.prototype, /** @lends
> {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset:
> org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset:
> org.apache.flex.B.prototype.set__foo}}\n);";
> +        String expected = "/**\n * @constructor\n */\norg.apache.flex.B =
> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz =
> function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo =
> function(value) {\n  this.baz = value;\n};\n\n\nObject.
> defineProperties(org.apache.flex.B.prototype, /** @lends
> {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * @type {Object}
> */\nbaz: {\nset: org.apache.flex.B.prototype.set__baz},\n/**\n  *
> @export\n  * @type {Object} */\nfoo: {\nset: org.apache.flex.B.prototype.
> set__foo}}\n);";
>          assertOut(expected);
>      }
>
> @@ -189,7 +189,7 @@ public class TestFlexJSClass extends TestGoogClass
>      {
>          IClassNode node = getClassNode("public class B extends A {public
> function B() {}; override public function set foo(value:Object):void
> {super.foo = value;};} class A {public function set foo(value:Object):void
> {}}");
>          asBlockWalker.visitClass(node);
> -        String expected = "/**\n * @constructor\n * @extends
> {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n
> org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B,
> org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo =
> function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, [
> value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype,
> /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset:
> org.apache.flex.B.prototype.set__foo}}\n);";
> +        String expected = "/**\n * @constructor\n * @extends
> {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n
> org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B,
> org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for
> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo =
> function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, [
> value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype,
> /** @lends {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * @type
> {Object} */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
>          assertOut(expected);
>      }
>
> @@ -511,11 +511,11 @@ public class TestFlexJSClass extends TestGoogClass
>                         "org.apache.flex.A.prototype.set__foo5 =
> function(value) {\n};\n\n\n" +
>                         "org.apache.flex.A.prototype[\"
> http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"] =
> function() {\n  return null;\n};\n\n\n" +
>                         "org.apache.flex.A.prototype[\"
> http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"] =
> function(value) {\n};\n\n\n" +
> -                       "Object.defineProperties(org.apache.flex.A.prototype,
> /** @lends {org.apache.flex.A.prototype} */ {\n/** @export */\n" +
> -                           "foo1: {\nget: org.apache.flex.A.prototype.get__foo1,\nset:
> org.apache.flex.A.prototype.set__foo1},\n/** @export */\n" +
> -                           "foo2: {\nget: org.apache.flex.A.prototype.get__foo2,\nset:
> org.apache.flex.A.prototype.set__foo2},\n/** @export */\n" +
> -                           "foo3: {\nget: org.apache.flex.A.prototype.get__foo3,\nset:
> org.apache.flex.A.prototype.set__foo3},\n/** @export */\n" +
> -                           "foo5: {\nget: org.apache.flex.A.prototype.get__foo5,\nset:
> org.apache.flex.A.prototype.set__foo5},\n/** @export */\n" +
> +                       "Object.defineProperties(org.apache.flex.A.prototype,
> /** @lends {org.apache.flex.A.prototype} */ {\n/**\n  * @export\n  * @type
> {Object} */\n" +
> +                           "foo1: {\nget: org.apache.flex.A.prototype.get__foo1,\nset:
> org.apache.flex.A.prototype.set__foo1},\n/**\n  * @export\n  * @type
> {Object} */\n" +
> +                           "foo2: {\nget: org.apache.flex.A.prototype.get__foo2,\nset:
> org.apache.flex.A.prototype.set__foo2},\n/**\n  * @export\n  * @type
> {Object} */\n" +
> +                           "foo3: {\nget: org.apache.flex.A.prototype.get__foo3,\nset:
> org.apache.flex.A.prototype.set__foo3},\n/**\n  * @export\n  * @type
> {Object} */\n" +
> +                           "foo5: {\nget: org.apache.flex.A.prototype.get__foo5,\nset:
> org.apache.flex.A.prototype.set__foo5},\n/**\n  * @export\n  * @type
> {Object} */\n" +
>                             "\"http://www.adobe.com/2006/
> actionscript/flash/proxy::foo6\": {\nget: org.apache.flex.A.prototype[\"
> http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"],\n" +
>
>
>   "set: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/
> actionscript/flash/proxy::set__foo6\"]}}\n);");
>      }
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/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 dc28b6b..8b93413 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
> @@ -102,7 +102,7 @@ public class TestFlexJSExpressions extends
> TestGoogExpressions
>                           "  return FalconTest_A.superClass_.
> isDefaultPrevented.apply(this);\n" +
>                           "};\n\n\n" +
>                           "Object.defineProperties(FalconTest_A.prototype,
> /** @lends {FalconTest_A.prototype} */ {\n" +
> -                         "/** @export */\n" +
> +                         "/**\n  * @export\n  * @type {boolean} */\n" +
>                           "defaultPrevented: {\nget:
> FalconTest_A.prototype.get__defaultPrevented}}\n);");
>      }
>
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/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 360b875..86022ff 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
> @@ -794,7 +794,7 @@ public class TestFlexJSPackage extends TestGoogPackage
>                           "\n" +
>                           "\n" +
>                           "Object.defineProperties(foo.bar.baz.A.prototype,
> /** @lends {foo.bar.baz.A.prototype} */ {\n" +
> -                  "/** @export */\n" +
> +                  "/**\n  * @export\n  * @type {string} */\n" +
>                    "myString: {\n" +
>                    "get: foo.bar.baz.A.prototype.get__myString,\n" +
>                    "set: foo.bar.baz.A.prototype.set__myString}}\n" +
> @@ -850,7 +850,7 @@ public class TestFlexJSPackage extends TestGoogPackage
>                           "\n" +
>                           "\n" +
>                           "Object.defineProperties(foo.
> bar.baz.A.InternalClass.prototype, /** @lends
> {foo.bar.baz.A.InternalClass.prototype} */ {\n" +
> -                  "/** @export */\n" +
> +                  "/**\n  * @export\n  * @type {string} */\n" +
>                    "someString: {\n" +
>                    "get: foo.bar.baz.A.InternalClass.prototype.get__someString,\n"
> +
>                    "set: foo.bar.baz.A.InternalClass.prototype.set__someString}}\n"
> +
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/resources/flexjs/files/
> MyInitialView_result.js
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
> b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
> index 7fe3836..ae55d78 100644
> --- a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
> +++ b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
> @@ -269,16 +269,24 @@ MyInitialView.prototype.get__comboBoxValue =
> function() {
>
>
>  Object.defineProperties(MyInitialView.prototype, /** @lends
> {MyInitialView.prototype} */ {
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  symbol: {
>  get: MyInitialView.prototype.get__symbol},
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  city: {
>  get: MyInitialView.prototype.get__city},
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  inputText: {
>  get: MyInitialView.prototype.get__inputText},
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  comboBoxValue: {
>  get: MyInitialView.prototype.get__comboBoxValue}}
>  );/**
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/resources/flexjs/files/models/
> MyModel_result.js
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
> b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
> index ab547d7..041d254 100644
> --- a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
> +++ b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
> @@ -90,14 +90,20 @@ models.MyModel.prototype.get__cities = function() {
>
>
>  Object.defineProperties(models.MyModel.prototype, /** @lends
> {models.MyModel.prototype} */ {
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  labelText: {
>  get: models.MyModel.prototype.get__labelText,
>  set: models.MyModel.prototype.set__labelText},
> -/** @export */
> +/**
> +  * @export
> +  * @type {Array} */
>  strings: {
>  get: models.MyModel.prototype.get__strings},
> -/** @export */
> +/**
> +  * @export
> +  * @type {Array} */
>  cities: {
>  get: models.MyModel.prototype.get__cities}}
>  );
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/resources/flexjs/projects/
> super/Base_result.js
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
> b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
> index 720e39c..3c712ac 100644
> --- a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
> +++ b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
> @@ -54,7 +54,9 @@ Base.prototype.set__text = function(value) {
>
>
>  Object.defineProperties(Base.prototype, /** @lends {Base.prototype} */ {
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  text: {
>  get: Base.prototype.get__text,
>  set: Base.prototype.set__text}}
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/
> 6331b80d/compiler-jx/src/test/resources/flexjs/projects/
> super/Super_result.js
> ----------------------------------------------------------------------
> diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
> b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
> index d77b6b2..53d1d2d 100644
> --- a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
> +++ b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
> @@ -56,7 +56,9 @@ Super.prototype.set__text = function(value) {
>
>
>  Object.defineProperties(Super.prototype, /** @lends {Super.prototype} */
> {
> -/** @export */
> +/**
> +  * @export
> +  * @type {string} */
>  text: {
>  get: Super.prototype.get__text,
>  set: Super.prototype.set__text}}
>
>

Re: [1/2] git commit: [flex-falcon] [refs/heads/develop] - upgrade to Google Closure Compiler 20170626. They deprecated a lot of APIs so lots of changes were required. The primary change is that GCC is being more careful about checking that types match in

Posted by Alex Harui <ah...@adobe.com.INVALID>.
If it works you can change it.

On 8/12/17, 7:58 AM, "piotrz" <pi...@gmail.com> wrote:

>Another question is we have also google closure library where ant always
>download it from master - I see that Maven is taking specific version -
>should I switch to the newest one for that also ?
>
><dependency>
>      <groupId>org.clojure</groupId>
>      <artifactId>google-closure-library</artifactId>
>      <version>0.0-20150902-b129bb9e</version>
>    </dependency>
>
>Thanks,
>Piotr
>
>
>
>-----
>Apache Flex PMC
>piotrzarzycki21@gmail.com
>--
>View this message in context:
>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-fle
>x-development.2333347.n4.nabble.com%2FRe-1-2-git-commit-flex-falcon-refs-h
>eads-develop-upgrade-to-Google-Closure-Compiler-20170626-They-den-tp63822p
>63823.html&data=02%7C01%7C%7Ce15ea38cf5764490c95708d4e192c559%7Cfa7b1b5a7b
>34438794aed2c178decee1%7C0%7C0%7C636381468027171045&sdata=qfxJB7rDNptzmiQX
>yMnyVB9bMLZcBXkF1pYR%2FpgnNrw%3D&reserved=0
>Sent from the Apache Flex Development mailing list archive at Nabble.com.


Re: [1/2] git commit: [flex-falcon] [refs/heads/develop] - upgrade to Google Closure Compiler 20170626. They deprecated a lot of APIs so lots of changes were required. The primary change is that GCC is being more careful about checking that types match in

Posted by piotrz <pi...@gmail.com>.
Another question is we have also google closure library where ant always
download it from master - I see that Maven is taking specific version -
should I switch to the newest one for that also ?

<dependency>
      <groupId>org.clojure</groupId>
      <artifactId>google-closure-library</artifactId>
      <version>0.0-20150902-b129bb9e</version>
    </dependency>

Thanks,
Piotr



-----
Apache Flex PMC
piotrzarzycki21@gmail.com
--
View this message in context: http://apache-flex-development.2333347.n4.nabble.com/Re-1-2-git-commit-flex-falcon-refs-heads-develop-upgrade-to-Google-Closure-Compiler-20170626-They-den-tp63822p63823.html
Sent from the Apache Flex Development mailing list archive at Nabble.com.

Re: [1/2] git commit: [flex-falcon] [refs/heads/develop] - upgrade to Google Closure Compiler 20170626. They deprecated a lot of APIs so lots of changes were required. The primary change is that GCC is being more careful about checking that types match in

Posted by Alex Harui <ah...@adobe.com.INVALID>.
I didn't see binaries for the newer source releae.

On 8/12/17, 7:54 AM, "Piotr Zarzycki" <pi...@gmail.com> wrote:

>Hi Alex,
>
>I' wondering why you have switched to version "v20170626" instead of
>newest "v20170806" ?
>
>Thanks,
>Piotr
>
>2017-08-12 5:55 GMT+02:00 <ah...@apache.org>:
>
>> Repository: flex-falcon
>> Updated Branches:
>>   refs/heads/develop 8d7e14740 -> 207a95872
>>
>>
>> upgrade to Google Closure Compiler 20170626.  They deprecated a lot of
>> APIs so lots of changes were required.  The primary change is that GCC
>>is
>> being more careful about checking that types match in the superclasses,
>>so
>> that required adding @type to the accessors
>>
>>
>> Project: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Frepo&data=02%7C01%7C%7C3b01133
>>76a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63
>>6381465087873859&sdata=zl7h7PszBS6QIjT6kVW8WrFfEBT0td4LtpnhG5Lo7V4%3D&res
>>erved=0
>> Commit: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fcommit%2F6331b80d&data=02%7C01
>>%7C%7C3b0113376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1
>>%7C0%7C0%7C636381465087873859&sdata=dEXwRioCwhhYSYGzGT2Gm91H56OitLWbrZdod
>>q%2FrOQ8%3D&reserved=0
>> Tree: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Ftree%2F6331b80d&data=02%7C01%7
>>C%7C3b0113376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>C0%7C0%7C636381465087873859&sdata=xqFVaScps%2FFRRBvhtx55rejYb3CVBXSNiXjEq
>>qVJ0ec%3D&reserved=0
>> Diff: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fdiff%2F6331b80d&data=02%7C01%7
>>C%7C3b0113376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>C0%7C0%7C636381465087873859&sdata=OemKYpQfqhe6zkFmcES8BVKHYdHcSYxApPvHS26
>>Q2bI%3D&reserved=0
>>
>> Branch: refs/heads/develop
>> Commit: 6331b80de71706429d3a73d3d103537efdd0943e
>> Parents: 8d7e147
>> Author: Alex Harui <ah...@apache.org>
>> Authored: Thu Aug 10 22:48:16 2017 -0700
>> Committer: Alex Harui <ah...@apache.org>
>> Committed: Thu Aug 10 22:48:16 2017 -0700
>>
>> ----------------------------------------------------------------------
>>  .../externals/pass/AbstractCompilerPass.java    |  2 +-
>>  .../codegen/externals/pass/AddMemberPass.java   |  2 +-
>>  .../externals/pass/CollectTypesPass.java        |  2 +-
>>  .../externals/pass/NamespaceResolutionPass.java |  2 +-
>>  .../externals/pass/ReferenceCompiler.java       |  5 ++-
>>  .../internal/codegen/js/JSSessionModel.java     |  2 +
>>  .../codegen/js/goog/JSGoogDocEmitter.java       |  7 +++-
>>  .../internal/codegen/js/goog/JarSourceFile.java |  5 ---
>>  .../internal/codegen/js/jx/AccessorEmitter.java | 44
>>++++++++++++++------
>>  compiler-jx/src/main/resources/downloads.xml    |  4 +-
>>  .../codegen/externals/TestExternChrome.java     |  2 +-
>>  .../js/flexjs/TestFlexJSAccessorMembers.java    | 24 +++++------
>>  .../codegen/js/flexjs/TestFlexJSAccessors.java  | 14 +++----
>>  .../codegen/js/flexjs/TestFlexJSClass.java      | 14 +++----
>>  .../js/flexjs/TestFlexJSExpressions.java        |  2 +-
>>  .../codegen/js/flexjs/TestFlexJSPackage.java    |  4 +-
>>  .../flexjs/files/MyInitialView_result.js        | 16 +++++--
>>  .../flexjs/files/models/MyModel_result.js       | 12 ++++--
>>  .../flexjs/projects/super/Base_result.js        |  4 +-
>>  .../flexjs/projects/super/Super_result.js       |  4 +-
>>  20 files changed, 105 insertions(+), 66 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AbstractCompilerPass.java
>> ---------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AbstractCompilerPass.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AbstractCompilerPass.java
>> index 9903fc2..0bf5966 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AbstractCompilerPass.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AbstractCompilerPass.java
>> @@ -52,7 +52,7 @@ public abstract class AbstractCompilerPass implements
>> CompilerPass, Callback
>>      public void process(Node externs, Node root)
>>      {
>>          //NodeTraversal.traverse(compiler, root, this);
>> -        NodeTraversal.traverseRoots(compiler, this, externs, root);
>> +        NodeTraversal.traverseRootsEs6(compiler, this, externs, root);
>>      }
>>
>>      protected void log(Node n)
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AddMemberPass.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AddMemberPass.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AddMemberPass.java
>> index 732b9e9..64fc9a9 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AddMemberPass.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/AddMemberPass.java
>> @@ -38,7 +38,7 @@ public class AddMemberPass extends
>>AbstractCompilerPass
>>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>>              Node parent)
>>      {
>> -        return n.isBlock() || n.isScript();
>> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>>      }
>>
>>      @Override
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/CollectTypesPass.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/CollectTypesPass.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/CollectTypesPass.java
>> index 44a9cc4..81e2ae2 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/CollectTypesPass.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/CollectTypesPass.java
>> @@ -37,7 +37,7 @@ public class CollectTypesPass extends
>> AbstractCompilerPass
>>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>>              Node parent)
>>      {
>> -        return n.isBlock() || n.isScript();
>> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>>      }
>>
>>      @Override
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/NamespaceResolutionPass.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/NamespaceResolutionPass.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/NamespaceResolutionPass.java
>> index 6270227..8a8ec24 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/NamespaceResolutionPass.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/NamespaceResolutionPass.java
>> @@ -42,7 +42,7 @@ public class NamespaceResolutionPass extends
>> AbstractCompilerPass
>>      public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
>>              Node parent)
>>      {
>> -        return n.isBlock() || n.isScript();
>> +        return n.isRoot() || n.isNormalBlock() || n.isScript();
>>      }
>>
>>      @Override
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/ReferenceCompiler.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/ReferenceCompiler.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/ReferenceCompiler.java
>> index e941944..b2b6bdc 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/ReferenceCompiler.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/externals/pass/ReferenceCompiler.java
>> @@ -32,6 +32,7 @@ import org.apache.flex.compiler.
>> internal.codegen.externals.reference.ReferenceMo
>>  import com.google.javascript.jscomp.*;
>>  import com.google.javascript.jscomp.Compiler;
>>  import com.google.javascript.jscomp.CompilerOptions.LanguageMode;
>> +import com.google.javascript.jscomp.parsing.Config;
>>
>>  public class ReferenceCompiler
>>  {
>> @@ -67,10 +68,10 @@ public class ReferenceCompiler
>>          options.setLineLengthThreshold(80);
>>          options.setPreferSingleQuotes(true);
>>          options.setIdeMode(true);
>> -        options.setParseJsDocDocumentation(true);
>> +        options.setParseJsDocDocumentation(Config.JsDocParsing.INCLUDE_
>> DESCRIPTIONS_NO_WHITESPACE);
>>          options.setExternExports(false);
>>          options.setExtraAnnotationNames(Arrays.asList(asdocTags));
>> -        options.setLanguageIn(LanguageMode.ECMASCRIPT6_STRICT);
>> +        options.setLanguageIn(LanguageMode.ECMASCRIPT_2015);
>>          options.setLanguageIn(LanguageMode.ECMASCRIPT5_STRICT);
>>
>>          
>>options.addCustomPass(CustomPassExecutionTime.BEFORE_OPTIMIZATIONS,
>> new NamespaceResolutionPass(model,
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/JSSessionModel.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/JSSessionModel.java b/compiler-jx/src/main/java/
>> org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
>> index 3ace9e5..8ceb44d 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/JSSessionModel.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/JSSessionModel.java
>> @@ -26,6 +26,7 @@ import java.util.List;
>>  import java.util.Stack;
>>
>>  import org.apache.flex.compiler.definitions.IClassDefinition;
>> +import org.apache.flex.compiler.definitions.ITypeDefinition;
>>  import org.apache.flex.compiler.tree.as.IFunctionNode;
>>  import org.apache.flex.compiler.tree.as.IGetterNode;
>>  import org.apache.flex.compiler.tree.as.ISetterNode;
>> @@ -47,6 +48,7 @@ public class JSSessionModel
>>      {
>>          public IGetterNode getter;
>>          public ISetterNode setter;
>> +        public ITypeDefinition type;
>>      }
>>
>>      public static class BindableVarInfo
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JSGoogDocEmitter.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JSGoogDocEmitter.java
>> b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JSGoogDocEmitter.java
>> index cd57e7a..332bc17 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JSGoogDocEmitter.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JSGoogDocEmitter.java
>> @@ -469,6 +469,11 @@ public class JSGoogDocEmitter extends JSDocEmitter
>> implements IJSGoogDocEmitter
>>
>>      protected String convertASTypeToJS(String name, String pname)
>>      {
>> +       return convertASTypeToJSType(name, pname);
>> +    }
>> +
>> +    public static String convertASTypeToJSType(String name, String
>>pname)
>> +    {
>>          String result = "";
>>
>>          if (name.equals(""))
>> @@ -488,7 +493,7 @@ public class JSGoogDocEmitter extends JSDocEmitter
>> implements IJSGoogDocEmitter
>>          {
>>                 // is a vector so convert the element type
>>                 String elementType = name.substring(8, name.length() -
>>1);
>> -               elementType = convertASTypeToJS(elementType, pname);
>> +               elementType = convertASTypeToJSType(elementType, pname);
>>                 name = "Vector.<" + elementType + ">";
>>          }
>>          IASGlobalFunctionConstants.BuiltinType[] builtinTypes =
>> IASGlobalFunctionConstants.BuiltinType
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JarSourceFile.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JarSourceFile.java b/compiler-jx/src/main/java/
>> org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
>> index 5155aa0..ee0a89b 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JarSourceFile.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/goog/JarSourceFile.java
>> @@ -54,11 +54,6 @@ public class JarSourceFile extends SourceFile {
>>      }
>>
>>      @Override
>> -    public CharSource getCodeCharSource() {
>> -        return CharSource.wrap(code);
>> -    }
>> -
>> -    @Override
>>      public Reader getCodeReader() throws IOException {
>>          return new StringReader(code);
>>      }
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/jx/AccessorEmitter.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/
>> org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
>> index c060381..19c16ae 100644
>> --- a/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/jx/AccessorEmitter.java
>> +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/
>> internal/codegen/js/jx/AccessorEmitter.java
>> @@ -31,6 +31,7 @@ import org.apache.flex.compiler.definitions.
>> IAccessorDefinition;
>>  import org.apache.flex.compiler.definitions.IClassDefinition;
>>  import org.apache.flex.compiler.definitions.IFunctionDefinition;
>>  import org.apache.flex.compiler.definitions.INamespaceDefinition;
>> +import org.apache.flex.compiler.definitions.IParameterDefinition;
>>  import org.apache.flex.compiler.definitions.ITypeDefinition;
>>  import org.apache.flex.compiler.definitions.metadata.IMetaTag;
>>  import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
>> @@ -40,7 +41,9 @@ import org.apache.flex.compiler.internal.codegen.js.
>> JSSubEmitter;
>>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
>> JSFlexJSDocEmitter;
>>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
>> JSFlexJSEmitter;
>>  import org.apache.flex.compiler.internal.codegen.js.flexjs.
>> JSFlexJSEmitterTokens;
>> +import org.apache.flex.compiler.internal.codegen.js.goog.
>> JSGoogDocEmitter;
>>  import org.apache.flex.compiler.internal.codegen.js.goog.
>> JSGoogEmitterTokens;
>> +import org.apache.flex.compiler.internal.projects.FlexJSProject;
>>  import org.apache.flex.compiler.internal.semantics.SemanticUtils;
>>  import org.apache.flex.compiler.internal.tree.as.FunctionNode;
>>  import org.apache.flex.compiler.internal.tree.as.SetterNode;
>> @@ -77,6 +80,10 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>      {
>>          // TODO (mschmalle) will remove this cast as more things get
>> abstracted
>>          JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
>> +        FlexJSProject project =
>>(FlexJSProject)getWalker().getProject();
>> +        boolean emitExports = true;
>> +        if (project != null && project.config != null)
>> +               emitExports = project.config.getExportPublicSymbols();
>>
>>          if (!getModel().getPropertyMap().isEmpty())
>>          {
>> @@ -98,7 +105,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)getterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)getterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -161,7 +167,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)setterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)setterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -276,12 +281,17 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                  PropertyNodes p = getModel().getPropertyMap().
>> get(propName);
>>                  IGetterNode getterNode = p.getter;
>>                  ISetterNode setterNode = p.setter;
>> -                writeNewline("/** @export */");
>> +               writeNewline("/**");
>> +                if (emitExports)
>> +                       writeNewline("  * @export");
>> +                if (p.type != null)
>> +                       writeNewline("  * @type {"+JSGoogDocEmitter.
>> convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) +
>>"}
>> */");
>> +                else
>> +                       writeNewline("  */");
>>                  FunctionNode fnNode = getterNode != null ?
>>(FunctionNode)
>> getterNode : (FunctionNode) setterNode;
>>                  if (fjs.isCustomNamespace(fnNode))
>>                  {
>>                                 INamespaceDecorationNode ns =
>> fnNode.getActualNamespaceNode();
>> -                    ICompilerProject project =
>>getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -304,7 +314,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)getterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)getterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -338,7 +347,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                          if (fjs.isCustomNamespace((
>> FunctionNode)setterNode))
>>                          {
>>                                         INamespaceDecorationNode ns =
>> ((FunctionNode)setterNode).getActualNamespaceNode();
>> -                            ICompilerProject project =
>> getWalker().getProject();
>>                                         INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                         String s = nsDef.getURI();
>> @@ -367,7 +375,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)setterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)setterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -402,7 +409,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                          if (fjs.isCustomNamespace((
>> FunctionNode)getterNode))
>>                          {
>>                                         INamespaceDecorationNode ns =
>> ((FunctionNode)getterNode).getActualNamespaceNode();
>> -                            ICompilerProject project =
>> getWalker().getProject();
>>                                         INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                         String s = nsDef.getURI();
>> @@ -440,7 +446,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)getterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)getterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -471,7 +476,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)setterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)setterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -526,7 +530,13 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                          propName);
>>                  IGetterNode getterNode = p.getter;
>>                  ISetterNode setterNode = p.setter;
>> -                writeNewline("/** @export */");
>> +               writeNewline("/**");
>> +                if (emitExports)
>> +                       writeNewline("  * @export");
>> +                if (p.type != null)
>> +                       writeNewline("  * @type {"+JSGoogDocEmitter.
>> convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) +
>>"}
>> */");
>> +                else
>> +                       writeNewline("  */");
>>                  write(propName);
>>                  write(ASEmitterTokens.COLON);
>>                  write(ASEmitterTokens.SPACE);
>> @@ -541,7 +551,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)getterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)getterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -566,7 +575,6 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                      if
>>(fjs.isCustomNamespace((FunctionNode)setterNode))
>>                      {
>>                                 INamespaceDecorationNode ns =
>> ((FunctionNode)setterNode).getActualNamespaceNode();
>> -                        ICompilerProject project =
>> getWalker().getProject();
>>                                 INamespaceDefinition nsDef =
>> (INamespaceDefinition)ns.resolve(project);
>>                 
>>fjs.formatQualifiedName(nsDef.getQualifiedName());
>> // register with used names
>>                                 String s = nsDef.getURI();
>> @@ -605,6 +613,9 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>              map.put(name, p);
>>          }
>>          p.getter = node;
>> +        ICompilerProject project = (ICompilerProject)getWalker().
>> getProject();
>> +        if (project != null)
>> +               p.type =
>>node.getDefinition().resolveReturnType(project);
>>          FunctionNode fn = (FunctionNode) node;
>>          fn.parseFunctionBody(fjs.getProblems());
>>      }
>> @@ -628,6 +639,13 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>              map.put(name, p);
>>          }
>>          p.setter = node;
>> +        ICompilerProject project = (ICompilerProject)getWalker().
>> getProject();
>> +        if (project != null)
>> +        {
>> +               IFunctionDefinition def = node.getDefinition();
>> +               IParameterDefinition[] params = def.getParameters();
>> +               p.type = params[0].resolveType(project);
>> +        }
>>          FunctionNode fn = (FunctionNode) node;
>>          fn.parseFunctionBody(fjs.getProblems());
>>
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/main/resources/downloads.xml
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/main/resources/downloads.xml
>> b/compiler-jx/src/main/resources/downloads.xml
>> index 9885ede..5e78c35 100644
>> --- a/compiler-jx/src/main/resources/downloads.xml
>> +++ b/compiler-jx/src/main/resources/downloads.xml
>> @@ -80,7 +80,7 @@
>>      </antcall>
>>
>>      <!--  closure -->
>> -    <property name="closure.version" value="20161201"/>
>> +    <property name="closure.version" value="20170626"/>
>>      <property name="closure.name" value="closure-compiler-v${
>> closure.version}"/>
>>      <property name="closure.dest.name" value="compiler"/>
>>      <property name="closure.dest.folder" value="google/closure-
>> compiler"/>
>> @@ -90,7 +90,7 @@
>>        <param name="src.server"
>>value="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdl
>>.google.com&data=02%7C01%7C%7C3b0113376a1340e7a32708d4e1921f19%7Cfa7b1b5a
>>7b34438794aed2c178decee1%7C0%7C0%7C636381465087873859&sdata=tvvTxGX6Bdx1l
>>q97KPyIx6pAIh3%2BnOnzASAKp3%2FwWJs%3D&reserved=0"/>
>>        <param name="src.folder" value="closure-compiler"/>
>>        <param name="src.filename" value="compiler-${closure.
>> version}.zip"/>
>> -      <param name="src.checksum" value="bcd640e9c9f756df4117af2066621f
>> 89"/>
>> +      <param name="src.checksum" value="c565b5a1e12aefa5968b42ea83ea6c
>> 28"/>
>>      </antcall>
>>
>>      <!--  commons-io -->
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/externals/TestExternChrome.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/externals/TestExternChrome.java
>> b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/externals/TestExternChrome.java
>> index d2582bb..9aafd07 100644
>> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/externals/TestExternChrome.java
>> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/externals/TestExternChrome.java
>> @@ -67,7 +67,7 @@ public class TestExternChrome extends
>>ExternalsTestBase
>>                  "ChromeLoadTimes",
>>                  "ChromeCsiInfo" };
>>
>> -        assertEquals(301, model.getClasses().size());
>> +        assertEquals(322, model.getClasses().size());
>>          for (String className : classes)
>>          {
>>              assertTrue(model.hasClass(className));
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
>> b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
>> index 4070eb8..3950cc3 100644
>> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
>> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
>> @@ -39,7 +39,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.get__foo =
>> function() {\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
>> FalconTest_A.prototype.get__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -51,7 +51,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.get__foo =
>> function() {\n  return -1;\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
>> FalconTest_A.prototype.get__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -63,7 +63,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.get__foo =
>> function() {\n  return -1;\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget:
>> FalconTest_A.prototype.get__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -75,7 +75,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
>> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
>> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n" +
>>                                 "B.prototype.get__foo = function() {\n
>> return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
>> B.prototype.get__foo}}\n);");
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nget:
>> B.prototype.get__foo}}\n);");
>>      }
>>
>>      @Test
>> @@ -86,7 +86,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
>> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
>> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n" +
>>                                 "B.prototype.get__foo = function() {\n
>> return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
>> B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nget:
>> B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -98,7 +98,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.get__foo = function() {\n
>> return -1;\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A, /** 
>>@lends
>> {FalconTest_A} */ {\n/** @export */\nfoo: {\nget:
>> FalconTest_A.get__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A, /** 
>>@lends
>> {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nget:
>> FalconTest_A.get__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -110,7 +110,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.set__foo =
>> function(value) {\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
>> FalconTest_A.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -122,7 +122,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.set__foo =
>> function(value) {\n  fetch('haai');\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
>> FalconTest_A.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -134,7 +134,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.prototype.set__foo =
>> function(value) {\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset:
>> FalconTest_A.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -146,7 +146,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
>> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
>> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n" +
>>                                 "B.prototype.set__foo = function(value)
>> {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\nfoo: {\nset:
>> B.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nset:
>> B.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>> @@ -158,7 +158,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
>>                                 "FalconTest_A.set__foo = function(value)
>> {\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A, /** 
>>@lends
>> {FalconTest_A} */ {\n/** @export */\nfoo: {\nset:
>> FalconTest_A.set__foo}}\n);");
>> +                       "Object.defineProperties(FalconTest_A, /** 
>>@lends
>> {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nset:
>> FalconTest_A.set__foo}}\n);");
>>      }
>>
>>      @Test
>> @@ -169,7 +169,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>          asBlockWalker.visitClass(node);
>>          assertOut("/**\n * @constructor\n * @extends {A}\n */\nB =
>> function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B,
>> A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n" +
>>                                 "B.prototype.set__foo = function(value)
>> {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\nfoo: {\nget:
>> A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: 
>>{\nget:
>> A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
>>      }
>>
>>      @Override
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> index 93a6e09..32d7f58 100644
>> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> @@ -49,7 +49,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
>> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
>> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
>> = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} 
>>*/
>> theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n
>> */\nFalconTest_A.prototype._label;\n\n\n" +
>>                         "FalconTest_A.prototype.get__label = function()
>> {\n  return this._label;\n};\n\n\n" +
>>                         "FalconTest_A.prototype.set__label =
>> function(value) {\n  this._label = value;\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {string} */\n" +
>>                         "label: {\nget: 
>>FalconTest_A.prototype.get__label,\nset:
>> FalconTest_A.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>> @@ -64,7 +64,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nB = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
>> */\nB.prototype.doStuff = function() {\n  this.label = this.label +
>> 'bye';\n  var /** @type {string} */ theLabel = 
>>this.label;\n};\n\n\n/**\n *
>> @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
>>                                 "B.prototype.get__label = function() {\n
>> return this._label;\n};\n\n\n" +
>>                                 "B.prototype.set__label = 
>>function(value)
>> {\n  this._label = value;\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\nlabel: {\n" +
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: 
>>{\n" +
>>                         "get: B.prototype.get__label,\nset:
>> B.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>> @@ -79,7 +79,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
>> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
>> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
>> = function() {\n  this.label = this.label + 'bye';\n  var /** @type
>> {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type
>> {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
>>                                 "FalconTest_A.prototype.get__label =
>> function() {\n  return this._label;\n};\n\n\n" +
>>                                 "FalconTest_A.prototype.set__label =
>> function(value) {\n  this._label = value;\n};\n\n\n" +
>> -                               
>>"Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\n" +
>> +                               
>>"Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {string} */\nlabel: {\n" +
>>                                 "get: 
>>FalconTest_A.prototype.get__label,\nset:
>> FalconTest_A.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>> @@ -94,7 +94,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nB = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
>> */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  
>>var
>> /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * 
>>@private\n *
>> @type {string}\n */\nB.prototype._label;\n\n\n" +
>>                                 "B.prototype.get__label = function() {\n
>> return this._label;\n};\n\n\n" +
>>                                 "B.prototype.set__label = 
>>function(value)
>> {\n  this._label = value;\n};\n\n\n" +
>> -                               "Object.defineProperties(B.prototype, 
>>/**
>> @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
>> +                               "Object.defineProperties(B.prototype, 
>>/**
>> @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} 
>>*/\nlabel:
>> {\n" +
>>                                 "get: B.prototype.get__label,\nset:
>> B.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>> @@ -109,7 +109,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nB = function()
>> {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n
>> */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n
>> */\nB.prototype.doStuff = function() {\n  var /** @type {string} */
>> theLabel = this[\"http://www.adobe.com/2006/actionscript/flash/proxy:
>> :label\"];\n  this[\"http://www.adobe.com/2006/actionscript/flash/proxy:
>> :label\"] = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n
>> */\nB.prototype._label;\n\n\n" +
>>                                 "B.prototype[\"http://www.
>> adobe.com/2006/actionscript/flash/proxy::get__label\"] = function() {\n
>> return this._label;\n};\n\n\n" +
>>                                 "B.prototype[\"http://www.
>> adobe.com/2006/actionscript/flash/proxy::set__label\"] = function(value)
>> {\n  this._label = value;\n};\n\n\n" +
>> -                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/** @export */\n\"http://www.adobe.com/
>> 2006/actionscript/flash/proxy::label\": {\nget: 
>>B.prototype[\"http://www.
>> adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset:
>> B.prototype[\"http://www.adobe.com/2006/actionscript/
>> flash/proxy::set__label\"]}}\n);";
>> +                       "Object.defineProperties(B.prototype, /** @lends
>> {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n\"
>> http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget:
>> B.prototype[\"http://www.adobe.com/2006/actionscript/
>> flash/proxy::get__label\"],\nset: B.prototype[\"http://www.
>> adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
>>          assertOut(expected);
>>      }
>>
>> @@ -126,7 +126,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>                         "FalconTest_A.prototype.set__label =
>> function(value) {\nvar oldValue = this.get__label();\nif (oldValue !=
>> value) {\nthis.bindable__set__label(value);\n" +
>>                         "    this.dispatchEvent(org.apache.
>> flex.events.ValueChangeEvent.createUpdateEvent(\n" +
>>                         "         this, \"label\", oldValue,
>> value));\n}\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {string} */\n" +
>>                         "label: {\nget: 
>>FalconTest_A.prototype.get__label,\nset:
>> FalconTest_A.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>> @@ -141,7 +141,7 @@ public class TestFlexJSAccessors extends ASTestBase
>>          String expected = "/**\n * @constructor\n */\nFalconTest_A =
>> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('FalconTest_A',
>> FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff
>> = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} 
>>*/
>> theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n
>> */\nFalconTest_A.prototype._label;\n\n\n" +
>>                                 "FalconTest_A.prototype.get__label =
>> function() {\n  return this._label;\n};\n\n\n" +
>>                                 "FalconTest_A.prototype.set__label =
>> function(value) {\n  this._label = value;\n};\n\n\n" +
>> -                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
>> +                       "Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type
>> {string} */\n" +
>>                         "label: {\nget: 
>>FalconTest_A.prototype.get__label,\nset:
>> FalconTest_A.prototype.set__label}}\n);";
>>          assertOut(expected);
>>      }
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSClass.java
>> ----------------------------------------------------------------------
>> diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSClass.java
>> b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSClass.java
>> index fbb1c41..83d727f 100644
>> --- a/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSClass.java
>> +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/
>> internal/codegen/js/flexjs/TestFlexJSClass.java
>> @@ -180,7 +180,7 @@ public class TestFlexJSClass extends TestGoogClass
>>      {
>>          IClassNode node = getClassNode("public class B {public function
>> B() {}; public function set baz(value:Object):void {}; public function 
>>set
>> foo(value:Object):void {baz = value;};}");
>>          asBlockWalker.visitClass(node);
>> -        String expected = "/**\n * @constructor\n 
>>*/\norg.apache.flex.B =
>> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
>> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz =
>> function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo =
>> function(value) {\n  this.baz = value;\n};\n\n\nObject.
>> defineProperties(org.apache.flex.B.prototype, /** @lends
>> {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset:
>> org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset:
>> org.apache.flex.B.prototype.set__foo}}\n);";
>> +        String expected = "/**\n * @constructor\n 
>>*/\norg.apache.flex.B =
>> function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
>> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz =
>> function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo =
>> function(value) {\n  this.baz = value;\n};\n\n\nObject.
>> defineProperties(org.apache.flex.B.prototype, /** @lends
>> {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * @type {Object}
>> */\nbaz: {\nset: org.apache.flex.B.prototype.set__baz},\n/**\n  *
>> @export\n  * @type {Object} */\nfoo: {\nset: 
>>org.apache.flex.B.prototype.
>> set__foo}}\n);";
>>          assertOut(expected);
>>      }
>>
>> @@ -189,7 +189,7 @@ public class TestFlexJSClass extends TestGoogClass
>>      {
>>          IClassNode node = getClassNode("public class B extends A 
>>{public
>> function B() {}; override public function set foo(value:Object):void
>> {super.foo = value;};} class A {public function set 
>>foo(value:Object):void
>> {}}");
>>          asBlockWalker.visitClass(node);
>> -        String expected = "/**\n * @constructor\n * @extends
>> {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n
>> org.apache.flex.B.base(this, 
>>'constructor');\n};\ngoog.inherits(org.apache.flex.B,
>> org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
>> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo =
>> function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, 
>>[
>> value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype,
>> /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: 
>>{\nset:
>> org.apache.flex.B.prototype.set__foo}}\n);";
>> +        String expected = "/**\n * @constructor\n * @extends
>> {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n
>> org.apache.flex.B.base(this, 
>>'constructor');\n};\ngoog.inherits(org.apache.flex.B,
>> org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for
>> reflection.\n */\ngoog.exportSymbol('org.apache.flex.B',
>> org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo =
>> function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, 
>>[
>> value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype,
>> /** @lends {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * 
>>@type
>> {Object} */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
>>          assertOut(expected);
>>      }
>>
>> @@ -511,11 +511,11 @@ public class TestFlexJSClass extends TestGoogClass
>>                         "org.apache.flex.A.prototype.set__foo5 =
>> function(value) {\n};\n\n\n" +
>>                         "org.apache.flex.A.prototype[\"
>> http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"] =
>> function() {\n  return null;\n};\n\n\n" +
>>                         "org.apache.flex.A.prototype[\"
>> http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"] =
>> function(value) {\n};\n\n\n" +
>> -                       
>>"Object.defineProperties(org.apache.flex.A.prototype,
>> /** @lends {org.apache.flex.A.prototype} */ {\n/** @export */\n" +
>> -                           "foo1: {\nget: 
>>org.apache.flex.A.prototype.get__foo1,\nset:
>> org.apache.flex.A.prototype.set__foo1},\n/** @export */\n" +
>> -                           "foo2: {\nget: 
>>org.apache.flex.A.prototype.get__foo2,\nset:
>> org.apache.flex.A.prototype.set__foo2},\n/** @export */\n" +
>> -                           "foo3: {\nget: 
>>org.apache.flex.A.prototype.get__foo3,\nset:
>> org.apache.flex.A.prototype.set__foo3},\n/** @export */\n" +
>> -                           "foo5: {\nget: 
>>org.apache.flex.A.prototype.get__foo5,\nset:
>> org.apache.flex.A.prototype.set__foo5},\n/** @export */\n" +
>> +                       
>>"Object.defineProperties(org.apache.flex.A.prototype,
>> /** @lends {org.apache.flex.A.prototype} */ {\n/**\n  * @export\n  * 
>>@type
>> {Object} */\n" +
>> +                           "foo1: {\nget: 
>>org.apache.flex.A.prototype.get__foo1,\nset:
>> org.apache.flex.A.prototype.set__foo1},\n/**\n  * @export\n  * @type
>> {Object} */\n" +
>> +                           "foo2: {\nget: 
>>org.apache.flex.A.prototype.get__foo2,\nset:
>> org.apache.flex.A.prototype.set__foo2},\n/**\n  * @export\n  * @type
>> {Object} */\n" +
>> +                           "foo3: {\nget: 
>>org.apache.flex.A.prototype.get__foo3,\nset:
>> org.apache.flex.A.prototype.set__foo3},\n/**\n  * @export\n  * @type
>> {Object} */\n" +
>> +                           "foo5: {\nget: 
>>org.apache.flex.A.prototype.get__foo5,\nset:
>> org.apache.flex.A.prototype.set__foo5},\n/**\n  * @export\n  * @type
>> {Object} */\n" +
>>                             "\"http://www.adobe.com/2006/
>> actionscript/flash/proxy::foo6\": {\nget: org.apache.flex.A.prototype[\"
>> http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"],\n" +
>>
>>
>>   "set: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/
>> actionscript/flash/proxy::set__foo6\"]}}\n);");
>>      }
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/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 dc28b6b..8b93413 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
>> @@ -102,7 +102,7 @@ public class TestFlexJSExpressions extends
>> TestGoogExpressions
>>                           "  return FalconTest_A.superClass_.
>> isDefaultPrevented.apply(this);\n" +
>>                           "};\n\n\n" +
>>                           
>>"Object.defineProperties(FalconTest_A.prototype,
>> /** @lends {FalconTest_A.prototype} */ {\n" +
>> -                         "/** @export */\n" +
>> +                         "/**\n  * @export\n  * @type {boolean} */\n" +
>>                           "defaultPrevented: {\nget:
>> FalconTest_A.prototype.get__defaultPrevented}}\n);");
>>      }
>>
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/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 360b875..86022ff 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
>> @@ -794,7 +794,7 @@ public class TestFlexJSPackage extends 
>>TestGoogPackage
>>                           "\n" +
>>                           "\n" +
>>                           
>>"Object.defineProperties(foo.bar.baz.A.prototype,
>> /** @lends {foo.bar.baz.A.prototype} */ {\n" +
>> -                  "/** @export */\n" +
>> +                  "/**\n  * @export\n  * @type {string} */\n" +
>>                    "myString: {\n" +
>>                    "get: foo.bar.baz.A.prototype.get__myString,\n" +
>>                    "set: foo.bar.baz.A.prototype.set__myString}}\n" +
>> @@ -850,7 +850,7 @@ public class TestFlexJSPackage extends 
>>TestGoogPackage
>>                           "\n" +
>>                           "\n" +
>>                           "Object.defineProperties(foo.
>> bar.baz.A.InternalClass.prototype, /** @lends
>> {foo.bar.baz.A.InternalClass.prototype} */ {\n" +
>> -                  "/** @export */\n" +
>> +                  "/**\n  * @export\n  * @type {string} */\n" +
>>                    "someString: {\n" +
>>                    "get: 
>>foo.bar.baz.A.InternalClass.prototype.get__someString,\n"
>> +
>>                    "set: 
>>foo.bar.baz.A.InternalClass.prototype.set__someString}}\n"
>> +
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/resources/flexjs/files/
>> MyInitialView_result.js
>> ----------------------------------------------------------------------
>> diff --git 
>>a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
>> b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
>> index 7fe3836..ae55d78 100644
>> --- 
>>a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
>> +++ 
>>b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
>> @@ -269,16 +269,24 @@ MyInitialView.prototype.get__comboBoxValue =
>> function() {
>>
>>
>>  Object.defineProperties(MyInitialView.prototype, /** @lends
>> {MyInitialView.prototype} */ {
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  symbol: {
>>  get: MyInitialView.prototype.get__symbol},
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  city: {
>>  get: MyInitialView.prototype.get__city},
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  inputText: {
>>  get: MyInitialView.prototype.get__inputText},
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  comboBoxValue: {
>>  get: MyInitialView.prototype.get__comboBoxValue}}
>>  );/**
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/resources/flexjs/files/models/
>> MyModel_result.js
>> ----------------------------------------------------------------------
>> diff --git 
>>a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
>> b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
>> index ab547d7..041d254 100644
>> --- 
>>a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
>> +++ 
>>b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
>> @@ -90,14 +90,20 @@ models.MyModel.prototype.get__cities = function() {
>>
>>
>>  Object.defineProperties(models.MyModel.prototype, /** @lends
>> {models.MyModel.prototype} */ {
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  labelText: {
>>  get: models.MyModel.prototype.get__labelText,
>>  set: models.MyModel.prototype.set__labelText},
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {Array} */
>>  strings: {
>>  get: models.MyModel.prototype.get__strings},
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {Array} */
>>  cities: {
>>  get: models.MyModel.prototype.get__cities}}
>>  );
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/resources/flexjs/projects/
>> super/Base_result.js
>> ----------------------------------------------------------------------
>> diff --git 
>>a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
>> b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
>> index 720e39c..3c712ac 100644
>> --- 
>>a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
>> +++ 
>>b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
>> @@ -54,7 +54,9 @@ Base.prototype.set__text = function(value) {
>>
>>
>>  Object.defineProperties(Base.prototype, /** @lends {Base.prototype} */ 
>>{
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  text: {
>>  get: Base.prototype.get__text,
>>  set: Base.prototype.set__text}}
>>
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-falcon%2Fblob%2F&data=02%7C01%7C%7C3b01
>>13376a1340e7a32708d4e1921f19%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7
>>C636381465087873859&sdata=%2Fu4y0mTb4PikkdTbpou2Ghxc82ok5k5pK6JK9Md0xBY%3
>>D&reserved=0
>> 6331b80d/compiler-jx/src/test/resources/flexjs/projects/
>> super/Super_result.js
>> ----------------------------------------------------------------------
>> diff --git 
>>a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
>> b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
>> index d77b6b2..53d1d2d 100644
>> --- 
>>a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
>> +++ 
>>b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
>> @@ -56,7 +56,9 @@ Super.prototype.set__text = function(value) {
>>
>>
>>  Object.defineProperties(Super.prototype, /** @lends {Super.prototype} 
>>*/
>> {
>> -/** @export */
>> +/**
>> +  * @export
>> +  * @type {string} */
>>  text: {
>>  get: Super.prototype.get__text,
>>  set: Super.prototype.set__text}}
>>
>>