You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/11/18 17:52:35 UTC
git commit: [flex-falcon] [refs/heads/develop] - FLEX-35050 introduce
error reporting in Externc
Repository: flex-falcon
Updated Branches:
refs/heads/develop 1186a121c -> 7a6ec7227
FLEX-35050 introduce error reporting in Externc
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/7a6ec722
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/7a6ec722
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/7a6ec722
Branch: refs/heads/develop
Commit: 7a6ec7227cebe3a9a36618dad2bb79f7482e701a
Parents: 1186a12
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 18 09:50:51 2016 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 18 09:51:27 2016 -0800
----------------------------------------------------------------------
.../org/apache/flex/compiler/clients/EXTERNC.java | 8 ++++++--
.../externals/reference/ClassReference.java | 15 ++++++++++++++-
.../codegen/externals/ExternalsTestBase.java | 3 +++
.../codegen/externals/TestExternChrome.java | 18 +++++++++++++++++-
4 files changed, 40 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7a6ec722/compiler-jx/src/main/java/org/apache/flex/compiler/clients/EXTERNC.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/EXTERNC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/EXTERNC.java
index ed96162..8124817 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/EXTERNC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/EXTERNC.java
@@ -56,6 +56,7 @@ public class EXTERNC implements FlexTool
final int code;
}
+ public static Set<ICompilerProblem> problems;
protected Configurator projectConfigurator;
private ExternCConfiguration configuration;
private ReferenceModel model;
@@ -137,7 +138,7 @@ public class EXTERNC implements FlexTool
final EXTERNC compiler = new EXTERNC();
compiler.configure(args);
- final Set<ICompilerProblem> problems = new HashSet<ICompilerProblem>();
+ problems = new HashSet<ICompilerProblem>();
final int exitCode = compiler.mainNoExit(args, problems, true);
long endTime = System.nanoTime();
@@ -149,7 +150,7 @@ public class EXTERNC implements FlexTool
public int mainNoExit(final String[] args, Set<ICompilerProblem> problems,
Boolean printProblems)
{
- int exitCode = -1;
+ int exitCode = 0;
try
{
@@ -167,6 +168,9 @@ public class EXTERNC implements FlexTool
{
if (printProblems)
{
+ for (ICompilerProblem problem : problems)
+ System.out.println(problem.toString() + " " + problem.getSourcePath() + " " + problem.getLine());
+ exitCode = ExitCode.FAILED_WITH_PROBLEMS.code;
}
}
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7a6ec722/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
index 469a5df..f59c8bc 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
@@ -28,8 +28,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.flex.compiler.clients.EXTERNC;
import org.apache.flex.compiler.internal.codegen.externals.utils.DebugLogUtils;
import org.apache.flex.compiler.internal.codegen.externals.utils.JSTypeUtils;
+import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
+import org.apache.flex.compiler.problems.UnresolvedClassReferenceProblem;
import com.google.javascript.rhino.JSDocInfo;
import com.google.javascript.rhino.JSDocInfoBuilder;
@@ -528,7 +531,17 @@ public class ClassReference extends BaseReference
{
JSType jsType = getModel().evaluate(jsTypeExpression);
String interfaceName = jsType.toAnnotationString();
- result.add(getModel().getClassReference(interfaceName));
+ ClassReference interfaceReference = getModel().getClassReference(interfaceName);
+ if (interfaceReference != null)
+ result.add(interfaceReference);
+ else
+ {
+ IdentifierNode node = new IdentifierNode(interfaceName);
+ node.setSourcePath(this.getNode().getStaticSourceFile().toString());
+ node.setLine(this.getNode().getLineno());
+ UnresolvedClassReferenceProblem problem = new UnresolvedClassReferenceProblem(node, interfaceName);
+ EXTERNC.problems.add(problem);
+ }
}
return result;
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7a6ec722/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestBase.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestBase.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestBase.java
index c1526c0..078534b 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestBase.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestBase.java
@@ -23,11 +23,13 @@ import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
+import java.util.HashSet;
import org.apache.flex.compiler.clients.EXTERNC;
import org.apache.flex.compiler.clients.ExternCConfiguration;
import org.apache.flex.compiler.internal.codegen.externals.reference.MethodReference;
import org.apache.flex.compiler.internal.codegen.externals.reference.ReferenceModel;
+import org.apache.flex.compiler.problems.ICompilerProblem;
import org.apache.flex.utils.TestAdapterFactory;
import org.junit.After;
import org.junit.Assert;
@@ -52,6 +54,7 @@ public abstract class ExternalsTestBase
config = new ExternCConfiguration();
configure(config);
client = new EXTERNC(config);
+ EXTERNC.problems = new HashSet<ICompilerProblem>();
model = client.getModel();
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7a6ec722/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
index e79889d..bd3f39f 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
@@ -25,8 +25,10 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
+import org.apache.flex.compiler.clients.EXTERNC;
import org.apache.flex.compiler.clients.ExternCConfiguration;
import org.apache.flex.compiler.internal.codegen.externals.reference.ClassReference;
+import org.apache.flex.compiler.problems.ICompilerProblem;
import org.junit.Test;
import com.google.javascript.jscomp.Result;
@@ -39,6 +41,12 @@ public class TestExternChrome extends ExternalsTestBase
client.cleanOutput();
Result result = compile();
assertTrue(result.success);
+ if (EXTERNC.problems.size() > 0)
+ {
+ for (ICompilerProblem problem : EXTERNC.problems)
+ System.out.println(problem.toString() + " " + problem.getSourcePath() + " " + problem.getLine());
+ }
+ assertEquals(0, EXTERNC.problems.size());
String[] classes = {
"chrome",
@@ -60,7 +68,7 @@ public class TestExternChrome extends ExternalsTestBase
"ChromeLoadTimes",
"ChromeCsiInfo" };
- assertEquals(248, model.getClasses().size());
+ assertEquals(285, model.getClasses().size());
for (String className : classes)
{
assertTrue(model.hasClass(className));
@@ -75,6 +83,12 @@ public class TestExternChrome extends ExternalsTestBase
client.cleanOutput();
Result result = compile();
assertTrue(result.success);
+ if (EXTERNC.problems.size() > 0)
+ {
+ for (ICompilerProblem problem : EXTERNC.problems)
+ System.out.println(problem.toString() + " " + problem.getSourcePath() + " " + problem.getLine());
+ }
+ assertEquals(0, EXTERNC.problems.size());
// Port
ClassReference Port = model.getClassReference("Port");
@@ -148,6 +162,8 @@ public class TestExternChrome extends ExternalsTestBase
config.setASRoot(ExternalsTestUtils.AS_ROOT_DIR);
String coreRoot = ExternalsTestUtils.EXTERNAL_JS_DIR.getAbsolutePath();
+ config.addExternal(coreRoot + "/es3.js");
+ config.addExternal(coreRoot + "/es6.js");
config.addExternal(coreRoot + "/browser/chrome.js");
config.addExternal(coreRoot + "/browser/html5.js");
config.addExternal(coreRoot + "/browser/ie_dom.js");