You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2019/08/06 19:02:57 UTC
[royale-compiler] branch develop updated: FieldEmitter: in addition
to analyzing function calls for static dependencies,
also analyzes constructors that are called
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new fd9e237 FieldEmitter: in addition to analyzing function calls for static dependencies, also analyzes constructors that are called
fd9e237 is described below
commit fd9e23730b4b6db512dc781b9dbbf644dc123e79
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Tue Aug 6 12:02:48 2019 -0700
FieldEmitter: in addition to analyzing function calls for static dependencies, also analyzes constructors that are called
---
.../internal/codegen/js/jx/FieldEmitter.java | 23 +++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
index 85a9c06..784c9c5 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -25,7 +25,9 @@ import org.apache.royale.compiler.codegen.js.goog.IJSGoogDocEmitter;
import org.apache.royale.compiler.common.ASModifier;
import org.apache.royale.compiler.common.ModifiersSet;
import org.apache.royale.compiler.constants.IASKeywordConstants;
+import org.apache.royale.compiler.definitions.IClassDefinition;
import org.apache.royale.compiler.definitions.IDefinition;
+import org.apache.royale.compiler.definitions.IFunctionDefinition;
import org.apache.royale.compiler.definitions.IVariableDefinition;
import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.royale.compiler.internal.codegen.js.JSEmitterTokens;
@@ -126,12 +128,12 @@ public class FieldEmitter extends JSSubEmitter implements
String vnodeString = getEmitter().stringifyNode(vnode);
if (ndef.isStatic() && vnode instanceof FunctionCallNode)
{
- FunctionCallNode fcn = (FunctionCallNode)vnode;
+ FunctionCallNode fcn = (FunctionCallNode)vnode;
if (fcn.getNameNode() instanceof IdentifierNode)
{
+ IDefinition d = fcn.getNameNode().resolve(getProject());
// assume this is a call to static method in the class
// otherwise it would be a memberaccessexpression?
- IDefinition d = (IDefinition)fcn.getNameNode().resolve(getProject());
if (d instanceof FunctionDefinition)
{
FunctionDefinition fd = (FunctionDefinition)d;
@@ -141,7 +143,22 @@ public class FieldEmitter extends JSSubEmitter implements
// re-emit it to collect static initializer class references in usedNames
getEmitter().stringifyNode(m);
}
- }
+ }
+ //it could also be a constructor
+ else if (d instanceof IClassDefinition)
+ {
+ IClassDefinition classDef = (IClassDefinition) d;
+ IFunctionDefinition constructorDef = classDef.getConstructor();
+ if (constructorDef != null)
+ {
+ IASNode m = constructorDef.getNode();
+ if (m != null)
+ {
+ // re-emit it to collect static initializer class references in usedNames
+ getEmitter().stringifyNode(m);
+ }
+ }
+ }
}
}
getModel().inStaticInitializer = false;