Merge branch 'release/0.9.7' into develop
diff --git a/compiler-build-tools/RELEASE_NOTES.md b/compiler-build-tools/RELEASE_NOTES.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/compiler-build-tools/RELEASE_NOTES.md
@@ -0,0 +1 @@ +
diff --git a/compiler-build-tools/pom.xml b/compiler-build-tools/pom.xml index 62844bc..5ac77e0 100644 --- a/compiler-build-tools/pom.xml +++ b/compiler-build-tools/pom.xml
@@ -1,21 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -128,6 +128,11 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>3.2.0</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.2.0</version> <configuration> @@ -208,8 +213,8 @@ <completionGoals>com.theoryinpractise:reproducible-maven-plugin:clear</completionGoals> </configuration> </plugin> - <!-- - Create MD5 and SHA512 checksum files for the release artifacts. + <!-- + Create MD5 and SHA512 checksum files for the release artifacts. --> <plugin> <groupId>net.nicoulaj.maven.plugins</groupId> @@ -252,11 +257,11 @@ <repository> <id>apache.releases.https</id> <name>Apache Release Distribution Repository</name> - <!-- - 'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ... - don't worry if your IDE is complaining. - Also this will be set to the 'target/checkout' directory the output will be in - 'target/local-release-dir'. + <!-- + 'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ... + don't worry if your IDE is complaining. + Also this will be set to the 'target/checkout' directory the output will be in + 'target/local-release-dir'. --> <url>file://${maven.multiModuleProjectDirectory}/../local-release-dir</url> </repository>
diff --git a/compiler-jburg-types/pom.xml b/compiler-jburg-types/pom.xml index ea230e0..90b23a2 100644 --- a/compiler-jburg-types/pom.xml +++ b/compiler-jburg-types/pom.xml
@@ -48,6 +48,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> + <version>3.2.0</version> <configuration> <tags> <tag>
diff --git a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java index 449918c..a8665a1 100644 --- a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java +++ b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
@@ -135,8 +135,10 @@ private File varRenameMapFile; private Set<String> propertyNamesToKeep; + + private Set<String> extraSymbolNamesToExport; - public RoyaleClosurePassConfig(CompilerOptions options, String sourceFileName, File varRenameMapFile, Set<String> propertyNamesToKeep) { + public RoyaleClosurePassConfig(CompilerOptions options, String sourceFileName, File varRenameMapFile, Set<String> propertyNamesToKeep, Set<String> extraSymbolNamesToExport) { super(options); // The current approach to protecting "hidden" side-effects is to @@ -147,6 +149,7 @@ this.varRenameMapFile = varRenameMapFile; this.sourceFileName = sourceFileName; this.propertyNamesToKeep = propertyNamesToKeep; + this.extraSymbolNamesToExport = extraSymbolNamesToExport; } GlobalNamespace getGlobalNamespace() { @@ -363,6 +366,10 @@ checks.add(polymerPass); } + if (extraSymbolNamesToExport != null) { + checks.add(extraSymbolsPass); + } + if (options.checkSuspiciousCode || options.enables(DiagnosticGroups.GLOBAL_THIS) || options.enables(DiagnosticGroups.DEBUGGER_STATEMENT_PRESENT)) { @@ -1264,6 +1271,41 @@ return ES_NEXT; } }; + + private final PassFactory extraSymbolsPass = + new PassFactory("extra-symbols-to-export", true) { + @Override + protected CompilerPass create(final AbstractCompiler compiler) { + return new CompilerPass() { + @Override + public void process(Node externs, Node root) { + Node scriptNode = compiler.getScriptNode(sourceFileName); + for(String nameToExport : extraSymbolNamesToExport) + { + Node exportCallTarget = NodeUtil.newQName(compiler, + compiler.getCodingConvention().getExportSymbolFunction(), scriptNode, nameToExport); + Node call = IR.call(exportCallTarget); + if (exportCallTarget.isName()) { + call.putBooleanProp(Node.FREE_CALL, true); + } + call.addChildToBack(IR.string(nameToExport)); + call.addChildToBack(NodeUtil.newQName(compiler, + nameToExport, scriptNode, nameToExport)); + + Node expression = IR.exprResult(call); + + scriptNode.addChildToBack(expression); + compiler.reportChangeToEnclosingScope(expression); + } + } + }; + } + + @Override + protected FeatureSet featureSet() { + return ES_NEXT; + } + }; private final PassFactory keepPropertyNamesPass = new PassFactory("keep-property-names", true) {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java index 748c169..1b86589 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
@@ -534,6 +534,8 @@ } Set<String> closurePropNamesToKeep = new HashSet<String>(); + //use a LinkedHashSet because the order of the exported names matters -JT + LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>(); jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher( project, errors, config); @@ -620,12 +622,14 @@ } } ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep); + ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport); } } if (jsPublisher != null) { jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep); + jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport); compilationSuccess = jsPublisher.publish(problems); } else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java index 9b54b1e..1a92629 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
@@ -28,6 +28,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -318,6 +319,8 @@ } Set<String> closurePropNamesToKeep = new HashSet<String>(); + //use a LinkedHashSet because the order of the exported names matters -JT + LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>(); jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher( project, errors, config); @@ -385,12 +388,14 @@ writer.close(); } ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep); + ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport); } } if (jsPublisher != null) { jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep); + jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport); compilationSuccess = jsPublisher.publish(problems); } else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java index 70c1c24..32132b4 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
@@ -28,6 +28,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -320,6 +321,8 @@ } Set<String> closurePropNamesToKeep = new HashSet<String>(); + //use a LinkedHashSet because the order of the exported names matters -JT + LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>(); jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher( project, errors, config); @@ -387,11 +390,14 @@ writer.close(); } ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep); + ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport); } } if (jsPublisher != null) { + jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep); + jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport); compilationSuccess = jsPublisher.publish(problems); } else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java index fe73f30..2574c5f 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
@@ -339,6 +339,8 @@ } Set<String> closurePropNamesToKeep = new HashSet<String>(); + //use a LinkedHashSet because the order of the exported names matters -JT + LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>(); jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher( project, errors, config); @@ -417,6 +419,7 @@ writer.close(); } ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep); + ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport); } File externsReportFile = googConfiguration.getExternsReport(); if (externsReportFile != null) @@ -435,6 +438,7 @@ if (jsPublisher != null) { jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep); + jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport); compilationSuccess = jsPublisher.publish(problems); } else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java index 80bca1a..a508ec2 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
@@ -28,6 +28,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -323,6 +324,8 @@ } Set<String> closurePropNamesToKeep = new HashSet<String>(); + //use a LinkedHashSet because the order of the exported names matters -JT + LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>(); jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher( project, errors, config); @@ -390,12 +393,14 @@ writer.close(); } ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep); + ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport); } } if (jsPublisher != null) { jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep); + jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport); compilationSuccess = jsPublisher.publish(problems); } else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java index eaa3bad..20fbab6 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java
@@ -30,4 +30,5 @@ public interface IJSGoogPublisher extends IJSPublisher { void setClosurePropertyNamesToKeep(Set<String> propertyNames); + void setClosureSymbolNamesToExport(Set<String> symbolNames); } \ No newline at end of file
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java index 2138d61..b37e337 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -255,6 +255,15 @@ write(ASEmitterTokens.PAREN_CLOSE); return; } + else if (node.getNodeID() == ASTNodeID.Op_EqualID && + node.getRightOperandNode().getNodeID() == ASTNodeID.LiteralBooleanID) + { + getWalker().walk(xmlNode); + write(" == '"); + getWalker().walk(node.getRightOperandNode()); + write("'"); + return; + } } else if (isDynamicAccess && ((JSRoyaleEmitter)getEmitter()).isXMLish((IExpressionNode)lnode)) {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java index 9b86e96..42f3fe5 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -160,28 +160,6 @@ } } - if (!getEmitter().getModel().isExterns && !suppressExport) - { - JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter() - .getDocEmitter(); - writeNewline(); - writeNewline(); - writeNewline(); - doc.begin(); - writeNewline(" * Prevent renaming of class. Needed for reflection."); - doc.end(); - write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL); - write(ASEmitterTokens.PAREN_OPEN); - write(ASEmitterTokens.SINGLE_QUOTE); - write(getEmitter().formatQualifiedName(node.getQualifiedName())); - write(ASEmitterTokens.SINGLE_QUOTE); - write(ASEmitterTokens.COMMA); - write(ASEmitterTokens.SPACE); - write(getEmitter().formatQualifiedName(node.getQualifiedName())); - write(ASEmitterTokens.PAREN_CLOSE); - write(ASEmitterTokens.SEMICOLON); - } - IDefinitionNode[] dnodes = node.getAllMemberNodes(); for (IDefinitionNode dnode : dnodes) {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ForEachEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ForEachEmitter.java index 4920604..46fc13a 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ForEachEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ForEachEmitter.java
@@ -134,7 +134,7 @@ if (((JSRoyaleEmitter)getEmitter()).isProxy((IMemberAccessExpressionNode)obj)) { write(".propertyNames()"); - isXML = true; + isProxy = true; } } else if (obj.getNodeID() == ASTNodeID.Op_AsID)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java index 00f82b9..595a1e2 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java
@@ -92,7 +92,9 @@ startMapping(parentNode); if(initialValue instanceof String) { - write("\"" + initialValue + "\""); + write(ASEmitterTokens.DOUBLE_QUOTE); + write((String) initialValue); + write(ASEmitterTokens.DOUBLE_QUOTE); } else if(initialValue == ABCConstants.UNDEFINED_VALUE) { @@ -358,7 +360,11 @@ } else if (identifierIsAccessorFunction && isStatic) { - write("[\"" +node.getName() + "\"]"); + write(ASEmitterTokens.SQUARE_OPEN); + write(ASEmitterTokens.DOUBLE_QUOTE); + write(node.getName()); + write(ASEmitterTokens.DOUBLE_QUOTE); + write(ASEmitterTokens.SQUARE_CLOSE); } else { @@ -392,7 +398,11 @@ } else if (identifierIsAccessorFunction && isStatic) { - write("[\"" + qname + "\"]"); + write(ASEmitterTokens.SQUARE_OPEN); + write(ASEmitterTokens.DOUBLE_QUOTE); + write(qname); + write(ASEmitterTokens.DOUBLE_QUOTE); + write(ASEmitterTokens.SQUARE_CLOSE); } else {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java index eb8f079..67db88c 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java
@@ -74,27 +74,7 @@ write(ASEmitterTokens.SEMICOLON); } - JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter() - .getDocEmitter(); - if (!getEmitter().getModel().isExterns) - { - writeNewline(); - writeNewline(); - writeNewline(); - doc.begin(); - writeNewline(" * Prevent renaming of class. Needed for reflection."); - doc.end(); - write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL); - write(ASEmitterTokens.PAREN_OPEN); - write(ASEmitterTokens.SINGLE_QUOTE); - write(getEmitter().formatQualifiedName(node.getQualifiedName())); - write(ASEmitterTokens.SINGLE_QUOTE); - write(ASEmitterTokens.COMMA); - write(ASEmitterTokens.SPACE); - write(getEmitter().formatQualifiedName(node.getQualifiedName())); - write(ASEmitterTokens.PAREN_CLOSE); - write(ASEmitterTokens.SEMICOLON); - } + JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter().getDocEmitter(); final IDefinitionNode[] members = node.getAllMemberDefinitionNodes(); for (IDefinitionNode mnode : members)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java index e2f7805..305a950 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
@@ -41,7 +41,6 @@ import org.apache.royale.compiler.internal.codegen.js.jx.BindableEmitter; import org.apache.royale.compiler.internal.projects.RoyaleJSProject; import org.apache.royale.compiler.internal.scopes.ASScope; -import org.apache.royale.compiler.parsing.IASToken; import org.apache.royale.compiler.problems.PublicVarWarningProblem; import org.apache.royale.compiler.projects.ICompilerProject; import org.apache.royale.compiler.tree.ASTNodeID; @@ -537,7 +536,8 @@ } else /*if (ns != null && ns == IASKeywordConstants.PUBLIC)*/ { - emitPublic(node); + if(!node.hasModifier(ASModifier.STATIC)) + emitPublic(node); } } @@ -558,9 +558,9 @@ boolean preventRename = fjp.config != null && fjp.config.getPreventRenameProtectedSymbols(); if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode)) { - //dynamically getting/setting a protected static variable - //won't work properly if it is collapsed, even when it - //has been exported + //dynamically getting/setting a static variable won't + //work properly if it is collapsed in a release build, + //even when it has been exported emitJSDocLine(JSGoogDocEmitterTokens.NOCOLLAPSE); } } @@ -609,9 +609,9 @@ boolean preventRename = fjp.config != null && fjp.config.getPreventRenamePublicSymbols(); if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode)) { - //dynamically getting/setting a public static variable - //won't work properly if it is collapsed, even when it - //has been exported + //dynamically getting/setting a static variable won't + //work properly if it is collapsed in a release build, + //even when it has been exported emitJSDocLine(JSGoogDocEmitterTokens.NOCOLLAPSE); } }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java index 86083af..e8c8e2a 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -1166,21 +1166,6 @@ write(ASEmitterTokens.PAREN_CLOSE); writeNewline(ASEmitterTokens.SEMICOLON); - writeNewline(); - writeNewline(); - writeNewline("/**"); - writeNewline(" * Prevent renaming of class. Needed for reflection."); - writeNewline(" */"); - write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL); - write(ASEmitterTokens.PAREN_OPEN); - write(ASEmitterTokens.SINGLE_QUOTE); - write(formatQualifiedName(cname)); - write(ASEmitterTokens.SINGLE_QUOTE); - write(ASEmitterTokens.COMMA); - write(ASEmitterTokens.SPACE); - write(formatQualifiedName(cname)); - write(ASEmitterTokens.PAREN_CLOSE); - write(ASEmitterTokens.SEMICOLON); writeNewline(); writeNewline(); writeNewline();
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java index d823a33..1f9fb05 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -103,6 +103,7 @@ private boolean useStrictPublishing; private List<String> additionalHTML = new ArrayList<String>(); private Set<String> closurePropertyNamesToKeep; + private Set<String> closureSymbolNamesToExport; private GoogDepsWriter getGoogDepsWriter(File intermediateDir, String mainClassQName, @@ -188,6 +189,11 @@ closurePropertyNamesToKeep = propertyNames; } + public void setClosureSymbolNamesToExport(Set<String> symbolNames) + { + closureSymbolNamesToExport = symbolNames; + } + @Override public boolean publish(ProblemQuery problems) throws IOException { @@ -387,6 +393,13 @@ { compilerWrapper = new JSClosureCompilerWrapper(googConfiguration.getJSCompilerOptions()); compilerWrapper.setPropertyNamesToKeep(closurePropertyNamesToKeep); + if (closureSymbolNamesToExport == null) { + closureSymbolNamesToExport = new HashSet<String>(); + } + //the HTML template always needs this name to be exported, even if + //other class names are not exported + closureSymbolNamesToExport.add(mainClassQName); + compilerWrapper.setExtraSymbolNamesToExport(closureSymbolNamesToExport); } if (compilerWrapper != null)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java index b94fdf2..78c2ea7 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
@@ -19,14 +19,22 @@ package org.apache.royale.compiler.utils; +import java.util.LinkedHashSet; import java.util.Set; +import org.apache.royale.compiler.asdoc.royale.ASDocComment; +import org.apache.royale.compiler.definitions.IAccessorDefinition; import org.apache.royale.compiler.definitions.IDefinition; import org.apache.royale.compiler.definitions.IFunctionDefinition; +import org.apache.royale.compiler.definitions.INamespaceDefinition; +import org.apache.royale.compiler.definitions.IPackageDefinition; import org.apache.royale.compiler.definitions.ITypeDefinition; import org.apache.royale.compiler.definitions.IVariableDefinition; +import org.apache.royale.compiler.definitions.references.INamespaceReference; +import org.apache.royale.compiler.internal.codegen.js.utils.DocEmitterUtils; import org.apache.royale.compiler.internal.projects.RoyaleJSProject; -import org.apache.royale.compiler.internal.scopes.ASProjectScope.DefinitionPromise; +import org.apache.royale.compiler.scopes.IASScope; +import org.apache.royale.compiler.scopes.IFileScope; import org.apache.royale.compiler.units.ICompilationUnit; public class ClosureUtils @@ -37,50 +45,158 @@ { return; } - boolean preventRenamePublic = project.config.getPreventRenamePublicSymbols(); - boolean preventRenameProtected = project.config.getPreventRenameProtectedSymbols(); - for (IDefinition def : cu.getDefinitionPromises()) + boolean preventRenamePublic = project.config != null && project.config.getPreventRenamePublicSymbols(); + boolean preventRenameProtected = project.config != null && project.config.getPreventRenameProtectedSymbols(); + boolean exportPublic = project.config != null && project.config.getExportPublicSymbols(); + boolean exportProtected = project.config != null && project.config.getExportProtectedSymbols(); + try { - if(def instanceof DefinitionPromise) + for(IASScope scope : cu.getFileScopeRequest().get().getScopes()) { - def = ((DefinitionPromise) def).getActualDefinition(); - } - if (def instanceof ITypeDefinition) - { - if (def.isImplicit() || def.isNative()) + for(IDefinition def : scope.getAllLocalDefinitions()) { - continue; - } - ITypeDefinition typeDef = (ITypeDefinition) def; - for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions()) - { - if (localDef.isImplicit()) + if(def instanceof IPackageDefinition) { - continue; + //source files seem to return packages while SWC files + //return symbols inside the packages + //we want the symbols, so drill down into the package + IPackageDefinition packageDef = (IPackageDefinition) def; + def = packageDef.getContainedScope().getAllLocalDefinitions().iterator().next(); } - if (!localDef.isPublic() && !localDef.isProtected()) + if(scope instanceof IFileScope && def.isPrivate()) { - continue; + //file-private symbols are emitted like static variables + result.add(def.getBaseName()); } - if (localDef.isProtected() && !preventRenameProtected) + if (def instanceof ITypeDefinition) { - continue; + if (def.isImplicit() || def.isNative()) + { + continue; + } + ITypeDefinition typeDef = (ITypeDefinition) def; + for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions()) + { + if (localDef.isImplicit()) + { + continue; + } + INamespaceReference nsRef = localDef.getNamespaceReference(); + boolean isPublic = nsRef instanceof INamespaceDefinition.IPublicNamespaceDefinition; + boolean isProtected = nsRef instanceof INamespaceDefinition.IProtectedNamespaceDefinition + || nsRef instanceof INamespaceDefinition.IStaticProtectedNamespaceDefinition; + + if ((isPublic && preventRenamePublic) || (isProtected && preventRenameProtected)) + { + if (localDef instanceof IAccessorDefinition) + { + if ((isPublic && exportPublic) || (isProtected && exportProtected)) + { + //if an accessor is exported, we don't + //need to prevent renaming + //(not true for other symbol types) + continue; + } + } + result.add(localDef.getBaseName()); + } + } } - if (localDef.isPublic() && !preventRenamePublic) - { - continue; - } - if (!(localDef instanceof IVariableDefinition)) - { - continue; - } - if (localDef instanceof IFunctionDefinition) - { - continue; - } - result.add(localDef.getBaseName()); } } } - } + catch(InterruptedException e) {} + } + + //the result must be a LinkedHashSet so that it iterates over the keys in + //the same order that they were added + public static void collectSymbolNamesToExport(ICompilationUnit cu, RoyaleJSProject project, LinkedHashSet<String> symbolsResult) + { + if (project.isExternalLinkage(cu)) + { + return; + } + boolean exportPublic = project.config != null && project.config.getExportPublicSymbols(); + boolean exportProtected = project.config != null && project.config.getExportProtectedSymbols(); + try + { + String parentQName = null; + Set<String> filePrivateNames = new LinkedHashSet<String>(); + for(IASScope scope : cu.getFileScopeRequest().get().getScopes()) + { + for(IDefinition def : scope.getAllLocalDefinitions()) + { + if(def instanceof IPackageDefinition) + { + //source files seem to return packages while SWC files + //return symbols inside the packages + //we want the symbols, so drill down into the package + IPackageDefinition packageDef = (IPackageDefinition) def; + def = packageDef.getContainedScope().getAllLocalDefinitions().iterator().next(); + } + if (def.isImplicit() || def.isNative()) + { + continue; + } + + String qualifiedName = def.getQualifiedName(); + boolean isFilePrivate = false; + if(scope instanceof IFileScope && def.isPrivate()) + { + isFilePrivate = true; + filePrivateNames.add(qualifiedName); + } + else + { + symbolsResult.add(qualifiedName); + if(parentQName == null) + { + parentQName = qualifiedName; + } + } + if (def instanceof ITypeDefinition) + { + ITypeDefinition typeDef = (ITypeDefinition) def; + ASDocComment asDoc = (ASDocComment) typeDef.getExplicitSourceComment(); + if (asDoc != null && DocEmitterUtils.hasSuppressExport(null, asDoc.commentNoEnd())) + { + continue; + } + + for(IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions()) + { + if (localDef.isImplicit()) + { + continue; + } + INamespaceReference nsRef = localDef.getNamespaceReference(); + boolean isPublic = nsRef instanceof INamespaceDefinition.IPublicNamespaceDefinition; + boolean isProtected = nsRef instanceof INamespaceDefinition.IProtectedNamespaceDefinition + || nsRef instanceof INamespaceDefinition.IStaticProtectedNamespaceDefinition; + if (localDef instanceof IFunctionDefinition && !(localDef instanceof IVariableDefinition) + && localDef.isStatic() && isPublic) + { + if ((isPublic && exportPublic) || (isProtected && exportProtected)) + { + if (isFilePrivate) + { + filePrivateNames.add(qualifiedName + "." + localDef.getBaseName()); + } + else + { + symbolsResult.add(qualifiedName + "." + localDef.getBaseName()); + } + } + } + } + } + } + } + for(String filePrivateName : filePrivateNames) + { + symbolsResult.add(parentQName + "." + filePrivateName); + } + } + catch(InterruptedException e) {} + } } \ No newline at end of file
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java index 0364d35..a343d35 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java
@@ -89,10 +89,11 @@ private String propertyMapOutputPath; private String variableMapInputPath; private String propertyMapInputPath; + private Set<String> propertyNamesToKeep; + private Set<String> extraSymbolNamesToExport; private boolean skipTypeInference; private boolean sourceMap = false; private boolean verbose = false; - private Set<String> propertyNamesToKeep; public String targetFilePath; @@ -130,6 +131,11 @@ { propertyNamesToKeep = propertyNames; } + + public void setExtraSymbolNamesToExport(Set<String> names) + { + extraSymbolNamesToExport = names; + } public boolean compile() { @@ -167,7 +173,7 @@ compiler_.setPassConfig(new RoyaleClosurePassConfig(options_, jsSourceFiles_.get(jsSourceFiles_.size() - 1).getName(), - variableMapInputPath == null ? null : new File(outputFolder, variableMapInputPath), propertyNamesToKeep)); + variableMapInputPath == null ? null : new File(outputFolder, variableMapInputPath), propertyNamesToKeep, extraSymbolNamesToExport)); Result result = compiler_.compile(jsExternsFiles_, jsSourceFiles_, options_); try
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java index 89e2c8d..079ff73 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
@@ -37,7 +37,7 @@ IClassNode node = (IClassNode) getNode("function get foo():int{}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.get__foo = function() {\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);"); } @@ -49,7 +49,7 @@ IClassNode node = (IClassNode) getNode("function get foo():int{return -1;}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.get__foo = function() {\n return -1;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);"); } @@ -61,7 +61,7 @@ IClassNode node = (IClassNode) getNode("public function get foo():int{return -1;}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.get__foo = function() {\n return -1;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @export\n * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);"); } @@ -73,7 +73,7 @@ IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A {public function get foo():int {return 0;}} ", IClassNode.class, WRAP_LEVEL_PACKAGE); 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" + + assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\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/**\n * @export\n * @type {number} */\nfoo: {\nget: B.prototype.get__foo}}\n);"); } @@ -84,7 +84,7 @@ IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A { public function set foo(value:int):void{} public function get foo():int {return 0;}}", IClassNode.class, WRAP_LEVEL_PACKAGE); 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" + + assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\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/**\n * @export\n * @type {number} */\nfoo: {\nget: B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);"); } @@ -96,7 +96,7 @@ IClassNode node = (IClassNode) getNode("public static function get foo():int{return -1;}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.get__foo = function() {\n return -1;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n * @export\n * @type {number} */\nfoo: {\nget: RoyaleTest_A.get__foo}}\n);"); } @@ -108,8 +108,7 @@ IClassNode node = (IClassNode) getNode("function set foo(value:int):void{}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - // /**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\nRoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\nObject.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);"); } @@ -121,7 +120,7 @@ IClassNode node = (IClassNode) getNode("function set foo(value:int):void{fetch('haai');}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.set__foo = function(value) {\n fetch('haai');\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);"); } @@ -133,7 +132,7 @@ IClassNode node = (IClassNode) getNode("public function set foo(value:int):void{}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @export\n * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);"); } @@ -145,7 +144,7 @@ IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{}}", IClassNode.class, WRAP_LEVEL_PACKAGE); 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" + + assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\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/**\n * @export\n * @type {number} */\nfoo: {\nset: B.prototype.set__foo}}\n);"); } @@ -157,7 +156,7 @@ IClassNode node = (IClassNode) getNode("public static function set foo(value:int):void{}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" + "RoyaleTest_A.set__foo = function(value) {\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n * @export\n * @type {number} */\nfoo: {\nset: RoyaleTest_A.set__foo}}\n);"); } @@ -168,7 +167,7 @@ IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{} public function get foo():int { return 0;}}", IClassNode.class, WRAP_LEVEL_PACKAGE); 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" + + assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\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/**\n * @export\n * @type {number} */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);"); }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java index fabe07f..3dce316 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java
@@ -46,7 +46,7 @@ "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + "RoyaleTest_A.prototype.get__label = function() {\n return this._label;\n};\n\n\n" + "RoyaleTest_A.prototype.set__label = function(value) {\n this._label = value;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @export\n * @type {string} */\n" + @@ -61,7 +61,7 @@ "public class B { public function B() {}; public function doStuff():void {this.label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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 = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\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 = null;\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/**\n * @export\n * @type {string} */\nlabel: {\n" + @@ -76,7 +76,7 @@ "public function doStuff():void {label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + "RoyaleTest_A.prototype.get__label = function() {\n return this._label;\n};\n\n\n" + "RoyaleTest_A.prototype.set__label = function(value) {\n this._label = value;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @export\n * @type {string} */\nlabel: {\n" + @@ -91,7 +91,7 @@ "public class B { public function B() {}; public function doStuff():void {label = this.label; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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 = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\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 = null;\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/**\n * @export\n * @type {string} */\nlabel: {\n" + @@ -106,7 +106,7 @@ "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = label; label = theLabel;}; private var _label:String; custom_namespace function get label():String {return _label}; custom_namespace function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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_$$ns_apache_org$2017$custom$namespace__label;\n this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" + "B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n return this._label;\n};\n\n\n" + "B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n this._label = value;\n};\n\n\n" + "Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n * @export\n * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);"; @@ -120,7 +120,7 @@ "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = this.label; this.label = theLabel;}; private var _label:String; custom_namespace function get label():String {return _label}; custom_namespace function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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_$$ns_apache_org$2017$custom$namespace__label;\n this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" + "B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n return this._label;\n};\n\n\n" + "B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n this._label = value;\n};\n\n\n" + "Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n * @export\n * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);"; @@ -134,7 +134,7 @@ "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = label; label = theLabel;}; private static var _label:String; custom_namespace static function get label():String {return _label}; custom_namespace static function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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 = B.http_$$ns_apache_org$2017$custom$namespace__label;\n B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" + "B.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n return B._label;\n};\n\n\n" + "B.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n B._label = value;\n};\n\n\n" + "Object.defineProperties(B, /** @lends {B} */ {\n/**\n * @export\n * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);"; @@ -148,7 +148,7 @@ "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = B.label; B.label = theLabel;}; private static var _label:String; custom_namespace static function get label():String {return _label}; custom_namespace static function set label(value:String):void {_label = value};}", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - 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 = B.http_$$ns_apache_org$2017$custom$namespace__label;\n B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" + "B.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n return B._label;\n};\n\n\n" + "B.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n B._label = value;\n};\n\n\n" + "Object.defineProperties(B, /** @lends {B} */ {\n/**\n * @export\n * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);"; @@ -162,7 +162,7 @@ "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; [Bindable] public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - String expected ="/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + + String expected ="/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + "RoyaleTest_A.prototype.get__label = function() {\n return this._label;\n};\n\n\n" + "RoyaleTest_A.prototype.bindable__set__label_RoyaleTest_A = function(value) {\n" + " this._label = value;" + @@ -191,7 +191,7 @@ "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; [Bindable(\"change\")] public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + + String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_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 */\nRoyaleTest_A.prototype._label = null;\n\n\n" + "RoyaleTest_A.prototype.get__label = function() {\n return this._label;\n};\n\n\n" + "RoyaleTest_A.prototype.set__label = function(value) {\n this._label = value;\n};\n\n\n" + "Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n * @export\n * @type {string} */\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java index 7246eb8..c1fdcac 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
@@ -48,7 +48,7 @@ { IClassNode node = getClassNode("public class A {public function A() { super(); }}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n ;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n ;\n};"); } @Override @@ -57,7 +57,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Test @@ -65,7 +65,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg:String) { super(arg);}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n org.apache.royale.A.base(this, 'constructor', arg);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n org.apache.royale.A.base(this, 'constructor', arg);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Test @@ -73,7 +73,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg:String) {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -82,7 +82,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation implements TestInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -91,7 +91,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation implements TestInterface, TestOtherInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -100,7 +100,7 @@ { IClassNode node = getClassNode("public final class A extends TestImplementation implements TestInterface, TestOtherInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -109,7 +109,7 @@ { IClassNode node = getClassNode("public class A extends custom.TestImplementation implements custom.TestInterface, custom.TestOtherInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -118,7 +118,7 @@ { IClassNode node = getClassNode("public class A extends custom.TestImplementation { public function A() { super('foo', 42);}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n org.apache.royale.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Test @@ -126,7 +126,7 @@ { IClassNode node = getClassNode("public class B {public function B(arg1:String) {this.arg1 = arg1}; public var arg1:String;}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n * @param {string} arg1\n */\norg.apache.royale.B = function(arg1) {\n this.arg1 = arg1;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.arg1 = null;"; + String expected = "/**\n * @constructor\n * @param {string} arg1\n */\norg.apache.royale.B = function(arg1) {\n this.arg1 = arg1;\n};\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.arg1 = null;"; assertOut(expected); } @@ -135,7 +135,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public var event:Event = new Event(); public function foo():String {return event.type;};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n\nthis.event = new Event();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {Event}\n */\norg.apache.royale.B.prototype.event = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo = function() {\n return this.event.type;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n\nthis.event = new Event();\n};\n\n\n/**\n * @export\n * @type {Event}\n */\norg.apache.royale.B.prototype.event = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo = function() {\n return this.event.type;\n};"; assertOut(expected); } @@ -144,7 +144,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():void {};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.foo = function() {\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.foo = function() {\n};"; assertOut(expected); } @@ -153,7 +153,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { var a:int = 123; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123;\n return a;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123;\n return a;\n};"; assertOut(expected); } @@ -162,7 +162,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { var a:Number = 123.4; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return (a) >> 0;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return (a) >> 0;\n};"; assertOut(expected); } @@ -171,7 +171,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { return 123.4 };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n return 123;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n return 123;\n};"; assertOut(expected); } @@ -180,7 +180,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { var a:uint = 123; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123;\n return a;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123;\n return a;\n};"; assertOut(expected); } @@ -189,7 +189,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { var a:Number = 123.4; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return (a) >>> 0;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return (a) >>> 0;\n};"; assertOut(expected); } @@ -198,7 +198,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { return 123.4 };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n return 123;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n return 123;\n};"; assertOut(expected); } @@ -207,7 +207,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { var a:Boolean = true; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {boolean} */ a = true;\n return a;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {boolean} */ a = true;\n return a;\n};"; assertOut(expected); } @@ -216,7 +216,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { var a:Number = 123.4; return a; };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return !!(a);\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n var /** @type {number} */ a = 123.4;\n return !!(a);\n};"; assertOut(expected); } @@ -225,7 +225,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { return 123.4 };}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n return true;\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n return true;\n};"; assertOut(expected); } @@ -234,7 +234,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n};"; assertOut(expected); } @@ -243,7 +243,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; override public function foo(value:Object):void {baz = ''};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function(value) {\n baz = '';\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function(value) {\n baz = '';\n};"; assertOut(expected); } @@ -252,7 +252,7 @@ { IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {super.foo();};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n org.apache.royale.B.superClass_.foo.apply(this);\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n org.apache.royale.B.superClass_.foo.apply(this);\n};"; assertOut(expected); } @@ -261,7 +261,7 @@ { 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.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\norg.apache.royale.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n * @export\n * @type {Object} */\nbaz: {\nset: org.apache.royale.B.prototype.set__baz},\n/**\n * @export\n * @type {Object} */\nfoo: {\nset: org.apache.royale.B.prototype.set__foo}}\n);"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\norg.apache.royale.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n * @export\n * @type {Object} */\nbaz: {\nset: org.apache.royale.B.prototype.set__baz},\n/**\n * @export\n * @type {Object} */\nfoo: {\nset: org.apache.royale.B.prototype.set__foo}}\n);"; assertOut(expected); } @@ -270,7 +270,7 @@ { 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.royale.A}\n */\norg.apache.royale.B = function() {\n org.apache.royale.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.B, org.apache.royale.A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n org.apache.royale.B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n * @export\n * @type {Object} */\nfoo: {\nset: org.apache.royale.B.prototype.set__foo}}\n);"; + String expected = "/**\n * @constructor\n * @extends {org.apache.royale.A}\n */\norg.apache.royale.B = function() {\n org.apache.royale.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.B, org.apache.royale.A);\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n org.apache.royale.B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n * @export\n * @type {Object} */\nfoo: {\nset: org.apache.royale.B.prototype.set__foo}}\n);"; assertOut(expected); } @@ -279,7 +279,7 @@ { IClassNode node = getClassNode("import custom.custom_namespace; use namespace custom_namespace; public class B {public function B() {}; custom_namespace function foo():void {};}"); asBlockWalker.visitClass(node); - String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = function() {\n};"; + String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = function() {\n};"; assertOut(expected); } @@ -289,7 +289,7 @@ FileNode node = (FileNode)getNode("package org.apache.royale {\npublic class B {public function B() {}; }} class A {public function get a():A {return null}}", FileNode.class, 0); asBlockWalker.visitFile(node); String expected = "/**\n * org.apache.royale.B\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.B');\ngoog.provide('org.apache.royale.B.A');\n\n\n\n" + - "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);" + + "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};" + "\n\n\n/**\n" + " * Metadata\n" + " *\n" + @@ -328,12 +328,6 @@ "};\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('org.apache.royale.B.A', org.apache.royale.B.A);\n" + - "\n" + - "\n" + "org.apache.royale.B.A.prototype.get__a = function() {\n" + " return null;\n" + "};\n" + @@ -386,7 +380,7 @@ { IClassNode node = getClassNode("public class A extends custom.TestImplementation {public function A(arg1:String, arg2:int) {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);"); } @Override @@ -396,7 +390,7 @@ IClassNode node = getClassNode("public class A {public var a:Object;protected var b:String; " + "private var c:int; internal var d:uint; var e:Number}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.d = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.e = NaN;"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.d = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.e = NaN;"); } @Test @@ -407,7 +401,7 @@ asBlockWalker.visitClass(node); assertOut("/**\n * @constructor\n" + " */\norg.apache.royale.A = function() {\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" + + "};\n\n\n" + "/**\n" + " * @export\n" + " * @type {Object}\n" + @@ -495,7 +489,7 @@ assertOut("/**\n * @constructor\n" + " */\norg.apache.royale.A = function() {\n\n" + "this.a_ = {foo:1};\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" + + "};\n\n\n" + "/**\n" + " * @export\n" + " * @type {Object}\n" + @@ -582,7 +576,7 @@ asBlockWalker.visitClass(node); assertOut("/**\n * @constructor\n" + " */\norg.apache.royale.A = function() {\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" + + "};\n\n\n" + "/**\n" + " * @export\n" + " * @type {Object}\n" + @@ -632,7 +626,7 @@ IClassNode node = getClassNode("public class A {public static var a:int = 10;public static var b:String = initStatic(); " + "private static function initStatic():String { return \"foo\"; }}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @type {number}\n */\norg.apache.royale.A.a = 10;\n\n\n/**\n * @export\n * @nocollapse\n * @type {string}\n */\norg.apache.royale.A.b;\n\n\n/**\n * @private\n * @return {string}\n */\norg.apache.royale.A.initStatic = function() {\n return \"foo\";\n};\n\norg.apache.royale.A.b = org.apache.royale.A.initStatic();\n\n"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @nocollapse\n * @type {number}\n */\norg.apache.royale.A.a = 10;\n\n\n/**\n * @export\n * @nocollapse\n * @type {string}\n */\norg.apache.royale.A.b;\n\n\n/**\n * @private\n * @return {string}\n */\norg.apache.royale.A.initStatic = function() {\n return \"foo\";\n};\n\norg.apache.royale.A.b = org.apache.royale.A.initStatic();\n\n"); } @Test @@ -640,7 +634,7 @@ { FileNode node = (FileNode)getNode("package org.apache.royale {\npublic class A {\nimport flash.display.Sprite; Sprite;\n}}", FileNode.class, 0); asBlockWalker.visitFile(node); - assertOut("/**\n * org.apache.royale.A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.A');\n\n\n\n/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * org.apache.royale.A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.A');\n\n\n\n/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -653,7 +647,7 @@ + "private static const C:Number = 42;" + "custom_namespace static const C:String = 'me' + 'you';}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.royale.A.C = 42;\n\n\n/**\n * @const\n * @type {string}\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__C = 'me' + 'you';"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.royale.A.C = 42;\n\n\n/**\n * @const\n * @type {string}\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__C = 'me' + 'you';"); } @Override @@ -672,7 +666,7 @@ + "custom_namespace function get foo6():Object{return null;}" + "custom_namespace function set foo6(value:Object):void{}" + "}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" + + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n" + "org.apache.royale.A.prototype.get__foo1 = function() {\n return null;\n};\n\n\n" + "org.apache.royale.A.prototype.set__foo1 = function(value) {\n};\n\n\n" + "org.apache.royale.A.prototype.get__foo2 = function() {\n return null;\n};\n\n\n" + @@ -707,7 +701,7 @@ + "public static function foo7(value:Object):void{}" + "custom_namespace static function foo7(value:Object):void{}" + "}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n return null;\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.A.prototype.foo1b = function() {\n return org.apache.royale.A.superClass_.foo1b.apply(this);\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo6 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.foo7 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__foo7 = function(value) {\n};"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n return null;\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.A.prototype.foo1b = function() {\n return org.apache.royale.A.superClass_.foo1b.apply(this);\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo6 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.royale.A.foo7 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__foo7 = function(value) {\n};"); } @Test @@ -718,7 +712,7 @@ + "public function foo2():Object{function bar2(param1:Object):Object {return null;}; return bar2('foo');}" + "}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n var self = this;\n function bar1() {\n return null;\n };\n return bar1();\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n var self = this;\n function bar2(param1) {\n return null;\n };\n return bar2('foo');\n};"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n var self = this;\n function bar1() {\n return null;\n };\n return bar1();\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n var self = this;\n function bar2(param1) {\n return null;\n };\n return bar2('foo');\n};"); } @Test @@ -730,7 +724,7 @@ + "public function foo2():String{function bar2(param1:String):String {return param1 + baz1;}; return bar2('foo');}" + "}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.baz1 = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n var self = this;\n function bar1() {\n return self.baz1;\n };\n return bar1();\n};\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n var self = this;\n function bar2(param1) {\n return param1 + self.baz1;\n };\n return bar2('foo');\n};"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.baz1 = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n var self = this;\n function bar1() {\n return self.baz1;\n };\n return bar1();\n};\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n var self = this;\n function bar2(param1) {\n return param1 + self.baz1;\n };\n return bar2('foo');\n};"); } @Test @@ -750,7 +744,7 @@ + "public function clone():B { return new B() }" + "}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {org.apache.royale.B}\n */\norg.apache.royale.B.prototype.clone = function() {\n return new org.apache.royale.B();\n};"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {org.apache.royale.B}\n */\norg.apache.royale.B.prototype.clone = function() {\n return new org.apache.royale.B();\n};"); } @Override @@ -759,7 +753,7 @@ { IClassNode node = getClassNode("public class A{}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -770,7 +764,7 @@ // in JS we ignore it IClassNode node = getClassNode("internal class A{}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -781,7 +775,7 @@ // in JS we ignore it IClassNode node = getClassNode("public final class A{}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -791,7 +785,7 @@ // (erikdebruin) all JS objects are 'dynamic' by design IClassNode node = getClassNode("public dynamic class A{}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -800,7 +794,7 @@ { IClassNode node = getClassNode("public class A implements TestInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n};"); } @Override @@ -809,7 +803,7 @@ { IClassNode node = getClassNode("public class A implements TestInterface, TestOtherInterface {public function A() {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n};"); } @@ -819,7 +813,7 @@ { IClassNode node = getClassNode("public class A {public function A() { }}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};"); } @@ -829,7 +823,7 @@ { IClassNode node = getClassNode("public class A {public function A(arg1:String, arg2:int) {}}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);"); + assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n};"); } @Test @@ -837,7 +831,7 @@ { IClassNode node = getClassNode("public class A {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n \n this.foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;"); + assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n \n this.foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;"); } @Test @@ -845,7 +839,7 @@ { IClassNode node = getClassNode("import custom.custom_namespace; use namespace custom_namespace; public class A {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} custom_namespace var foo:Array = [];}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n \n this.http_$$ns_apache_org$2017$custom$namespace__foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @type {Array}\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = null;"); + assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n \n this.http_$$ns_apache_org$2017$custom$namespace__foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * @type {Array}\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = null;"); } @Test @@ -853,7 +847,7 @@ { IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n org.apache.royale.A.base(this, 'constructor');\n \n this.foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;"); + assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n org.apache.royale.A.base(this, 'constructor');\n \n this.foo = [];\n arg2 = (arg2 + 2) >> 0;\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;"); } @Test @@ -861,7 +855,7 @@ { IClassNode node = getClassNode("public class A {public static const NAME:String = 'Dummy'; public function A(arg1:String = NAME) {_name = arg1;} private var _name:String;}"); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @param {string=} arg1\n */\norg.apache.royale.A = function(arg1) {\n arg1 = typeof arg1 !== 'undefined' ? arg1 : org.apache.royale.A.NAME;\n this._name = arg1;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {string}\n */\norg.apache.royale.A.NAME = 'Dummy';\n\n\n/**\n * @private\n * @type {string}\n */\norg.apache.royale.A.prototype._name = null;"); + assertOut("/**\n * @constructor\n * @param {string=} arg1\n */\norg.apache.royale.A = function(arg1) {\n arg1 = typeof arg1 !== 'undefined' ? arg1 : org.apache.royale.A.NAME;\n this._name = arg1;\n};\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {string}\n */\norg.apache.royale.A.NAME = 'Dummy';\n\n\n/**\n * @private\n * @type {string}\n */\norg.apache.royale.A.prototype._name = null;"); } protected IBackend createBackend()
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java index af42aec..95cf7b7 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
@@ -86,12 +86,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('com.example.components.MyEventTarget', com.example.components.MyEventTarget);\n" + - "\n" + - "\n" + - "/**\n" + " * @private\n" + " * @type {string}\n" + " */\n" + @@ -178,12 +172,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('com.example.components.TestInterface', com.example.components.TestInterface);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -235,12 +223,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('com.example.components.TestClass', com.example.components.TestClass);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -300,12 +282,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('com.example.components.TestClass', com.example.components.TestClass);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java index 631df2c..2c4e651 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
@@ -116,10 +116,6 @@ "RoyaleTest_A = function() {\n" + "};\n\n\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + - "/**\n" + " * @export\n" + " * @override\n" + " */\n" + @@ -487,6 +483,22 @@ } @Test + public void testVisitBinaryOperatorNode_XMLChildEqualsTrue() + { + IBinaryOperatorNode node = getBinaryNode("var var2:XML;var2.child == true"); + asBlockWalker.visitBinaryOperator(node); + assertOut("var2.child('child') == 'true'"); + } + + @Test + public void testVisitBinaryOperatorNode_XMLChildEqualsFalse() + { + IBinaryOperatorNode node = getBinaryNode("var var2:XML;var2.child == false"); + asBlockWalker.visitBinaryOperator(node); + assertOut("var2.child('child') == 'false'"); + } + + @Test public void testVisitBinaryOperatorNode_AssignmentStringLiteralToString() { IBinaryOperatorNode node = getBinaryNode("var var1:String;var1 = \"hi\""); @@ -1121,7 +1133,7 @@ "public class B {public static function b(ff:Function) { function c(f:Function):void {}; c(ff); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n * @param {Function} ff\n */\nB.b = function(ff) {\n function c(f) {\n };\n c(ff);\n}"); + assertOut("/**\n * @param {Function} ff\n */\nB.b = function(ff) {\n function c(f) {\n };\n c(ff);\n}"); } @Test @@ -1141,7 +1153,7 @@ "public class B {static public function b() { function c(f:Function):void {}; c(b); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE, true); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n c(foo.bar.B.b);\n}"); + assertOut("/**\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n c(foo.bar.B.b);\n}"); } @Test @@ -1211,7 +1223,7 @@ "public class B {static public function b() { function c(f:Function):void {}; var f:Function = b; c(f); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE, true); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = foo.bar.B.b;\n c(f);\n}"); + assertOut("/**\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = foo.bar.B.b;\n c(f);\n}"); } @Test @@ -1221,7 +1233,7 @@ "public class B {static public function b() { function c(f:Function):void {}; var f:Function = foo.bar.B.b; c(f); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE, true); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = foo.bar.B.b;\n c(f);\n}"); + assertOut("/**\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = foo.bar.B.b;\n c(f);\n}"); } @Test @@ -1241,7 +1253,7 @@ "public class B {static public function b() { function c(f:Function):void {}; var f:Function = null; f = b; c(f); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE, true); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = null;\n f = foo.bar.B.b;\n c(f);\n}"); + assertOut("/**\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Function} */ f = null;\n f = foo.bar.B.b;\n c(f);\n}"); } @Test @@ -1261,7 +1273,7 @@ "public class B {static public function b() { function c(f:Function):void {}; var f:Array = [b]; c(f); }}", IFunctionNode.class, WRAP_LEVEL_PACKAGE, true); asBlockWalker.visitFunction(node); - assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Array} */ f = [foo.bar.B.b];\n c(f);\n}"); + assertOut("/**\n */\nfoo.bar.B.b = function() {\n function c(f) {\n };\n var /** @type {Array} */ f = [foo.bar.B.b];\n c(f);\n}"); } @Test @@ -1325,7 +1337,7 @@ { IClassNode node = (IClassNode) getNode("import custom.TestOtherInterface; public class B implements TestOtherInterface { public function B() { TestOtherInterface(b).type = ''; } }", ClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n * @implements {custom.TestOtherInterface}\n */\nB = function() {\n org.apache.royale.utils.Language.as(b, custom.TestOtherInterface, true).type = '';\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);"); + assertOut("/**\n * @constructor\n * @implements {custom.TestOtherInterface}\n */\nB = function() {\n org.apache.royale.utils.Language.as(b, custom.TestOtherInterface, true).type = '';\n};"); } @Test
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java index f92714a..33005cd 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
@@ -159,7 +159,7 @@ IClassNode node = (IClassNode) getNode("protected var foo:Foo = new Foo('bar', 42);", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = new Foo('bar', 42);\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Foo}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = new Foo('bar', 42);\n};\n\n\n/**\n * @protected\n * @type {Foo}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -192,7 +192,7 @@ IClassNode node = (IClassNode) getNode("protected var foo:Array = [ 'foo' ]", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * @protected\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -201,7 +201,7 @@ IClassNode node = (IClassNode) getNode("protected var foo:Object = { 'foo': 'bar' }", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * @protected\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -210,7 +210,7 @@ IClassNode node = (IClassNode) getNode("import custom.custom_namespace;use namespace custom_namespace;public static var foo:Object = initFoo(); custom_namespace static function initFoo():Object { return null; }", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @export\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo();\n\n"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo();\n\n"); } @Test @@ -219,7 +219,7 @@ IClassNode node = (IClassNode) getNode("static public var foo:Object = { 'foo': 'bar' }", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};"); } @Test @@ -228,7 +228,7 @@ IClassNode node = (IClassNode) getNode("protected var foo:Number = parseFloat('1E2')", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * @protected\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -237,7 +237,7 @@ IClassNode node = (IClassNode) getNode("private static var empty:Function = function():void {}", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {Function}\n */\nRoyaleTest_A.empty = function() {\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {Function}\n */\nRoyaleTest_A.empty = function() {\n};"); } @Override @@ -318,7 +318,7 @@ IClassNode node = (IClassNode) getNode("protected const foo:Number = parseFloat('1E2');", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -327,7 +327,7 @@ IClassNode node = (IClassNode) getNode("protected const foo:Array = [ 'foo' ]", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * @protected\n * @const\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;"); } @Test @@ -336,7 +336,7 @@ IClassNode node = (IClassNode) getNode("protected const foo:Object = { 'foo': 'bar' }", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * @protected\n * @const\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;"); } @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java index 6dc1bca..ce6b83b 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java
@@ -40,7 +40,7 @@ { IInterfaceNode node = getInterfaceNode("public interface IA{}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);"); + assertOut("/**\n * @interface\n */\nIA = function() {\n};"); } @Override @@ -49,7 +49,7 @@ { IInterfaceNode node = getInterfaceNode("public interface IA extends IB{}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n * @extends {IB}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);"); + assertOut("/**\n * @interface\n * @extends {IB}\n */\nIA = function() {\n};"); } @Override @@ -58,7 +58,7 @@ { IInterfaceNode node = getInterfaceNode("public interface IA extends IB, IC, ID {}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n * @extends {IB}\n * @extends {IC}\n * @extends {ID}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);"); + assertOut("/**\n * @interface\n * @extends {IB}\n * @extends {IC}\n * @extends {ID}\n */\nIA = function() {\n};"); } @Override @@ -67,7 +67,7 @@ { IInterfaceNode node = getInterfaceNode("public interface IA extends foo.bar.IB, baz.goo.IC, foo.ID {}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n * @extends {foo.bar.IB}\n * @extends {baz.goo.IC}\n * @extends {foo.ID}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);"); + assertOut("/**\n * @interface\n * @extends {foo.bar.IB}\n * @extends {baz.goo.IC}\n * @extends {foo.ID}\n */\nIA = function() {\n};"); } @@ -79,7 +79,7 @@ + "function get foo1():Object;" + "function set foo1(value:Object):void;}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/** * @type {Object}\n */IA.prototype.foo1;"); + assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/** * @type {Object}\n */IA.prototype.foo1;"); } @Override @@ -90,7 +90,7 @@ + "function baz1():Object;" + "function baz2(value:Object):void;}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};"); + assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};"); } @Override @@ -103,7 +103,7 @@ + "function baz1():Object;" + "function baz2(value:Object):void;}"); asBlockWalker.visitInterface(node); - assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/** * @type {Object}\n */IA.prototype.foo1;\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};"); + assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/** * @type {Object}\n */IA.prototype.foo1;\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};"); } protected IBackend createBackend()
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java index b7664c2..54a7263 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java
@@ -113,7 +113,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){this.foo();}; private function foo():String{return '';};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n this.foo();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return '';\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n this.foo();\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return '';\n};"); } @Test @@ -121,7 +121,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){foo();}; private function foo():String{return '';};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n this.foo();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return '';\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n this.foo();\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return '';\n};"); } @Override @@ -130,7 +130,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private var baz:String; private function foo():String{return this.baz;};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return this.baz;\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return this.baz;\n};"); } @Test @@ -138,7 +138,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private var baz:String; private function foo():String{return baz;};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return this.baz;\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n return this.baz;\n};"); } @Override @@ -147,7 +147,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private function foo(value:int):String{return value;}; private function bar():String{if(true){while(i){return this.foo(42);}}};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.bar = function() {\n if (true) {\n while (i) {\n return this.foo(42);\n }\n }\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.bar = function() {\n if (true) {\n while (i) {\n return this.foo(42);\n }\n }\n};"); } @Test @@ -155,7 +155,7 @@ { IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private function foo(value:int):String{return value;}; private function bar():void{if(true){while(i){foo(42);}}};", IClassNode.class, WRAP_LEVEL_CLASS); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n */\nRoyaleTest_A.prototype.bar = function() {\n if (true) {\n while (i) {\n this.foo(42);\n }\n }\n};"); + assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n */\nRoyaleTest_A.prototype.bar = function() {\n if (true) {\n while (i) {\n this.foo(42);\n }\n }\n};"); } @Override @@ -177,7 +177,7 @@ // (erikdebruin) here we actually DO want to declare the method // directly on the 'class' constructor instead of the // prototype! - assertOut("/**\n * @export\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nRoyaleTest_A.foo = function(bar, baz) {\n baz = typeof baz !== 'undefined' ? baz : null;\n return -1;\n}"); + assertOut("/**\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nRoyaleTest_A.foo = function(bar, baz) {\n baz = typeof baz !== 'undefined' ? baz : null;\n return -1;\n}"); } @Override @@ -211,7 +211,7 @@ { IClassNode node = (IClassNode) getNode("public abstract class A { public abstract function a(arg1:String):Object; }", IClassNode.class, WRAP_LEVEL_PACKAGE); asBlockWalker.visitClass(node); - assertOut("/**\n * @constructor\n */\nA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('A', A);\n\n\n/**\n * @export\n * @param {string} arg1\n * @return {Object}\n */\nA.prototype.a = function(arg1) {\n};"); + assertOut("/**\n * @constructor\n */\nA = function() {\n};\n\n\n/**\n * @export\n * @param {string} arg1\n * @return {Object}\n */\nA.prototype.a = function(arg1) {\n};"); } @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java index 6e9ebc5..08c748d 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java
@@ -82,7 +82,7 @@ " * @constructor\n" + " */\n" + "A = function() {\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('A', A);\n" + + "};\n" + "\n" + "\n" + "/**\n" + @@ -131,7 +131,7 @@ " * @constructor\n" + " */\n" + "foo.bar.baz.A = function() {\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + + "};\n" + "\n" + "\n" + "/**\n" + @@ -184,12 +184,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -252,12 +246,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -312,12 +300,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -373,12 +355,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * @export\n" + " */\n" + "foo.bar.baz.A.prototype.foo = function() {\n" + @@ -452,12 +428,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -496,12 +466,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -564,12 +528,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -636,12 +594,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -724,12 +676,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -768,12 +714,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" + - "\n" + - "\n" + - "/**\n" + " * @export\n" + " * @nocollapse\n" + " * @type {string}\n" + @@ -782,7 +722,6 @@ "\n" + "\n" + "/**\n" + - " * @export\n" + " * @return {string}\n" + " */\n" + "foo.bar.baz.A.InternalClass.someStaticFunction = function() {\n" + @@ -890,12 +829,6 @@ "};\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + "foo.bar.baz.A.prototype.get__myString = function() {\n" + " return null;\n" + "};\n" + @@ -958,12 +891,6 @@ "};\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" + - "\n" + - "\n" + "foo.bar.baz.A.InternalClass.prototype.get__someString = function() {\n" + " return null;\n" + "};\n" + @@ -1062,12 +989,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" + - "\n" + - "\n" + - "/**\n" + " * Metadata\n" + " *\n" + " * @type {Object.<string, Array.<Object>>}\n" + @@ -1103,12 +1024,6 @@ " */\n" + "foo.bar.baz.A.ITestInterface = function() {\n" + "};\n" + - "\n" + - "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A.ITestInterface', foo.bar.baz.A.ITestInterface);\n" + "foo.bar.baz.A.ITestInterface.prototype.test = function() {\n" + "};\n" + "\n" + @@ -1153,12 +1068,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" + - "\n" + - "\n" + - "/**\n" + " * @export\n" + " */\n" + "foo.bar.baz.A.InternalClass.prototype.test = function() {\n" + @@ -1240,12 +1149,6 @@ "\n" + "\n" + "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('foo.bar.A.Internal', foo.bar.A.Internal);\n" + - "\n" + - "\n" + - "/**\n" + " * @export\n" + " * @nocollapse\n" + " * @const\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java index 50ab0e0..0234544 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java
@@ -718,7 +718,7 @@ " * @constructor\n" + " */\n" + "RoyaleTest_A = function() {\n" + - "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" + + "};\n\n\n" + "RoyaleTest_A.prototype.royaleTest_a = function() {\n" + " var self = this;\n" + " var /** @type {number} */ len = 0;\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java index 0a806bf..6524960 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java
@@ -199,11 +199,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -317,11 +312,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -410,11 +400,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -504,15 +489,10 @@ " this.mxmldp;\n" + "};\n" + "goog.inherits(AppName, org.apache.royale.core.Application);\n" + - "\n" + - "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + "\n" + "\n" + "\n" + + "\n" + "/**\n" + " * Metadata\n" + " *\n" + @@ -640,11 +620,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -783,11 +758,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -927,11 +897,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1109,11 +1074,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1256,11 +1216,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1401,11 +1356,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1548,11 +1498,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1694,11 +1639,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1797,11 +1737,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -1834,11 +1769,6 @@ "};\n" + "goog.inherits(AppName.AppName_component0, org.apache.royale.html.DropDownList);\n" + "\n" + - "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName.AppName_component0', AppName.AppName_component0);\n" + "\n" + "\n" + "/**\n" + @@ -1994,11 +1924,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -2122,11 +2047,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -2240,15 +2160,9 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + - " * @export\n" + " * @param {string} foo\n" + " */\n" + "AppName.fn_test = function(foo) {\n" + @@ -2376,11 +2290,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java index 7767429..f0eee63 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
@@ -79,11 +79,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -179,11 +174,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -283,11 +273,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -348,48 +333,43 @@ mxmlBlockWalker.visitDocument(dnode); String appName = dnode.getQualifiedName(); String outTemplate = "/**\n" + - " * AppName\n" + - " *\n" + - " * @fileoverview\n" + - " *\n" + - " * @suppress {checkTypes|accessControls}\n" + - " */\n" + - "\n" + - "goog.provide('AppName');\n" + - "\n" + - "goog.require('org.apache.royale.core.Application');\n" + - "goog.require('org.apache.royale.events.CloseEvent');\n" + - "\n" + - "\n" + - "\n" + - "/**\n" + - " * @constructor\n" + - " * @extends {org.apache.royale.core.Application}\n" + - " */\n" + - "AppName = function() {\n" + - " AppName.base(this, 'constructor');\n" + - " \n" + - " /**\n" + - " * @private\n" + - " * @type {Array}\n" + - " */\n" + - " this.mxmldd;\n" + - " \n" + - " /**\n" + - " * @private\n" + - " * @type {Array}\n" + - " */\n" + - " this.mxmldp;\n" + - "};\n" + - "goog.inherits(AppName, org.apache.royale.core.Application);\n" + - "\n" + - "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + - "\n" + + " * AppName\n" + + " *\n" + + " * @fileoverview\n" + + " *\n" + + " * @suppress {checkTypes|accessControls}\n" + + " */\n" + + "\n" + + "goog.provide('AppName');\n" + + "\n" + + "goog.require('org.apache.royale.core.Application');\n" + + "goog.require('org.apache.royale.events.CloseEvent');\n" + + "\n" + + "\n" + + "\n" + + "/**\n" + + " * @constructor\n" + + " * @extends {org.apache.royale.core.Application}\n" + + " */\n" + + "AppName = function() {\n" + + " AppName.base(this, 'constructor');\n" + + " \n" + + " /**\n" + + " * @private\n" + + " * @type {Array}\n" + + " */\n" + + " this.mxmldd;\n" + + " \n" + + " /**\n" + + " * @private\n" + + " * @type {Array}\n" + + " */\n" + + " this.mxmldp;\n" + + "};\n" + + "goog.inherits(AppName, org.apache.royale.core.Application);\n" + + "\n" + + "\n" + + "\n" + "\n" + "AppName.get__foo = function() {\n" + " var value = org.apache.royale.events.CloseEvent.CLOSE;\n" + @@ -501,11 +481,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -600,11 +575,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "/**\n" + @@ -665,48 +635,43 @@ mxmlBlockWalker.visitDocument(dnode); String appName = dnode.getQualifiedName(); String outTemplate = "/**\n" + - " * AppName\n" + - " *\n" + - " * @fileoverview\n" + - " *\n" + - " * @suppress {checkTypes|accessControls}\n" + - " */\n" + - "\n" + - "goog.provide('AppName');\n" + - "\n" + - "goog.require('org.apache.royale.core.Application');\n" + - "goog.require('org.apache.royale.events.CloseEvent');\n" + - "\n" + - "\n" + - "\n" + - "/**\n" + - " * @constructor\n" + - " * @extends {org.apache.royale.core.Application}\n" + - " */\n" + - "AppName = function() {\n" + - " AppName.base(this, 'constructor');\n" + - " \n" + - " /**\n" + - " * @private\n" + - " * @type {Array}\n" + - " */\n" + - " this.mxmldd;\n" + - " \n" + - " /**\n" + - " * @private\n" + - " * @type {Array}\n" + - " */\n" + - " this.mxmldp;\n" + - "};\n" + - "goog.inherits(AppName, org.apache.royale.core.Application);\n" + - "\n" + - "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + - "\n" + + " * AppName\n" + + " *\n" + + " * @fileoverview\n" + + " *\n" + + " * @suppress {checkTypes|accessControls}\n" + + " */\n" + + "\n" + + "goog.provide('AppName');\n" + + "\n" + + "goog.require('org.apache.royale.core.Application');\n" + + "goog.require('org.apache.royale.events.CloseEvent');\n" + + "\n" + + "\n" + + "\n" + + "/**\n" + + " * @constructor\n" + + " * @extends {org.apache.royale.core.Application}\n" + + " */\n" + + "AppName = function() {\n" + + " AppName.base(this, 'constructor');\n" + + " \n" + + " /**\n" + + " * @private\n" + + " * @type {Array}\n" + + " */\n" + + " this.mxmldd;\n" + + " \n" + + " /**\n" + + " * @private\n" + + " * @type {Array}\n" + + " */\n" + + " this.mxmldp;\n" + + "};\n" + + "goog.inherits(AppName, org.apache.royale.core.Application);\n" + + "\n" + + "\n" + + "\n" + "\n" + "AppName.get__foo = function() {\n" + " var value = org.apache.royale.events.CloseEvent.CLOSE;\n" + @@ -814,11 +779,6 @@ "goog.inherits(AppName, org.apache.royale.core.Application);\n" + "\n" + "\n" + - "/**\n" + - " * Prevent renaming of class. Needed for reflection.\n" + - " */\n" + - "goog.exportSymbol('AppName', AppName);\n" + - "\n" + "\n" + "\n" + "//use namespace custom.custom_namespace;\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java index c937cd0..c5067fe 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java
@@ -37,7 +37,7 @@ .getAncestorOfType(IMXMLDocumentNode.class); mxmlBlockWalker.walk(dnode); ///event - assertMapping(node, 0, 6, 79, 2, 79, 7); // event + assertMapping(node, 0, 6, 74, 2, 74, 7); // event //the start column in the ActionScript seems to be outside the quote //instead of inside. that seems like a bug. -JT }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java index d449174..edf8c4f 100644 --- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java +++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
@@ -45,7 +45,7 @@ assertTrue(definitionName.startsWith(getClass().getSimpleName())); int endColumn = definitionName.length() + 14; ///**\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo - assertMapping(node, 0, 4, 47, 0, 47, endColumn); // foo + assertMapping(node, 0, 4, 42, 0, 42, endColumn); // foo } @Test @@ -63,11 +63,11 @@ assertTrue(definitionName.startsWith(getClass().getSimpleName())); int nameEndColumn = definitionName.length() + 14; ///**\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo - assertMapping(node, 0, 9, 44, 0, 44, nameEndColumn); // foo - assertMapping(node, 0, 0, 44, nameEndColumn, 44, nameEndColumn + 11); // = function - assertMapping(node, 0, 12, 44, nameEndColumn + 11, 44, nameEndColumn + 12); // ( - assertMapping(node, 0, 13, 44, nameEndColumn + 12, 44, nameEndColumn + 13); // ) - assertMapping(node, 0, 14, 44, nameEndColumn + 14, 44, nameEndColumn + 15); // { - assertMapping(node, 0, 15, 45, 0, 45, 1); // } + assertMapping(node, 0, 9, 39, 0, 39, nameEndColumn); // foo + assertMapping(node, 0, 0, 39, nameEndColumn, 39, nameEndColumn + 11); // = function + assertMapping(node, 0, 12, 39, nameEndColumn + 11, 39, nameEndColumn + 12); // ( + assertMapping(node, 0, 13, 39, nameEndColumn + 12, 39, nameEndColumn + 13); // ) + assertMapping(node, 0, 14, 39, nameEndColumn + 14, 39, nameEndColumn + 15); // { + assertMapping(node, 0, 15, 40, 0, 40, 1); // } } }
diff --git a/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js b/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js index d5c832f..fb8e594 100644 --- a/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js +++ b/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('LocalFunction', LocalFunction); - - -/** * @private * @type {string} */
diff --git a/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js b/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js index ff557ad..3bc10fb 100644 --- a/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js +++ b/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js
@@ -200,11 +200,6 @@ goog.inherits(MyInitialView, org.apache.royale.core.View); -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('MyInitialView', MyInitialView); - /**
diff --git a/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js b/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js index 78c68fb..dc301ee 100644 --- a/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js +++ b/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js
@@ -209,11 +209,6 @@ goog.inherits(RoyaleTest_again, org.apache.royale.core.Application); -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('RoyaleTest_again', RoyaleTest_again); - /**
diff --git a/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js b/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js index ed437af..4563cde 100644 --- a/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js +++ b/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js
@@ -46,12 +46,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('controllers.MyController', controllers.MyController); - - -/** * @private * @type {string} */
diff --git a/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js b/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js index e6be50d..378bfb1 100644 --- a/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js +++ b/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js
@@ -40,12 +40,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('models.MyModel', models.MyModel); - - -/** * @private * @type {string} */
diff --git a/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js b/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js index a841e31..5d2f8c2 100644 --- a/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js +++ b/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js
@@ -48,11 +48,6 @@ goog.inherits(wildcard_import, org.apache.royale.core.Application); -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('wildcard_import', wildcard_import); - /**
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js index 1a6f4d8..9ece63f 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Test', Test); - - -/** * @export * @override */
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js index 8dc18ff..9821355 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.A', classes.A); - - -/** * @export * @return {classes.B} */
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js index 42e6b64..838ebbb 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.B', classes.B); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js index 40feccb..75b2958 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.C', classes.C); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js index d6896fe..c387ada 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js
@@ -31,12 +31,6 @@ */ interfaces.IA = function() { }; - - -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.ID', interfaces.IA); interfaces.IA.prototype.someFunction = function() { }; interfaces.IA.prototype.someOtherFunction = function() {
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js index 702fb60..ab5dcca 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IB', interfaces.IB); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js index 819394a..8228c9e 100644 --- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js +++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IC', interfaces.IC); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js b/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js index 56f6ab2..7d16e91 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Base', Base); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js b/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js index df530bb..8ae26de 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js
@@ -33,12 +33,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Super', Super); - - -/** * @private * @type {Base} */
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js index 87271a0..2bf4522 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('A', A); - - -/** * @private */ A.prototype.test = function() {
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js index f5a1b1a..ad219ea 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js
@@ -33,12 +33,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('B', B); - - -/** * @export * @param {boolean} b * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js index ea9f1e3..ae8fa8c 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js
@@ -37,12 +37,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('C', C); - - -/** * @export * @param {boolean} b * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js index b6bfeee..584aa2e 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js
@@ -37,12 +37,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('D', D); - - -/** * @export * @param {boolean} b * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js index 688d5c4..33abf6f 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js
@@ -33,12 +33,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('E', E); - - -/** * @export * @param {boolean} b * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js index 5be3299..b6d8f61 100644 --- a/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js +++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js
@@ -37,12 +37,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('F', F); - - -/** * @export * @param {boolean} b * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js index f9cf4c8..c2a999d 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js
@@ -43,12 +43,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Test', Test); - - -/** * @export * @param {interfaces.IC} ic * @return {interfaces.IC}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js index d32bf18..da8e3db 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.A', classes.A); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js index 274f1bf..7c5786a 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.B', classes.B); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js index 78125c2..050d0e2 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.C', classes.C); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js index 1873432..86a144a 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IA', interfaces.IA); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js index 30f3376..2f05a3d 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IC', interfaces.IC); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js index 02e09ea..3d67102 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.ID', interfaces.ID); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js index 3e57834..5cf0879 100644 --- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js +++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js
@@ -28,12 +28,6 @@ */ interfaces.IE = function() { }; - - -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IE', interfaces.IE); interfaces.IE.prototype.myMethod = function() { }; /** * @type {string}
diff --git a/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js b/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js index 34c8332..266e02b 100644 --- a/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('MainClass', MainClass); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>} @@ -79,12 +73,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('MainClass.InternalClass', MainClass.InternalClass); - - -/** * @export * @type {OtherClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js b/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js index 907d8af..cadd4bb 100644 --- a/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('OtherClass', OtherClass); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js index 7644fc4..23a1310 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js
@@ -38,12 +38,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Test', Test); - - -/** * @export * @override */
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js index 58ce110..d44ac49 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.A', classes.A); - - -/** * @export * @return {classes.B} */
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js index 274f1bf..7c5786a 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.B', classes.B); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js index 4a75910..f237bb9 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('classes.C', classes.C); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js index 43ca268..688908e 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js
@@ -31,12 +31,6 @@ */ interfaces.IA = function() { }; - - -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IA', interfaces.IA); /** * @export * @return {classes.B}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js index 55cb770..37d0d58 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IB', interfaces.IB); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js index 958451b..f61ff09 100644 --- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js +++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('interfaces.IC', interfaces.IC); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js index 0f2a958..48da335 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('DifferentPackageAsConflict', DifferentPackageAsConflict); - - -/** * @private * @type {mypackage.TestClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js index 66a991c..c7afd93 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Event', Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js index 2fb9de0..dd079b3 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.TestClass', mypackage.TestClass); - - -/** * @private * @type {otherpackage.Event} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js index a9df84a..097c752 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('otherpackage.Event', otherpackage.Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js index da797cb..f19785c 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Event', Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js index f037289..c40cde5 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('NoConflictNoWindow', NoConflictNoWindow); - - -/** * @private * @type {mypackage.TestClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js index e4726df..d864bc8 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.TestClass', mypackage.TestClass); - - -/** * @private * @type {Event} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js index 66a991c..c7afd93 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Event', Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js index 65d2724..ea8c44f 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('NoConflictUseWindow', NoConflictUseWindow); - - -/** * @private * @type {mypackage.TestClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js index e4726df..d864bc8 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.TestClass', mypackage.TestClass); - - -/** * @private * @type {Event} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js index 66a991c..c7afd93 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Event', Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js index 07b5ac0..f670ad9 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('SamePackageAsConflict', SamePackageAsConflict); - - -/** * @private * @type {mypackage.TestClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js index b9429ad..18997ac 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.Event', mypackage.Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js index 1a9924f..f633ba1 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js
@@ -36,12 +36,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.TestClass', mypackage.TestClass); - - -/** * @private * @type {mypackage.Event} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js index 66a991c..c7afd93 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Event', Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js index 81a7d42..e904864 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('UseWindow', UseWindow); - - -/** * @private * @type {mypackage.TestClass} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js index ee74592..12579aa 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js
@@ -37,12 +37,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('mypackage.TestClass', mypackage.TestClass); - - -/** * @private * @type {Event} */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js index a9df84a..097c752 100644 --- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js +++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js
@@ -32,12 +32,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('otherpackage.Event', otherpackage.Event); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/super/Base_result.js b/compiler-jx/src/test/resources/royale/projects/super/Base_result.js index a9f9f92..f56c691 100644 --- a/compiler-jx/src/test/resources/royale/projects/super/Base_result.js +++ b/compiler-jx/src/test/resources/royale/projects/super/Base_result.js
@@ -35,12 +35,6 @@ goog.inherits(Base, Super); -/** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Base', Base); - - Base.prototype.get__text = function() { return "A" + Base.superClass_.get__text.apply(this); };
diff --git a/compiler-jx/src/test/resources/royale/projects/super/Super_result.js b/compiler-jx/src/test/resources/royale/projects/super/Super_result.js index 8116b6f..617a2e3 100644 --- a/compiler-jx/src/test/resources/royale/projects/super/Super_result.js +++ b/compiler-jx/src/test/resources/royale/projects/super/Super_result.js
@@ -31,12 +31,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('Super', Super); - - -/** * @private * @type {string} */
diff --git a/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js b/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js index 54f1e8b..8928228 100644 --- a/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js +++ b/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js
@@ -34,12 +34,6 @@ /** - * Prevent renaming of class. Needed for reflection. - */ -goog.exportSymbol('XMLRequire', XMLRequire); - - -/** * Metadata * * @type {Object.<string, Array.<Object>>}
diff --git a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt index 478e80d..bf99d0d 100644 --- a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt +++ b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt
@@ -65,4 +65,5 @@ TOKEN_SKIN_STATES_KEYWORD=54 TOKEN_ASDOC_COMMENT = 55 TOKEN_HOST_COMPONENT_KEYWORD = 56 -TOKEN_RESOURCEBUNDLE_KEYWORD = 59 \ No newline at end of file +TOKEN_RESOURCEBUNDLE_KEYWORD = 59 +TOKEN_ATTR_OPERATOR_NS_QUALIFIER = 62 \ No newline at end of file
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java index fa8b149..6c2d1c3 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ASToken.java
@@ -616,6 +616,7 @@ case TOKEN_KEYWORD_NULL: case TOKEN_LITERAL_NUMBER: case TOKEN_LITERAL_STRING: + case TOKEN_OPERATOR_NS_QUALIFIER: return true; } return false;
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java index de180fb..7e02f6a 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
@@ -1256,6 +1256,33 @@ metadataTokens = tokenizer.parseTokens(); } + // manage namespace variables + int i = 2;// skip the metadata type + while (i<metadataTokens.size()-1) { + MetadataToken t = metadataTokens.get(i); + if (t.getType()==MetadataTokenTypes.TOKEN_ATTR_OPERATOR_NS_QUALIFIER) { + // get the previous and next tokens to check there types and transform them as the left and right parts of the operator + MetadataToken prev = metadataTokens.get(i - 1); + MetadataToken next = metadataTokens.get(i + 1); + if (prev.getType()==MetadataTokenTypes.TOKEN_ATTR_UNKNOWN && next.getType()==MetadataTokenTypes.TOKEN_ATTR_UNKNOWN) { + // trasform to literal node if possible + NamespaceIdentifierNode nsNode = new NamespaceIdentifierNode(prev.getText()); + nsNode.setIsConfigNamespace(true); + ASToken op = new ASToken(TOKEN_OPERATOR_NS_QUALIFIER, t.getStart(), t.getEnd(), t.getLine(), t.getColumn(), t.getText()); + IdentifierNode idNode = new IdentifierNode(next.getText()); + IASNode n = transformToNSAccessExpression(nsNode, (ASToken) op, idNode); + if (n instanceof LiteralNode) { + // replace the left, operator and right tokens by the result string token + t = new MetadataToken(MetadataTokenTypes.TOKEN_STRING, prev.getSourcePath(), prev.getStart(), next.getEnd(), prev.getLine(), prev.getColumn(), ((LiteralNode)n).getValue()); + metadataTokens.remove(i+1); + metadataTokens.remove(i--); + metadataTokens.set(i, t); + } + } + } + ++i; + } + // Initialize metadata parser. final GenericTokenStream metadataTokenStream = new GenericTokenStream(metadataTokens); final MetadataParser metadataParser = new MetadataParser(metadataTokenStream);
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java index 56d82b9..663279f 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/MetadataTokenizer.java
@@ -292,6 +292,15 @@ { return null; } + case ASTokenTypes.TOKEN_OPERATOR_NS_QUALIFIER: + { + if (inAttrList) + { + return new MetadataToken(MetadataTokenTypes.TOKEN_ATTR_OPERATOR_NS_QUALIFIER, + sourcePath, startOffset, endOffset, + line, column, tokenString); + } + } } return null;
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/BaseRawMXMLTokenizer.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/BaseRawMXMLTokenizer.java index 7fd2f9f..f2bd895 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/BaseRawMXMLTokenizer.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/BaseRawMXMLTokenizer.java
@@ -22,9 +22,12 @@ import java.util.ArrayList; import java.util.List; +import org.apache.royale.compiler.common.ISourceLocation; +import org.apache.royale.compiler.common.SourceLocation; import org.apache.royale.compiler.internal.parsing.as.ASToken; import org.apache.royale.compiler.parsing.ICMToken; import org.apache.royale.compiler.problems.ASDocNotClosedProblem; +import org.apache.royale.compiler.problems.BadCharacterProblem; import org.apache.royale.compiler.problems.CommentNotClosedProblem; import org.apache.royale.compiler.problems.ICompilerProblem; import org.apache.royale.compiler.problems.MXMLUnclosedTagProblem; @@ -281,6 +284,29 @@ { getProblems().add(new ASDocNotClosedProblem((ASToken)token)); } + + protected void reportBadCharacterProblem(String badChar) + { + ISourceLocation location = getCurrentSourceLocation(badChar.length()); + ICompilerProblem problem = new BadCharacterProblem(location, badChar); + getProblems().add(problem); + } + + /** + * Create a {@code ISourceLocation} object based on the current lexer state. + * + * @param tokenLength Length of the problematic input. + * @return Current source location used to report a syntax problem. + */ + protected final ISourceLocation getCurrentSourceLocation(int tokenLength) + { + return new SourceLocation( + sourcePath, + getOffset(), + getOffset() + tokenLength, + getLine(), + getColumn()); + } protected List<ICompilerProblem> problems = null;
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/MXMLScopeBuilder.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/MXMLScopeBuilder.java index 74b308d..60e9353 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/MXMLScopeBuilder.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/mxml/MXMLScopeBuilder.java
@@ -107,7 +107,6 @@ fileScope.addDefinition(packageDefinition); problems = new LinkedList<ICompilerProblem>(); - problems.addAll(mxmlData.getProblems()); includeHandler = new IncludeHandler(fileSpecGetter); includeHandler.setProjectAndCompilationUnit(project, compilationUnit);
diff --git a/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex b/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex index be7802b..201f961 100644 --- a/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex +++ b/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex
@@ -532,4 +532,5 @@ <YYINITIAL, MARKUP, STRING1, STRING2, MARKUP_IGNORE, STRING1_IGNORE, STRING2_IGNORE> . { + reportBadCharacterProblem(yytext()); }
diff --git a/pom.xml b/pom.xml index 2871a72..9568ccb 100644 --- a/pom.xml +++ b/pom.xml
@@ -37,7 +37,7 @@ <connection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</connection> <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</developerConnection> <url>https://github.com/apache/royale-compiler</url> - <tag>release/0.9.7</tag> + <tag>HEAD</tag> </scm> <properties> @@ -55,6 +55,15 @@ <option.withSwf.enabled>false</option.withSwf.enabled> <release-profiles>apache-release,option-with-swf</release-profiles> + + <!-- Dont't open multiple connections to one service to upload multiple artifacts at the same time --> + <maven.wagon.httpconnectionManager.maxPerRoute>1</maven.wagon.httpconnectionManager.maxPerRoute> + <!-- Dont't open multiple connections in total to upload multiple artifacts at the same time --> + <maven.wagon.httpconnectionManager.maxTotal>1</maven.wagon.httpconnectionManager.maxTotal> + <!-- Change the retry handler to a version that supports retries --> + <maven.wagon.http.retryHandler.class>standard</maven.wagon.http.retryHandler.class> + <!-- Try at most 6 times to deploy every artifact --> + <maven.wagon.http.retryHandler.count>6</maven.wagon.http.retryHandler.count> </properties> <!-- Only configure the site distribution as the rest is handled by the apache parent --> @@ -103,6 +112,14 @@ </modules> <build> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http</artifactId> + <version>3.4.0</version> + </extension> + </extensions> + <plugins> <!-- Execute some checks if the environment ist correctly configured --> <plugin> @@ -143,7 +160,7 @@ <exclude>LICENSE*</exclude> <exclude>NOTICE*</exclude> <exclude>README*</exclude> - <exclude>RELEASE_NOTES*</exclude> + <exclude>**/RELEASE_NOTES*</exclude> <!-- Modules which are excluded from the build --> <!-- FlashBuilder settings. frameworks/fb.properties contains Alex' path entries and should be removed --> <exclude>fb.properties</exclude> @@ -510,7 +527,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> - <version>3.1.1</version> + <version>3.2.0</version> <configuration> <tags> <tag>