This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit 5c346ddfc999d56fd2cc598ddfdce1f5a83f5e15 Author: Alex Harui <aha...@apache.org> AuthorDate: Thu Jun 7 11:10:55 2018 -0700 check for @externs and output differently --- .../codegen/js/jx/PackageHeaderEmitter.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java index acc7317..2d7f52d 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java @@ -45,6 +45,7 @@ import org.apache.royale.compiler.internal.projects.RoyaleJSProject; import org.apache.royale.compiler.internal.scopes.ASProjectScope; import org.apache.royale.compiler.internal.scopes.PackageScope; import org.apache.royale.compiler.internal.tree.as.ClassNode; +import org.apache.royale.compiler.internal.tree.as.InterfaceNode; import org.apache.royale.compiler.projects.ICompilerProject; import org.apache.royale.compiler.scopes.IASScope; import org.apache.royale.compiler.targets.ITarget.TargetType; @@ -65,6 +66,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements @Override public void emit(IPackageDefinition definition) { + RoyaleJSProject project = (RoyaleJSProject) getProject(); IASScope containedScope = definition.getContainedScope(); ITypeDefinition type = EmitterUtils.findType(containedScope .getAllLocalDefinitions()); @@ -85,6 +87,17 @@ public class PackageHeaderEmitter extends JSSubEmitter implements getEmitter().getModel().isExterns = isExterns; } } + else if (typeNode instanceof InterfaceNode) + { + InterfaceNode interfaceNode = (InterfaceNode) typeNode; + ASDocComment asDoc = (ASDocComment) interfaceNode.getASDocComment(); + if (asDoc != null) + { + String asDocString = asDoc.commentNoEnd(); + isExterns = asDocString.contains(JSRoyaleEmitterTokens.EXTERNS.getToken()); + getEmitter().getModel().isExterns = isExterns; + } + } } if (qname == null) { @@ -118,7 +131,6 @@ public class PackageHeaderEmitter extends JSSubEmitter implements return; } - RoyaleJSProject project = (RoyaleJSProject) getProject(); List<File> sourcePaths = project.getSourcePath(); String sourceName = definition.getSourcePath(); for (File sourcePath : sourcePaths) @@ -187,6 +199,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements for (String part : parts) { current += part; + writeNewline("/** @const */"); if (firstOne) { write("var "); @@ -205,6 +218,8 @@ public class PackageHeaderEmitter extends JSSubEmitter implements public void emitContents(IPackageDefinition definition) { + if (getEmitter().getModel().isExterns) return; + // TODO (mschmalle) will remove this cast as more things get abstracted JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter(); @@ -309,7 +324,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements } - boolean emitsRequires = emitRequires(requiresList, writtenRequires, cname); + boolean emitsRequires = emitRequires(requiresList, writtenRequires, cname, royaleProject); boolean emitsInterfaces = emitInterfaces(interfacesList, writtenRequires); // erikdebruin: Add missing language feature support, with e.g. 'is' and @@ -349,7 +364,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements writeNewline(); } - private boolean emitRequires(List<String> requiresList, List<String> writtenRequires, String cname) + private boolean emitRequires(List<String> requiresList, List<String> writtenRequires, String cname, RoyaleJSProject project) { boolean emitsRequires = false; if (requiresList != null) @@ -366,6 +381,9 @@ public class PackageHeaderEmitter extends JSSubEmitter implements if (imp.equals(cname)) continue; + if (project.sourceExterns.contains(imp)) + continue; + if (NativeUtils.isNative(imp)) { if (!(imp.equals("QName") || imp.equals("Namespace") || imp.equals("XML") || imp.equals("XMLList"))) -- To stop receiving notification emails like this one, please contact aha...@apache.org.