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 55bc913bef7c100d33ca898bb59925865128a501
Author: Alex Harui <[email protected]>
AuthorDate: Tue Aug 7 21:54:16 2018 -0700

    allow/ignore some errors because the transpiler will generate some other 
code
---
 .../royale/compiler/projects/ICompilerProject.java     | 10 ++++++++++
 .../compiler/internal/projects/CompilerProject.java    |  4 ++++
 .../compiler/internal/projects/RoyaleProject.java      | 18 ++++++++++++++++++
 .../internal/semantics/MethodBodySemanticChecker.java  |  2 ++
 4 files changed, 34 insertions(+)

diff --git 
a/compiler-common/src/main/java/org/apache/royale/compiler/projects/ICompilerProject.java
 
b/compiler-common/src/main/java/org/apache/royale/compiler/projects/ICompilerProject.java
index 62fc5fb..85fc156 100644
--- 
a/compiler-common/src/main/java/org/apache/royale/compiler/projects/ICompilerProject.java
+++ 
b/compiler-common/src/main/java/org/apache/royale/compiler/projects/ICompilerProject.java
@@ -252,4 +252,14 @@ public interface ICompilerProject
                        IFunctionDefinition functionDefinition, ITypeDefinition 
type1,
                        ITypeDefinition type2, int i);
 
+    /**
+     * @param functionDefinition 
+     * @param formalCount The number of formal parameters.  
+     * @param actualCount The number of actual parameters used in the call.
+     * @return True if parameter count mismatch is allowed (because the 
transpiler will generate different code);
+     */
+       boolean isParameterCountMismatchAllowed(
+                       IFunctionDefinition functionDefinition, int formalCount,
+                       int actualCount);
+
 }
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/CompilerProject.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/CompilerProject.java
index a7af708..88b42e6 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/CompilerProject.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/CompilerProject.java
@@ -1014,4 +1014,8 @@ public abstract class CompilerProject implements 
ICompilerProject
         return (baseDefinition == overrideDefinition);
        }
 
+       public boolean isParameterCountMismatchAllowed(IFunctionDefinition func,
+                       int formalCount, int actualCount) {
+        return false;
+       }
 }
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
index 4a893d4..55f336d 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
@@ -1792,6 +1792,8 @@ public class RoyaleProject extends ASProject implements 
IRoyaleProject, ICompile
         return actionScriptFileEncoding;
     }
 
+    private boolean isTranspiling;
+    
     @Override
     public void setDefineDirectives(Map<String, String> defines)
     {
@@ -1799,6 +1801,10 @@ public class RoyaleProject extends ASProject implements 
IRoyaleProject, ICompile
         // TODO: This seems strange. Each call to the setter
         // adds new defines. How do you get rid of the old ones?
         addConfigVariables(defines);
+        if (defines.containsKey("COMPILE::SWF"))
+        {
+               isTranspiling = 
defines.get("COMPILE::SWF").equalsIgnoreCase("false");
+        }
         clean();
     }
 
@@ -2471,4 +2477,16 @@ public class RoyaleProject extends ASProject implements 
IRoyaleProject, ICompile
                        }
                }
        }
+       
+       @Override
+       public boolean isParameterCountMismatchAllowed(IFunctionDefinition func,
+                       int formalCount, int actualCount) {
+               if (!isTranspiling) return false;
+               if (func.getBaseName().equals("sort") &&
+                               
func.getParent().getQualifiedName().equals("Array") &&
+                               formalCount == 1 && actualCount == 2)
+                       return true;
+        return false;
+       }
+
 }
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
index 1ed40b6..6663afc 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
@@ -742,6 +742,8 @@ public class MethodBodySemanticChecker
 
         if ( actuals.size() > formals.length && !last_is_rest )
         {
+               if (project.isParameterCountMismatchAllowed(func, 
formals.length, actuals.size()))
+                       return;
             addProblem(new TooManyFunctionParametersProblem(iNode, 
formals.length));
         }
 

Reply via email to