You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/06/07 20:03:36 UTC
[royale-compiler] 02/05: check for @externs and output differently
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 <ah...@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
aharui@apache.org.