Merge branch 'develop' of https://git-wip-us.apache.org/repos/asf/flex-falcon into develop
diff --git a/ApproveFalcon.xml b/ApproveFalcon.xml
index b732e29..49d5677 100644
--- a/ApproveFalcon.xml
+++ b/ApproveFalcon.xml
@@ -189,7 +189,7 @@
<delete file="jars.txt" />
<!-- this is a comma-delimited, no spaces, no-line-breaks list used to decide which jars
to skip in the rat-check of the binaries and which jars to examine before approval -->
- <property name="jars-list" value="compiler/lib/falcon-flexTasks.jar,compiler/lib/compc.jar,compiler/lib/compiler.jar,compiler/lib/falcon-asc.jar,compiler/lib/falcon-compc.jar,compiler/lib/falcon-flexTasks.jar,compiler/lib/falcon-mxmlc.jar,compiler/lib/falcon-optimizer.jar,compiler/lib/falcon-swfdump.jar,compiler/lib/fdb.jar,compiler/lib/flex-compiler-oem.jar,js/lib/compc.jar,js/lib/externc.jar,js/lib/jsc.jar,js/lib/mxmlc.jar"/>
+ <property name="jars-list" value="compiler/lib/compc.jar,compiler/lib/compiler.jar,compiler/lib/falcon-asc.jar,compiler/lib/falcon-compc.jar,compiler/lib/falcon-mxmlc.jar,compiler/lib/falcon-optimizer.jar,compiler/lib/falcon-swfdump.jar,compiler/lib/fdb.jar,compiler/lib/flex-compiler-oem.jar,js/lib/asdoc.jar,js/lib/falcon-flexTasks.jar,js/lib/compc.jar,js/lib/externc.jar,js/lib/jsc.jar,js/lib/mxmlc.jar"/>
<echo file="${basedir}/jars.txt" message="${jars-list}"/>
<echo file="${basedir}/jarexcludes.txt" message="${jars-list}"/>
<replaceregexp file="${basedir}/jarexcludes.txt" match="," flags="g" replace="${line.separator}" />
diff --git a/NOTICE b/NOTICE
index e9ed444..2f34c3b 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
Apache Flex Compiler
-Copyright 2012-2016 The Apache Software Foundation
+Copyright 2012-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/NOTICE.base b/NOTICE.base
index 4afe0a6..5a27857 100644
--- a/NOTICE.base
+++ b/NOTICE.base
@@ -1,5 +1,5 @@
Apache Flex Compiler
-Copyright 2012-2016 The Apache Software Foundation
+Copyright 2012-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/NOTICE.fdb b/NOTICE.fdb
index a58ab89..4962b1c 100644
--- a/NOTICE.fdb
+++ b/NOTICE.fdb
@@ -1,5 +1,5 @@
Apache Flex Debugger
-Copyright 2012-2016 The Apache Software Foundation
+Copyright 2012-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/NOTICE.jx b/NOTICE.jx
index a833bf3..9f7bf65 100644
--- a/NOTICE.jx
+++ b/NOTICE.jx
@@ -1,5 +1,5 @@
Apache Flex Cross-Compiler
-Copyright 2012-2016 The Apache Software Foundation
+Copyright 2012-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/NOTICE.oem b/NOTICE.oem
index 8240a10..735b898 100644
--- a/NOTICE.oem
+++ b/NOTICE.oem
@@ -1,5 +1,5 @@
Apache Flex Compiler
-Copyright 2012-2016 The Apache Software Foundation
+Copyright 2012-2017 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/README_JX b/README_JX
index cd1cc1e..7cd70a6 100644
--- a/README_JX
+++ b/README_JX
@@ -73,7 +73,6 @@
args4j = http://search.maven.org/remotecontent?filepath=args4j/args4j/2.0.28/args4j-2.0.28.jar
Google Closure Compiler - http://github.com/google/closure-compiler/archive/v 20151015.zip
commons-io - https://repo1.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.tar.gz
- org.json = http://search.maven.org/remotecontent?filepath=org/codeartisans/org.json/20131017/org.json-20131017.jar
Using the Binary Distribution
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 422ca64..6d24f5f 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,3 +1,16 @@
+Apache Flex 'Falcon' Compiler 0.8.0
+=================
+Apache Flex 'Falcon' Compiler 0.8.0 is the sixth release of a next-generation
+compiler intended to someday replace the MXMLC in Apache Flex SDKs, and is the
+compiler for Apache FlexJS SDKs.
+
+The compiler is now biased towards building Apache FlexJS projects. The Ant
+tasks now point to the cross-compiler, which can now build both SWFs and
+cross-compiler (transpile) MXML and AS to JS.
+
+Lots of bug fixes and other small improvements are included in this release.
+See the RELEASE_NOTES_JX file for a list of resolved issues.
+
Apache Flex 'Falcon' Compiler 0.7.0
=================
Apache Flex 'Falcon' Compiler 0.7.0 is the fifth release of a next-generation
diff --git a/RELEASE_NOTES_JX b/RELEASE_NOTES_JX
index 851646f..f683ea8 100644
--- a/RELEASE_NOTES_JX
+++ b/RELEASE_NOTES_JX
@@ -9,8 +9,16 @@
In addition, lots of bug fixes and small improvements are included in this release.
+New Features
+=================
+-FLEX-35186 Generate source maps for MXML files
+
Bug Fixes
---------
+-FLEX-35323 NullPointerException when setting property of <fx:Object/> with binding
+-FLEX-35317 Generated require() call for Node.js modules does not produce valid code if module name includes dashes
+-FLEX-35316 -version compiler option does not show version
+-FLEX-35300 Could not find file for class: Error
-FLEX-35239 Runtime error when setting a property to a constant value
-FLEX-35236 Binding is not working when [Bindable] is set for the class
-FLEX-35231 [FalconJX] Context Lost on Event Listeners
diff --git a/build.xml b/build.xml
index c6df1c3..231f152 100644
--- a/build.xml
+++ b/build.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" ?>
-
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -284,6 +283,8 @@
<target name="stage-source"
description="Package source files required to build in zip file" >
<antcall target="clean-temp"/>
+ <sleep seconds="3" />
+ <mkdir dir="${basedir}/temp"/>
<copy todir="${basedir}/temp" includeEmptyDirs="false">
<fileset dir="${basedir}">
diff --git a/compiler-jx/.classpath b/compiler-jx/.classpath
index d249dbd..79c17cd 100644
--- a/compiler-jx/.classpath
+++ b/compiler-jx/.classpath
@@ -9,7 +9,6 @@
<classpathentry kind="lib" path="lib/google/closure-compiler/compiler.jar"/>
<classpathentry kind="lib" path="lib/commons-io.jar"/>
<classpathentry kind="lib" path="lib/args4j.jar"/>
- <classpathentry kind="lib" path="lib/org.json.jar"/>
<classpathentry kind="lib" path="lib/guava.jar"/>
<classpathentry kind="lib" path="lib/flex-tool-api.jar"/>
<classpathentry kind="lib" path="lib/junit-4.10.jar"/>
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
index f13ee22..f9fcd9c 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
@@ -202,6 +202,7 @@
case SWF:
System.out.println("COMPC");
COMPC compc = new COMPC();
+ mxmlc = compc;
compc.configurationClass = JSGoogCompcConfiguration.class;
result = compc.mainNoExit(removeJSArgs(args));
if (result != 0)
@@ -213,6 +214,7 @@
case JS_FLEX:
System.out.println("COMPCJSCFlex");
COMPJSCFlex flex = new COMPJSCFlex();
+ lastCompiler = flex;
result = flex.mainNoExit(removeASArgs(args), problems.getProblems(), false);
if (result != 0)
{
@@ -220,7 +222,9 @@
}
break;
case JS_NATIVE:
+ case JS_NODE:
COMPJSCNative jsc = new COMPJSCNative();
+ lastCompiler = jsc;
result = jsc.mainNoExit(removeASArgs(args), problems.getProblems(), false);
if (result != 0)
{
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
index c403bbc..3744a67 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
@@ -29,8 +29,10 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import java.util.TreeSet;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -64,6 +66,7 @@
import org.apache.flex.compiler.targets.ITarget.TargetType;
import org.apache.flex.compiler.targets.ITargetSettings;
import org.apache.flex.compiler.units.ICompilationUnit;
+import org.apache.flex.compiler.units.ICompilationUnit.UnitType;
import org.apache.flex.swc.io.SWCReader;
/**
@@ -525,4 +528,39 @@
{
return TargetType.SWC;
}
+
+ @Override
+ public List<String> getSourceList()
+ {
+ ArrayList<String> list = new ArrayList<String>();
+ LinkedList<ICompilerProblem> problemList = new LinkedList<ICompilerProblem>();
+ try
+ {
+ Collection<ICompilerProblem> errors = new ArrayList<ICompilerProblem>();
+ Collection<ICompilationUnit> roots = ((FlexJSSWCTarget)target).getReachableCompilationUnits(errors);
+ Collection<ICompilationUnit> units = project.getReachableCompilationUnitsInSWFOrder(roots);
+ for (ICompilationUnit unit : units)
+ {
+ UnitType ut = unit.getCompilationUnitType();
+ if (ut == UnitType.AS_UNIT || ut == UnitType.MXML_UNIT)
+ {
+ list.add(unit.getAbsoluteFilename());
+ }
+ }
+ }
+ catch (InterruptedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return list;
+ }
+
+ @Override
+ public String getMainSource()
+ {
+ return null;
+ }
+
}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/ExternCConfiguration.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/ExternCConfiguration.java
index d3118e9..67bc814 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/ExternCConfiguration.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/ExternCConfiguration.java
@@ -38,6 +38,7 @@
import org.apache.flex.compiler.internal.config.annotations.Config;
import org.apache.flex.compiler.internal.config.annotations.InfiniteArguments;
import org.apache.flex.compiler.internal.config.annotations.Mapping;
+import org.apache.flex.compiler.utils.NodeJSUtils;
import org.apache.flex.utils.FilenameNormalization;
public class ExternCConfiguration extends Configuration
@@ -324,15 +325,7 @@
for (String module : namedModules)
{
//convert to camel case
- String camelCaseModule = module;
- int moduleIndex = camelCaseModule.indexOf("-");
- while (moduleIndex != -1 && moduleIndex < camelCaseModule.length() - 1)
- {
- camelCaseModule = camelCaseModule.substring(0, moduleIndex)
- + camelCaseModule.substring(moduleIndex + 1, moduleIndex + 2).toUpperCase()
- + camelCaseModule.substring(moduleIndex + 2);
- moduleIndex = camelCaseModule.indexOf("-");
- }
+ String camelCaseModule = NodeJSUtils.convertFromDashesToCamelCase(module);
if(basePackageName.length() == 0)
{
if (classReference.getBaseName().equals(camelCaseModule))
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
index 795466e..1c72e74 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -41,6 +41,7 @@
import org.apache.flex.compiler.clients.problems.WorkspaceProblemFormatter;
import org.apache.flex.compiler.codegen.js.IJSPublisher;
import org.apache.flex.compiler.codegen.js.IJSWriter;
+import org.apache.flex.compiler.common.VersionInfo;
import org.apache.flex.compiler.config.Configuration;
import org.apache.flex.compiler.config.ConfigurationBuffer;
import org.apache.flex.compiler.config.Configurator;
@@ -148,8 +149,12 @@
SWF("SWF"),
JS_FLEX("JSFlex"),
JS_FLEX_CORDOVA("JSFlexCordova"),
+ //JS without the FlexJS framework
JS_NATIVE("JS"),
- JS_NODE("JSNode");
+ //Node.js application
+ JS_NODE("JSNode"),
+ //Node.js module
+ JS_NODE_MODULE("JSNodeModule");
private String text;
@@ -260,8 +265,8 @@
protected ITargetSettings targetSettings;
protected IJSApplication jsTarget;
private IJSPublisher jsPublisher;
- private MXMLC mxmlc;
- private JSCompilerEntryPoint lastCompiler;
+ protected MXMLC mxmlc;
+ protected JSCompilerEntryPoint lastCompiler;
public boolean noLink;
public OutputStream err;
public Class<? extends Configuration> configurationClass = JSGoogConfiguration.class;
@@ -335,7 +340,7 @@
result = mxmlc.mainCompileOnly(removeJSArgs(args), err);
else
result = mxmlc.mainNoExit(removeJSArgs(args));
- if (result != 0)
+ if (result != 0 && result != 2)
{
problems.addAll(mxmlc.problems.getProblems());
break targetloop;
@@ -345,7 +350,7 @@
MXMLJSCFlex flex = new MXMLJSCFlex();
lastCompiler = flex;
result = flex.mainNoExit(removeASArgs(args), problems.getProblems(), false);
- if (result != 0)
+ if (result != 0 && result != 2)
{
break targetloop;
}
@@ -354,25 +359,34 @@
MXMLJSCFlexCordova flexCordova = new MXMLJSCFlexCordova();
lastCompiler = flexCordova;
result = flexCordova.mainNoExit(removeASArgs(args), problems.getProblems(), false);
- if (result != 0)
+ if (result != 0 && result != 2)
{
break targetloop;
}
break;
case JS_NODE:
- MXMLJSCNode node = new MXMLJSCNode();
- lastCompiler = node;
- result = node.mainNoExit(removeASArgs(args), problems.getProblems(), false);
- if (result != 0)
- {
- break targetloop;
- }
- break;
+ MXMLJSCNode node = new MXMLJSCNode();
+ lastCompiler = node;
+ result = node.mainNoExit(removeASArgs(args), problems.getProblems(), false);
+ if (result != 0 && result != 2)
+ {
+ break targetloop;
+ }
+ break;
+ case JS_NODE_MODULE:
+ MXMLJSCNodeModule nodeModule = new MXMLJSCNodeModule();
+ lastCompiler = nodeModule;
+ result = nodeModule.mainNoExit(removeASArgs(args), problems.getProblems(), false);
+ if (result != 0 && result != 2)
+ {
+ break targetloop;
+ }
+ break;
case JS_NATIVE:
MXMLJSCNative jsc = new MXMLJSCNative();
lastCompiler = jsc;
result = jsc.mainNoExit(removeASArgs(args), problems.getProblems(), false);
- if (result != 0)
+ if (result != 0 && result != 2)
{
break targetloop;
}
@@ -830,7 +844,10 @@
configBuffer = projectConfigurator.getConfigurationBuffer();
if (configBuffer.getVar("version") != null) //$NON-NLS-1$
+ {
+ System.out.println(VersionInfo.buildMessage());
return false;
+ }
if (problems.hasErrors())
return false;
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNode.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNode.java
index 49a4013..6ae1999 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNode.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNode.java
@@ -174,10 +174,14 @@
protected ITargetSettings targetSettings;
protected IJSApplication jsTarget;
private IJSPublisher jsPublisher;
-
+
public MXMLJSCNode()
{
- IBackend backend = new NodeBackend();
+ this(new NodeBackend());
+ }
+
+ protected MXMLJSCNode(IBackend backend)
+ {
workspace = new Workspace();
workspace.setASDocDelegate(new FlexJSASDocDelegate());
project = new FlexJSProject(workspace, backend);
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNodeModule.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNodeModule.java
new file mode 100644
index 0000000..7b65fc1
--- /dev/null
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSCNodeModule.java
@@ -0,0 +1,30 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+package org.apache.flex.compiler.clients;
+
+import org.apache.flex.compiler.internal.driver.js.node.NodeModuleBackend;
+
+public class MXMLJSCNodeModule extends MXMLJSCNode
+{
+ public MXMLJSCNodeModule()
+ {
+ super(new NodeModuleBackend());
+ }
+}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
index ca47881..3ace9e5 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
@@ -77,6 +77,8 @@
}
private Stack<Context> stack = new Stack<Context>();
+ public boolean needLanguage = false;
+
public boolean isExterns = false;
public boolean inE4xFilter = false;
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 2d7b257..d07cf4f 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -215,7 +215,7 @@
if (project instanceof FlexJSProject)
{
FlexJSProject flexJSProject = (FlexJSProject) project;
- boolean needLanguage = flexJSProject.needLanguage;
+ boolean needLanguage = getModel().needLanguage;
if (needLanguage && !foundLanguage)
{
StringBuilder appendString = new StringBuilder();
@@ -941,6 +941,7 @@
ICompilerProject project = getWalker().getProject();;
if (project instanceof FlexJSProject)
((FlexJSProject)project).needLanguage = true;
+ getModel().needLanguage = true;
write(JSFlexJSEmitterTokens.CLOSURE_FUNCTION_NAME);
write(ASEmitterTokens.PAREN_OPEN);
}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
index c99d4d9..3260ef9 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
@@ -131,7 +131,7 @@
ICompilerProject project = this.getProject();
if (project instanceof FlexJSProject)
((FlexJSProject)project).needLanguage = true;
-
+ getEmitter().getModel().needLanguage = true;
if (node instanceof IBinaryOperatorNode)
{
IBinaryOperatorNode binaryOperatorNode = (IBinaryOperatorNode) node;
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
index d125eeb..5a8a64e 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
@@ -128,6 +128,7 @@
ICompilerProject project = this.getProject();
if (project instanceof FlexJSProject)
((FlexJSProject) project).needLanguage = true;
+ getEmitter().getModel().needLanguage = true;
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
if (isInt)
@@ -190,6 +191,7 @@
ICompilerProject project = this.getProject();
if (project instanceof FlexJSProject)
((FlexJSProject) project).needLanguage = true;
+ getEmitter().getModel().needLanguage = true;
startMapping(node.getNameNode());
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
@@ -205,6 +207,7 @@
ICompilerProject project = this.getProject();
if (project instanceof FlexJSProject)
((FlexJSProject) project).needLanguage = true;
+ getEmitter().getModel().needLanguage = true;
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
write("sortOn");
@@ -228,6 +231,7 @@
{
if (project instanceof FlexJSProject)
((FlexJSProject) project).needLanguage = true;
+ getEmitter().getModel().needLanguage = true;
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
write("sort");
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index 0f1d0cd..5d2c413 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -51,6 +51,7 @@
import org.apache.flex.compiler.tree.as.ITypeNode;
import org.apache.flex.compiler.units.ICompilationUnit;
import org.apache.flex.compiler.utils.NativeUtils;
+import org.apache.flex.compiler.utils.NodeJSUtils;
public class PackageHeaderEmitter extends JSSubEmitter implements
ISubEmitter<IPackageDefinition>
@@ -402,26 +403,28 @@
if (externalRequiresList != null)
{
Collections.sort(externalRequiresList);
- for (String imp : externalRequiresList)
+ for (String nodeJSModuleName : externalRequiresList)
{
- if (writtenRequires.indexOf(imp) == -1)
+ if (writtenRequires.indexOf(nodeJSModuleName) == -1)
{
+ String moduleVariableName = NodeJSUtils.convertFromDashesToCamelCase(nodeJSModuleName);
/* var x = require('x');\n */
+ /* var someModule = require('some-module');\n */
write(ASEmitterTokens.VAR);
write(ASEmitterTokens.SPACE);
- write(imp);
+ write(moduleVariableName);
write(ASEmitterTokens.SPACE);
write(ASEmitterTokens.EQUAL);
write(ASEmitterTokens.SPACE);
write(NodeEmitterTokens.REQUIRE);
write(ASEmitterTokens.PAREN_OPEN);
write(ASEmitterTokens.SINGLE_QUOTE);
- write(imp);
+ write(nodeJSModuleName);
write(ASEmitterTokens.SINGLE_QUOTE);
write(ASEmitterTokens.PAREN_CLOSE);
writeNewline(ASEmitterTokens.SEMICOLON);
- writtenRequires.add(imp);
+ writtenRequires.add(nodeJSModuleName);
emitsExternalRequires = true;
}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/node/NodePublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/node/NodePublisher.java
index 4d0747c..4a74a65 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/node/NodePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/node/NodePublisher.java
@@ -29,6 +29,8 @@
public class NodePublisher extends JSCPublisher
{
+ public boolean exportModule = false;
+
public NodePublisher(Configuration config, FlexJSProject project)
{
super(project, config);
@@ -63,9 +65,18 @@
protected String getTemplateBody(String projectName)
{
StringBuilder bodyJS = new StringBuilder();
- bodyJS.append("new ");
- bodyJS.append(projectName);
- bodyJS.append("();");
+ if (exportModule)
+ {
+ bodyJS.append("module.exports = ");
+ bodyJS.append(projectName);
+ bodyJS.append(";");
+ }
+ else
+ {
+ bodyJS.append("new ");
+ bodyJS.append(projectName);
+ bodyJS.append("();");
+ }
return bodyJS.toString();
}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/node/NodeModuleBackend.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/node/NodeModuleBackend.java
new file mode 100644
index 0000000..8968894
--- /dev/null
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/node/NodeModuleBackend.java
@@ -0,0 +1,47 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+package org.apache.flex.compiler.internal.driver.js.node;
+
+import java.util.List;
+
+import org.apache.flex.compiler.config.Configuration;
+import org.apache.flex.compiler.driver.IBackend;
+import org.apache.flex.compiler.internal.codegen.js.node.NodePublisher;
+import org.apache.flex.compiler.internal.codegen.mxml.flexjs.MXMLFlexJSPublisher;
+import org.apache.flex.compiler.internal.driver.js.jsc.JSCBackend;
+import org.apache.flex.compiler.internal.projects.FlexJSProject;
+import org.apache.flex.compiler.problems.ICompilerProblem;
+
+/**
+ * A concrete implementation of the {@link IBackend} API for Node.js modules.
+ *
+ * @author Josh Tynjala
+ */
+public class NodeModuleBackend extends JSCBackend
+{
+ @Override
+ public MXMLFlexJSPublisher createPublisher(FlexJSProject project,
+ List<ICompilerProblem> errors, Configuration config)
+ {
+ NodePublisher publisher = new NodePublisher(config, project);
+ publisher.exportModule = true;
+ return publisher;
+ }
+}
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
index a726d38..8dc88b0 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
@@ -392,8 +392,9 @@
public List<String> getCompilerExternalLibraryPath(Configuration config)
{
List<String> list = ((JSConfiguration)config).getCompilerJsExternalLibraryPath();
- list.addAll(config.getCompilerExternalLibraryPath());
- return list;
+ if (list != null && list.size() > 0)
+ return list;
+ return config.getCompilerExternalLibraryPath();
}
/**
@@ -402,8 +403,9 @@
public List<String> getCompilerLibraryPath(Configuration config)
{
List<String> list = ((JSConfiguration)config).getCompilerJsLibraryPath();
- list.addAll(config.getCompilerLibraryPath());
- return list;
+ if (list != null && list.size() > 0)
+ return list;
+ return config.getCompilerLibraryPath();
}
/**
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NodeJSUtils.java b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NodeJSUtils.java
new file mode 100644
index 0000000..608b3ac
--- /dev/null
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NodeJSUtils.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+package org.apache.flex.compiler.utils;
+
+public class NodeJSUtils
+{
+ /**
+ * Converts the name of a node module with dashes into a version in camel
+ * case so that it can be a valid identifier.
+ */
+ public static String convertFromDashesToCamelCase(String moduleNameWithDashes)
+ {
+ String camelCaseModule = moduleNameWithDashes;
+ int moduleIndex = camelCaseModule.indexOf("-");
+ while (moduleIndex != -1 && moduleIndex < camelCaseModule.length() - 1)
+ {
+ camelCaseModule = camelCaseModule.substring(0, moduleIndex)
+ + camelCaseModule.substring(moduleIndex + 1, moduleIndex + 2).toUpperCase()
+ + camelCaseModule.substring(moduleIndex + 2);
+ moduleIndex = camelCaseModule.indexOf("-");
+ }
+ return camelCaseModule;
+ }
+}
diff --git a/compiler-jx/src/main/resources/downloads.xml b/compiler-jx/src/main/resources/downloads.xml
index 97491f7..9885ede 100644
--- a/compiler-jx/src/main/resources/downloads.xml
+++ b/compiler-jx/src/main/resources/downloads.xml
@@ -119,21 +119,6 @@
<param name="dest.filename" value="${guava.name}.jar"/>
</antcall>
- <!-- org.json -->
- <property name="org.json.name" value="org.json"/>
- <property name="org.json.version" value="20131017"/>
- <!-- property name="org.json.version" value="20130213"/ -->
- <antcall target="download-dependency">
- <param name="name" value="${org.json.name}"/>
- <param name="src.server" value="${maven.search.url}"/>
- <param name="src.folder" value="org/codeartisans/org.json/${org.json.version}"/>
- <param name="src.filename" value="org.json-${org.json.version}.jar"/>
- <param name="src.checksum" value="f1aa9ffeda57b9117e79407acc860e74"/>
- <!-- param name="src.checksum" value="e0593b60af743a63f9678399d275272a"/ --><!-- version 20130213 -->
- <param name="dest.folder" value=""/>
- <param name="dest.filename" value="${org.json.name}.jar"/>
- </antcall>
-
<!-- flex-tool-api -->
<property name="flexToolApi.name" value="flex-tool-api"/>
<property name="flexToolApi.version" value="1.0.0"/>
diff --git a/compiler/src/main/java/org/apache/flex/compiler/clients/MXMLC.java b/compiler/src/main/java/org/apache/flex/compiler/clients/MXMLC.java
index d77db73..473f48d 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/clients/MXMLC.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/clients/MXMLC.java
@@ -1141,6 +1141,7 @@
public String getMainSource()
{
+ if (mainCU == null) return "";
return mainCU.getAbsoluteFilename();
}
diff --git a/compiler/src/main/java/org/apache/flex/compiler/common/VersionInfo.java b/compiler/src/main/java/org/apache/flex/compiler/common/VersionInfo.java
index 99a4194..8fadbd9 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/common/VersionInfo.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/common/VersionInfo.java
@@ -31,8 +31,8 @@
*/
public class VersionInfo
{
- public static final String FLEX_MAJOR_VERSION = "4";
- public static final String FLEX_MINOR_VERSION = "7";
+ public static final String FLEX_MAJOR_VERSION = "0";
+ public static final String FLEX_MINOR_VERSION = "8";
public static final String FLEX_NANO_VERSION = "0";
/**
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingDestinationMaker.java b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingDestinationMaker.java
index 0e78d5d..89ad6a2 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingDestinationMaker.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingDestinationMaker.java
@@ -128,15 +128,20 @@
{
IMXMLPropertySpecifierNode psn = (IMXMLPropertySpecifierNode)parent;
IDefinition d = psn.getDefinition();
- Binding b = host.getInstanceScope().getBinding(d);
- INamespaceReference ns = psn.getDefinition().getNamespaceReference();
- if (ns != NamespaceDefinition.getPublicNamespaceDefinition())
+ //it's possible for the definition to be null if we're dealing with
+ //a dynamic property on a class like Object -JT
+ if (d != null)
{
- InstructionList insns = new InstructionList();
- insns.addInstruction(OP_getlocal0);
- insns.addInstruction(OP_getlocal1);
- insns.addInstruction(OP_setproperty, b.getName());
- ret = new InstructionListNode(insns); // Wrap the IL in a node and return it
+ Binding b = host.getInstanceScope().getBinding(d);
+ INamespaceReference ns = d.getNamespaceReference();
+ if (ns != NamespaceDefinition.getPublicNamespaceDefinition())
+ {
+ InstructionList insns = new InstructionList();
+ insns.addInstruction(OP_getlocal0);
+ insns.addInstruction(OP_getlocal1);
+ insns.addInstruction(OP_setproperty, b.getName());
+ ret = new InstructionListNode(insns); // Wrap the IL in a node and return it
+ }
}
}
return ret;
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/css/semantics/CSSSemanticAnalyzer.java b/compiler/src/main/java/org/apache/flex/compiler/internal/css/semantics/CSSSemanticAnalyzer.java
index e2f244c..d34cdee 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/css/semantics/CSSSemanticAnalyzer.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/css/semantics/CSSSemanticAnalyzer.java
@@ -36,6 +36,7 @@
import org.apache.flex.compiler.css.ICSSPropertyValue;
import org.apache.flex.compiler.css.ICSSRule;
import org.apache.flex.compiler.css.ICSSSelector;
+import org.apache.flex.compiler.css.ICSSSelectorCondition;
import org.apache.flex.compiler.definitions.IClassDefinition;
import org.apache.flex.compiler.definitions.IDefinition;
import org.apache.flex.compiler.definitions.metadata.IMetaTag;
@@ -385,7 +386,11 @@
for (final ICSSSelector selector : rule.getSelectorGroup())
{
if (isWildcardSelector(selector))
- return true;
+ {
+ String selName = getOptionalSelectorName(selector);
+ if (selName == null) return true;
+ return qnames.contains(selName);
+ }
final String qname = resolvedSelectors.get(selector);
if (qnames.contains(qname))
return true;
@@ -514,6 +519,35 @@
}
/**
+ * Check if the selector is a optional class selector.
+ * An optional class selector is a class selector
+ * with the name opt_qname_otherstuff.
+ *
+ * The output will not contain the selector if the
+ * class identified by qname is not in the output.
+ *
+ * @param selector CSS selector
+ * @return True if the selector is a "optional" selector.
+ */
+ public static String getOptionalSelectorName(ICSSSelector selector)
+ {
+ ImmutableList<ICSSSelectorCondition> conditions = selector.getConditions();
+ if (conditions.size() == 0)
+ return null;
+ final String elementName = conditions.get(0).getValue();
+ if (elementName == null) return null;
+ if (elementName.startsWith("opt_"))
+ {
+ int c = elementName.indexOf("_", 4);
+ if (c >= 0)
+ {
+ return elementName.substring(4, c).replace("-", ".");
+
+ }
+ }
+ return null;
+ }
+ /**
* Build a map from QNames to class definitions.
*
* @param classDefinitions Class definitions.
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/AccessorDefinition.java b/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/AccessorDefinition.java
index aadd143..575580e 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/AccessorDefinition.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/AccessorDefinition.java
@@ -31,6 +31,7 @@
import org.apache.flex.compiler.definitions.INamespaceDefinition;
import org.apache.flex.compiler.definitions.IPackageDefinition;
import org.apache.flex.compiler.definitions.ISetterDefinition;
+import org.apache.flex.compiler.problems.UnresolvedNamespaceProblem;
import org.apache.flex.compiler.projects.ICompilerProject;
import org.apache.flex.compiler.scopes.IDefinitionSet;
import org.apache.flex.compiler.tree.as.IVariableNode;
@@ -163,6 +164,11 @@
{
INamespaceReference testDefRef = definition.getNamespaceReference();
INamespaceDefinition testNamespaceDef = testDefRef.resolveNamespaceReference(project);
+ if (testNamespaceDef == null)
+ {
+ project.getProblems().add(new UnresolvedNamespaceProblem(definition.getNode()));
+ return null;
+ }
final boolean testBindable = ((NamespaceDefinition)testNamespaceDef).getAETNamespace().getName().equals(
BindableHelper.bindableNamespaceDefinition.getAETNamespace().getName());
/* aharui: namespaces shouldn't have to match. A subclass may only override
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java b/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java
index b01eed5..94d1f30 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java
@@ -2301,6 +2301,7 @@
}
}
}
+ if (func == null) return false;
IMetaTag[] metas = func.getAllMetaTags();
for (IMetaTag meta : metas)
{
@@ -2340,8 +2341,9 @@
public List<String> getCompilerExternalLibraryPath(Configuration config)
{
List<String> list = config.getCompilerSwfExternalLibraryPath();
- list.addAll(config.getCompilerExternalLibraryPath());
- return list;
+ if (list != null && list.size() > 0)
+ return list;
+ return config.getCompilerExternalLibraryPath();
}
/**
@@ -2350,8 +2352,9 @@
public List<String> getCompilerLibraryPath(Configuration config)
{
List<String> list = config.getCompilerSwfLibraryPath();
- list.addAll(config.getCompilerLibraryPath());
- return list;
+ if (list != null && list.size() > 0)
+ return list;
+ return config.getCompilerLibraryPath();
}
/**
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/SWFTarget.java b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/SWFTarget.java
index 06f932a..144ba5f 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/SWFTarget.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/SWFTarget.java
@@ -443,6 +443,9 @@
{
String methodName = method.getMethodName();
if (methodName == null) continue;
+ // match getter with getter methodInfo
+ if (trait.isGetter() && method.getReturnType().getBaseName().equals(IASLanguageConstants.void_)) continue;
+ if (trait.isSetter() && (!method.getReturnType().getBaseName().equals(IASLanguageConstants.void_))) continue;
if (methodName.equals(trait.getName().getBaseName()))
{
String[] keys = meta.getKeys();
@@ -479,7 +482,6 @@
method.setReturnType(name);
foundName = true;
changedABC = true;
- break metas;
}
}
if (!foundName)
@@ -494,7 +496,6 @@
namePool.add(name);
method.setReturnType(name);
changedABC = true;
- break metas;
}
}
else if (keys[i].equals(IMetaAttributeConstants.NAME_SWFOVERRIDE_PARAMS))
@@ -556,9 +557,9 @@
}
}
method.setParamTypes(newList);
- break metas;
}
}
+ break metas;
}
}
}
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_da.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_da.properties
index 210b0c7..a8a07c6 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_da.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_da.properties
@@ -28,7 +28,7 @@
defaultBuildName=development
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Afspilleren reagerede ikke som forventet p\u00e5 kommandoen; kommandoen er afbrudt.
notSuspendedException=Kommandoen kan ikke afgives mens afspilleren k\u00f8rer
illegalStateException=Kommandoen fungerer ikke uden for en session.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_de.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_de.properties
index 95caf4a..4015eda 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_de.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_de.properties
@@ -28,7 +28,7 @@
defaultBuildName=development
about=Apache fdb (Flash Player Debugger) [Build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Der Player hat nicht wie erwartet auf den Befehl reagiert; der Befehl wird abgebrochen.
notSuspendedException=Der Befehl kann nicht ausgestellt werden, w\u00e4hrend der Player ausgef\u00fchrt wird
illegalStateException=Der Befehl ist ohne Sitzung nicht zul\u00e4ssig.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_en.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_en.properties
index 60da901..4635cd0 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_en.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_en.properties
@@ -28,7 +28,7 @@
defaultBuildName=development
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player did not respond to the command as expected; command aborted.
notSuspendedException=Command cannot be issued while Player is running
illegalStateException=Command not valid without a session.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_es.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_es.properties
index 284d3ca..9265038 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_es.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_es.properties
@@ -28,7 +28,7 @@
defaultBuildName=desarrollo
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=El reproductor no respondi\u00f3 al comando como se esperaba; se cancel\u00f3 el comando.
notSuspendedException=No puede emitirse el comando mientras el reproductor se est\u00e1 ejecutando.
illegalStateException=El comando no es v\u00e1lido sin una sesi\u00f3n.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fi.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fi.properties
index b35aa24..83c685a 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fi.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fi.properties
@@ -28,7 +28,7 @@
defaultBuildName=kehitys
about=Apache fdb (Flash Player Debugger) [versio ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Soitin ei vastannut komentoon odotetulla tavalla. Komento keskeytettiin.
notSuspendedException=Komentoa ei voi antaa, kun soitin on k\u00e4ynniss\u00e4
illegalStateException=Komento ei kelpaa ilman istuntoa.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fr.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fr.properties
index 1fc316f..bfaedd2 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fr.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_fr.properties
@@ -28,7 +28,7 @@
defaultBuildName=d\u00e9veloppement
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Le lecteur n'a pas r\u00e9pondu \u00e0 la commande comme pr\u00e9vu ; commande annul\u00e9e.
notSuspendedException=Impossible d'\u00e9mettre la commande lorsque le lecteur est en cours d'ex\u00e9cution
illegalStateException=Commande incorrecte sans session.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_it.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_it.properties
index 5ad1431..1860937 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_it.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_it.properties
@@ -28,7 +28,7 @@
defaultBuildName=sviluppo
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player non ha risposto al comando come previsto. Comando terminato.
notSuspendedException=Impossibile inviare il comando mentre Player \u00e8 in esecuzione
illegalStateException=Comando non valido senza una sessione.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ja.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ja.properties
index 0c3f39e..45381f5 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ja.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ja.properties
@@ -28,7 +28,7 @@
defaultBuildName=development
about=Apache fdb (Flash Player Debugger) [\u30d3\u30eb\u30c9 ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player \u304c\u30b3\u30de\u30f3\u30c9\u306b\u5bfe\u3057\u3066\u4e88\u671f\u3055\u308c\u305f\u5fdc\u7b54\u3092\u3057\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30b3\u30de\u30f3\u30c9\u51e6\u7406\u306f\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
notSuspendedException=Player \u306e\u5b9f\u884c\u4e2d\u306b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
illegalStateException=\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u78ba\u7acb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30b3\u30de\u30f3\u30c9\u306f\u7121\u52b9\u3067\u3059\u3002
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ko.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ko.properties
index 380c0bb..eec05cf 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ko.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ko.properties
@@ -28,7 +28,7 @@
defaultBuildName=\uac1c\ubc1c
about=Apache fdb(Flash Player Debugger) [\ube4c\ub4dc ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=\ud50c\ub808\uc774\uc5b4\uac00 \uc608\uc0c1\ub300\ub85c \uba85\ub839\uc5d0 \uc751\ub2f5\ud558\uc9c0 \uc54a\uc544 \uba85\ub839\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
notSuspendedException=\ud50c\ub808\uc774\uc5b4 \uc2e4\ud589 \uc911\uc5d0 \uba85\ub839\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc74c
illegalStateException=\uc138\uc158\uc774 \uc5c6\uc73c\uba74 \uba85\ub839\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nb.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nb.properties
index 32726a3..6fe465a 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nb.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nb.properties
@@ -28,7 +28,7 @@
defaultBuildName=utvikling
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Spilleren reagerte ikke som forventet p\u00e5 kommandoen. Kommando ble avbrutt.
notSuspendedException=Kommandoen kan ikke gis mens spilleren kj\u00f8rer
illegalStateException=Kommandoen er ikke gyldig uten en \u00f8kt.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nl.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nl.properties
index 204f541..936e473 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nl.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_nl.properties
@@ -28,7 +28,7 @@
defaultBuildName=ontwikkeling
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player heeft op onverwachte wijze gereageerd op de opdracht; opdracht afgebroken.
notSuspendedException=Kan opdracht niet uitvoeren terwijl Player wordt uitgevoerd
illegalStateException=Opdracht niet geldig zonder sessie
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_pt.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_pt.properties
index 84c53f7..bf8cfad 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_pt.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_pt.properties
@@ -28,7 +28,7 @@
defaultBuildName=desenvolvimento
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=O Player n\u00e3o respondeu ao comando como esperado; comando anulado.
notSuspendedException=N\u00e3o \u00e9 poss\u00edvel emitir o comando enquanto o Player est\u00e1 em execu\u00e7\u00e3o
illegalStateException=Comando inv\u00e1lido sem uma sess\u00e3o.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ru.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ru.properties
index 3fb7a50..1dfba74 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ru.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_ru.properties
@@ -28,7 +28,7 @@
defaultBuildName=\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430
about=Apache fdb (\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Flash Player) [\u0441\u0431\u043e\u0440\u043a\u0430 ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=\u041f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c; \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043e.
notSuspendedException=\u041a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f
illegalStateException=\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0431\u0435\u0437 \u0441\u0435\u0430\u043d\u0441\u0430.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_sv.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_sv.properties
index 58d1880..e9f445b 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_sv.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_sv.properties
@@ -28,7 +28,7 @@
defaultBuildName=utveckling
about=Apache fdb (Flash Player Debugger) [build ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Spelaren svarade inte p\u00e5 kommandot som f\u00f6rv\u00e4ntat. Kommandot har avbrutits.
notSuspendedException=Du kan inte ange kommandon n\u00e4r spelaren k\u00f6rs.
illegalStateException=Kommandot \u00e4r inte giltigt utan session.
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_CN.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_CN.properties
index c70870a..37451db 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_CN.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_CN.properties
@@ -28,7 +28,7 @@
defaultBuildName=\u5f00\u53d1
about=Apache fdb\uff08Flash Player \u8c03\u8bd5\u5668\uff09[\u5185\u90e8\u7248\u672c ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player \u672a\u6309\u9884\u671f\u65b9\u5f0f\u54cd\u5e94\u547d\u4ee4\uff1b\u547d\u4ee4\u5df2\u5f02\u5e38\u7ec8\u6b62\u3002
notSuspendedException=Player \u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u65f6\u65e0\u6cd5\u53d1\u51fa\u547d\u4ee4
illegalStateException=\u5982\u679c\u6ca1\u6709\u4f1a\u8bdd\uff0c\u5219\u547d\u4ee4\u65e0\u6548\u3002
diff --git a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_TW.properties b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_TW.properties
index 54b5b2a..f5d34e4 100644
--- a/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_TW.properties
+++ b/debugger/src/main/resources/flex/tools/debugger/cli/fdb_zh_TW.properties
@@ -28,7 +28,7 @@
defaultBuildName=\u958b\u767c
about=Apache fdb (Flash Player \u9664\u932f\u7a0b\u5f0f) [\u7d44\u5efa ${build}]
-copyright=Copyright 2016 The Apache Software Foundation.
+copyright=Copyright 2017 The Apache Software Foundation.
noResponseException=Player \u672a\u5982\u9810\u671f\u56de\u61c9\u6307\u4ee4\uff1b\u6307\u4ee4\u5df2\u4e2d\u6b62\u3002
notSuspendedException=Player \u6b63\u5728\u57f7\u884c\u6642\u7121\u6cd5\u767c\u51fa\u6307\u4ee4
illegalStateException=\u5982\u679c\u6c92\u6709\u5de5\u4f5c\u968e\u6bb5\uff0c\u6307\u4ee4\u5c31\u7121\u6548\u3002
diff --git a/flex-compiler-oem/src/main/java/flex2/compiler/Source.java b/flex-compiler-oem/src/main/java/flex2/compiler/Source.java
index 91a1ce6..3869b40 100644
--- a/flex-compiler-oem/src/main/java/flex2/compiler/Source.java
+++ b/flex-compiler-oem/src/main/java/flex2/compiler/Source.java
@@ -19,6 +19,8 @@
package flex2.compiler;
+import java.io.File;
+
import flex2.compiler.io.VirtualFile;
/**
@@ -118,6 +120,16 @@
return file.getNameForReporting();
}
+ public String getSourceFileName()
+ {
+ String s = getName();
+ if (relativePath.length() > 0)
+ s += relativePath;
+ s += File.separator;
+ s += shortName;
+ return s;
+ }
+
public boolean exists()
{
return file.getLastModified() > 0;
diff --git a/flex-compiler-oem/src/main/java/flex2/compiler/common/Configuration.java b/flex-compiler-oem/src/main/java/flex2/compiler/common/Configuration.java
index bfb396a..d005472 100644
--- a/flex-compiler-oem/src/main/java/flex2/compiler/common/Configuration.java
+++ b/flex-compiler-oem/src/main/java/flex2/compiler/common/Configuration.java
@@ -2018,7 +2018,304 @@
return compilerConfiguration.getAdvancedTelemetry();
}
+ //
+ // 'closure-lib' option
+ //
+
+ private String closureLibDirName = null;
+
+ public String getClosureLibDirName()
+ {
+ return closureLibDirName;
+ }
+
+ public void cfgClosureLib( ConfigurationValue cv, String filename )
+ {
+ this.closureLibDirName = getOutputPath(cv, filename);
+ }
+ //
+ // 'sdk-js-lib' option
+ //
+
+ private List<String> sdkJsLibraries = new LinkedList<String>();
+
+ public List<String> getSDKJSLib()
+ {
+ return sdkJsLibraries;
+ }
+
+ public void cfgSDKJSLib( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ sdkJsLibraries.add( urls[i] );
+ }
+ }
+
+ //
+ // 'external-js-lib' option
+ //
+
+ private List<String> externalJsLibraries = new LinkedList<String>();
+
+ public List<String> getExternalJSLib()
+ {
+ return externalJsLibraries;
+ }
+
+ public void cfgExternalJSLib( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ externalJsLibraries.add( urls[i] );
+ }
+ }
+
+ //
+ // 'remove-circulars' option
+ //
+
+ private boolean removeCirculars = false;
+
+ public boolean getRemoveCirculars()
+ {
+ return removeCirculars;
+ }
+
+ public void setRemoveCirculars(boolean value)
+ {
+ removeCirculars = value;
+ }
+
+ public void cfgRemoveCirculars(ConfigurationValue cv, boolean value)
+ {
+ setRemoveCirculars(value);
+ }
+
+ //
+ // 'skip-transpile' option
+ //
+
+ private boolean skipTranspile = false;
+
+ public boolean getSkipTranspile()
+ {
+ return skipTranspile;
+ }
+
+ public void setSkipTranspile(boolean value)
+ {
+ skipTranspile = value;
+ }
+
+ public void cfgSkipTranspile(ConfigurationValue cv, boolean value)
+ {
+ setSkipTranspile(value);
+ }
+
+ //
+ // 'js-compiler-option' option
+ //
+
+ private List<String> jsCompilerOption = new LinkedList<String>();
+
+ public List<String> getJsCompilerOption()
+ {
+ return jsCompilerOption;
+ }
+
+ public void cfgJsCompilerOption( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ jsCompilerOption.add( urls[i] );
+ }
+ }
+
+ //
+ // 'js-output-optimization' option
+ //
+
+ private List<String> jsOutputOptimization = new LinkedList<String>();
+
+ public List<String> getJsOutputOptimization()
+ {
+ return jsOutputOptimization;
+ }
+
+ public void cfgJsOutputOptimization( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ jsOutputOptimization.add( urls[i] );
+ }
+ }
+
+ //
+ // 'html-template' option
+ //
+
+ private String htmlTemplateFileName = null;
+
+ public String getHtmlTemplateFileName()
+ {
+ return htmlTemplateFileName;
+ }
+
+ public void cfgHtmlTemplate( ConfigurationValue cv, String filename )
+ {
+ this.htmlTemplateFileName = getOutputPath(cv, filename);
+ }
+
+
+ //
+ // 'html-output-filename' option
+ //
+
+ private String htmlOutputFileName = null;
+
+ public String getHtmlOutputFilename()
+ {
+ return htmlOutputFileName;
+ }
+
+ public void cfgHtmlOutputFilename( ConfigurationValue cv, String filename )
+ {
+ this.htmlOutputFileName = getOutputPath(cv, filename);
+ }
+
+ //
+ // 'compiler-targets' option
+ //
+
+ private List<String> compilerTargets = new LinkedList<String>();
+
+ public List<String> getCompilerTargets()
+ {
+ return compilerTargets;
+ }
+
+ public void cfgCompilerTargets( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ compilerTargets.add( urls[i] );
+ }
+ }
+
+ //
+ // 'source-map' option
+ //
+
+ private boolean sourceMap = false;
+
+ public boolean getSourceMap()
+ {
+ return sourceMap;
+ }
+
+ public void setSourceMap(boolean value)
+ {
+ sourceMap = value;
+ }
+
+ public void cfgSourceMap(ConfigurationValue cv, boolean value)
+ {
+ setSkipTranspile(value);
+ }
+
+ //
+ // 'compiler.js-external-library-path' option
+ //
+
+ private List<String> jsExternalLibrariesPath = new LinkedList<String>();
+
+ public List<String> getJsExternalLibraryPath()
+ {
+ return jsExternalLibrariesPath;
+ }
+
+ public void cfgJsExternalLibraryPath( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ jsExternalLibrariesPath.add( urls[i] );
+ }
+ }
+
+
+ //
+ // 'compiler.swf-external-library-path' option
+ //
+
+ private List<String> swfExternalLibrariesPath = new LinkedList<String>();
+
+ public List<String> getSwfExternalLibraryPath()
+ {
+ return swfExternalLibrariesPath;
+ }
+
+ public void cfgSwfExternalLibraryPath( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ swfExternalLibrariesPath.add( urls[i] );
+ }
+ }
+
+ //
+ // 'compiler.js-library-path' option
+ //
+
+ private List<String> jsLibrariesPath = new LinkedList<String>();
+
+ public List<String> getJsLibraryPath()
+ {
+ return jsLibrariesPath;
+ }
+
+ public void cfgJsLibraryPath( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ jsLibrariesPath.add( urls[i] );
+ }
+ }
+
+
+ //
+ // 'compiler.swf-library-path' option
+ //
+
+ private List<String> swfLibrariesPath = new LinkedList<String>();
+
+ public List<String> getSwfLibraryPath()
+ {
+ return swfLibrariesPath;
+ }
+
+ public void cfgSwfLibraryPath( ConfigurationValue cfgval, String[] urls ) throws ConfigurationException
+ {
+ for (int i = 0; i < urls.length; ++i)
+ {
+ VirtualFile f = ConfigurationPathResolver.getVirtualFile( urls[i], configResolver, cfgval );
+ if (f != null)
+ swfLibrariesPath.add( urls[i] );
+ }
+ }
+
+
@Override
public Configuration clone()
throws CloneNotSupportedException
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/Application.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/Application.java
index 0d9a307..11b14aa 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/Application.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/Application.java
@@ -43,6 +43,7 @@
import org.apache.flex.swf.types.RGB;
import flash.swf.tags.SetBackgroundColor;
+import flex2.compiler.CompilerException;
import flex2.compiler.Source;
import flex2.compiler.SourceList;
import flex2.compiler.io.FileUtil;
@@ -635,7 +636,7 @@
mxmljsc.noLink = true;
//int returnValue = mxmlc.mainCompileOnly(constructCommandLine2(tempOEMConfiguration.configuration), null);
int returnValue = mxmljsc.mainNoExit(constructCommandLine(oemConfiguration), null, true);
- if (returnValue == 0)
+ if (returnValue == 0 || returnValue == 2)
returnValue = OK;
else
returnValue = FAIL;
@@ -673,8 +674,10 @@
ApplicationCompilerConfiguration acc = ((ApplicationCompilerConfiguration)config.configuration);
sources = new ArrayList<Source>();
VirtualFile[] sourcePaths = acc.getCompilerConfiguration().getSourcePath();
+
List<String> sourceFiles = mxmljsc.getSourceList();
String mainFile = mxmljsc.getMainSource();
+ VirtualFile mainVirtualFile = null;
for (String sourceFile : sourceFiles)
{
for (VirtualFile sourcePath : sourcePaths)
@@ -689,10 +692,17 @@
boolean isRoot = sourceFile.equals(mainFile);
Source source = new Source(sourcePath, relPath, shortName, null, false, isRoot);
sources.add(source);
- break;
+ if (pathName.equals(mainFile))
+ mainVirtualFile = sourcePath;
}
}
}
+ try {
+ sourceList = new SourceList(new ArrayList<VirtualFile>(), sourcePaths, mainVirtualFile, new String[0]);
+ } catch (CompilerException e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
ProblemQuery pq = mxmljsc.getProblemQuery();
List<ICompilerProblem> probs = pq.getProblems();
for (ICompilerProblem prob : probs)
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
index bdcb3be..e6f4eb8 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
@@ -37,13 +37,16 @@
import java.lang.annotation.Annotation;
import java.net.URI;
-import org.apache.flex.compiler.clients.COMPC;
+import org.apache.flex.compiler.clients.COMPJSC;
import org.apache.flex.compiler.clients.problems.ProblemFormatter;
import org.apache.flex.compiler.clients.problems.ProblemQuery;
import org.apache.flex.compiler.problems.CompilerProblemSeverity;
import org.apache.flex.compiler.problems.ICompilerProblem;
import org.apache.flex.compiler.problems.annotations.DefaultSeverity;
+import flex2.compiler.CompilerException;
+import flex2.compiler.Source;
+import flex2.compiler.SourceList;
import flex2.compiler.common.CompilerConfiguration;
import flex2.compiler.config.ConfigurationException;
import flex2.compiler.io.FileUtil;
@@ -55,6 +58,9 @@
import flex2.compiler.util.MimeMappings;
import flex2.compiler.util.PerformanceData;
import flex2.compiler.util.ThreadLocalToolkit;
+import flex2.linker.SimpleMovie;
+import flex2.tools.oem.internal.ApplicationCompilerConfiguration;
+import flex2.tools.oem.internal.LibraryCompilerConfiguration;
import flex2.tools.oem.internal.OEMConfiguration;
import flex2.tools.oem.internal.OEMReport;
import flex2.tools.oem.internal.OEMUtil;
@@ -249,6 +255,10 @@
private CompilerControl cc;
private ApplicationCache applicationCache;
private LibraryCache libraryCache;
+
+ private List<Source> compiledSources;
+ private SourceList sourceList;
+
// clean() would null out the following variables
//LibraryData data;
@@ -746,10 +756,10 @@
public Report getReport()
{
//OEMUtil.setupLocalizationManager();
- return new OEMReport(null,
+ return new OEMReport(compiledSources,
null,
null,
- null,
+ sourceList,
configurationReport,
messages, files);
}
@@ -904,14 +914,49 @@
true /* cleanConfig */,
false /* cleanMessages */,
false /* cleanThreadLocals */);
- COMPC compc = new COMPC();
- int returnValue = compc.mainNoExit(constructCommandLine(oemConfiguration));
- if (returnValue == 0)
+ COMPJSC compc = new COMPJSC();
+ int returnValue = compc.mainNoExit(constructCommandLine(oemConfiguration), null, true);
+ if (returnValue == 0 || returnValue == 2)
returnValue = OK;
else
returnValue = FAIL;
- convertMessages(compc.getProblems());
+ LibraryCompilerConfiguration acc = ((LibraryCompilerConfiguration)tempOEMConfiguration.configuration);
+ VirtualFile[] sourcePaths = acc.getCompilerConfiguration().getSourcePath();
+
+ compiledSources = new ArrayList<Source>();
+ List<String> sourceFiles = compc.getSourceList();
+ String mainFile = compc.getMainSource();
+ VirtualFile mainVirtualFile = null;
+ if (sourceFiles != null)
+ {
+ for (String sourceFile : sourceFiles)
+ {
+ for (VirtualFile sourcePath : sourcePaths)
+ {
+ String pathName = sourcePath.getName();
+ if (sourceFile.indexOf(pathName) == 0)
+ {
+ String relPath = sourceFile.substring(pathName.length());
+ int lastSep = relPath.lastIndexOf(File.separator);
+ String shortName = relPath.substring(lastSep + 1);
+ relPath = relPath.substring(0, lastSep);
+ boolean isRoot = sourceFile.equals(mainFile);
+ Source source = new Source(sourcePath, relPath, shortName, null, false, isRoot);
+ compiledSources.add(source);
+ if (mainFile != null && pathName.equals(mainFile))
+ mainVirtualFile = sourcePath;
+ }
+ }
+ }
+ try {
+ sourceList = new SourceList(new ArrayList<VirtualFile>(), sourcePaths, mainVirtualFile, new String[0]);
+ } catch (CompilerException e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
+ }
+ convertMessages(compc.getProblemQuery());
clean(returnValue != OK, false, false);
return returnValue;
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
index f141fd8..eef9c03 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
@@ -1163,6 +1163,21 @@
*
* @param paths an array of <code>java.io.File</code> (<code>File.isDirectory()</code> must return <code>true</code>).
*/
+ public File[] getSourcePath()
+ {
+ if (args.containsKey(COMPILER_SOURCE_PATH))
+ return (File[]) args.get(COMPILER_SOURCE_PATH);
+ if (more.containsKey(COMPILER_SOURCE_PATH))
+ return (File[]) more.get(COMPILER_SOURCE_PATH);
+ return null;
+ }
+
+ /**
+ * Sets a list of path elements that form the roots of ActionScript class hierarchies.
+ * This is equivalent to using <code>mxmlc/compc --compiler.source-path</code>.
+ *
+ * @param paths an array of <code>java.io.File</code> (<code>File.isDirectory()</code> must return <code>true</code>).
+ */
public void setSourcePath(File[] paths)
{
args.put(COMPILER_SOURCE_PATH, paths);
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMReport.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMReport.java
index 21b1d73..e628e08 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMReport.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMReport.java
@@ -530,7 +530,7 @@
// use this version for now
for (Source s : sources)
{
- sourceNames.add(s.getName());
+ sourceNames.add(s.getSourceFileName());
}
/*
// AJH not sure why all this is needed
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
index b6e1d5b..d791e10 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
@@ -243,6 +243,8 @@
private static LibraryCompilerConfiguration processCOMPCCConfiguration(org.apache.flex.compiler.config.Configuration config)
{
LibraryCompilerConfiguration acc = new LibraryCompilerConfiguration();
+ ConfigurationPathResolver resolver = new ConfigurationPathResolver();
+ acc.setConfigPathResolver(resolver);
acc.setBackgroundColor(config.getDefaultBackgroundColor());
acc.setDebug(config.debug());
acc.setFrameRate(config.getDefaultFrameRate());
@@ -251,7 +253,45 @@
acc.setSwfVersion(config.getSwfVersion());
acc.setScriptRecursionLimit(config.getScriptRecursionLimit());
acc.setScriptTimeLimit(config.getScriptTimeLimit());
+ CompilerConfiguration cc = acc.getCompilerConfiguration();
+ List<String> externalLibraries = config.getCompilerExternalLibraryPath();
+ String[] extlibs = new String[externalLibraries.size()];
+ externalLibraries.toArray(extlibs);
+ try
+ {
+ cc.cfgExternalLibraryPath(null, extlibs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ List<String> libraries = config.getCompilerLibraryPath();
+ String[] libs = new String[libraries.size()];
+ libraries.toArray(libs);
+ try
+ {
+ cc.cfgLibraryPath(null, libs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ List<String> sources = config.getCompilerSourcePath();
+ String[] srcs = new String[sources.size()];
+ sources.toArray(srcs);
+ try
+ {
+ cc.cfgSourcePath(null, srcs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
return acc;
}
diff --git a/pom.xml b/pom.xml
index 3425c09..5837abe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,6 +162,12 @@
<exclude>**/target/**</exclude>
<!-- Stuff an Ant build might have left behind. -->
<exclude>lib/**</exclude>
+ <!--
+ In case of an ANT based release the typedefs are included as a
+ subdirectory. We need to exclude this directory from the compiler checks
+ as the typedefs build will handle all content in that directory
+ -->
+ <exclude>flex-typedefs/**</exclude>
</excludes>
</configuration>
<dependencies>
@@ -591,4 +597,4 @@
</pluginRepository>
</pluginRepositories>
-</project>
\ No newline at end of file
+</project>
diff --git a/releasecandidate.xml b/releasecandidate.xml
index 7c2c43a..d9fafda 100644
--- a/releasecandidate.xml
+++ b/releasecandidate.xml
@@ -119,7 +119,7 @@
property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
<available file="${env.ProgramFiles(x86)}/Mozilla Firefox/firefox.exe"
type="file"
- property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
+ property="browser" value="${env.ProgramFiles(x86)}/Mozilla Firefox/firefox.exe" />
<available file="/Applications/Firefox.app/Contents/MacOS/firefox"
type="file"
property="browser" value="/Applications/Firefox.app/Contents/MacOS/firefox" />
@@ -153,7 +153,7 @@
property="git" value="${env.ProgramFiles}/Git/bin/git.exe" />
<available file="${env.ProgramFiles(x86)}/Git/bin/git.exe"
type="file"
- property="git" value="${env.ProgramFiles}/Git/bin/git.exe" />
+ property="git" value="${env.ProgramFiles(x86)}/Git/bin/git.exe" />
<available file="/usr/local/git/bin/git"
type="file"
property="git" value="/usr/local/git/bin/git" />
@@ -406,7 +406,7 @@
\n\
Please vote to approve this release:\n\
+1 Approve the release\n\
--1 Veto the release (please provide specific comments to why)\n\
+-1 Disapprove the release (please provide specific comments to why)\n\
\n\
This vote will be open for 72 hours or until a result can be called.\n\
\n\
@@ -435,7 +435,8 @@
1) create an empty folder,\n\
2) download into that folder this file:\n\
https://dist.apache.org/repos/dist/dev/flex/falcon/${release.version}/rc${rc}/ApproveFalcon.xml\n\
-3) run the script: ant -e -f ApproveFalcon.xml -Drelease.version=${release.version} -Drc=${rc}\n\
+3) run the script:\n\
+ ant -e -f ApproveFalcon.xml -Drelease.version=${release.version} -Drc=${rc}\n\
\n\
You are not required to use this script, and more testing of the packages\n\
and build results are always encouraged.\n\
@@ -474,7 +475,7 @@
<arg value="${dist.dev}/flex/falcon/${release.version}/rc${rc}" />
<arg value="${dist.release}/flex/falcon/${release.version}" />
</exec>
- <exec executable="${svn}" dir="${dist.release}/flex/falcon" failonerror="true" >
+ <exec executable="${svn}" dir="${dist.release}/.." failonerror="true" >
<arg value="commit" />
<arg value="--username" />
<arg value="${apache.username}" />