Repository: flex-falcon
Updated Branches:
  refs/heads/develop ced58cc23 -> 1ffdc7285


rework nonfunction test to check only for simple cases.  The '$' alias in 
jquery externs prevents using stricter logic


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/1152253d
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/1152253d
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/1152253d

Branch: refs/heads/develop
Commit: 1152253d28ce140f5e1339e525645ec9e64424fe
Parents: ced58cc
Author: Alex Harui <[email protected]>
Authored: Wed Aug 24 08:05:33 2016 -0700
Committer: Alex Harui <[email protected]>
Committed: Wed Aug 24 08:05:33 2016 -0700

----------------------------------------------------------------------
 .../semantics/MethodBodySemanticChecker.java    | 15 ++++------
 compiler/src/test/java/as/ASVariableTests.java  | 29 ++++++++++++++++++++
 2 files changed, 35 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1152253d/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
----------------------------------------------------------------------
diff --git 
a/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
 
b/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
index 43999de..4149e56 100644
--- 
a/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
+++ 
b/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
@@ -854,15 +854,12 @@ public class MethodBodySemanticChecker
         {
             VariableDefinition varDef = (VariableDefinition)def;
             IDefinition varType = varDef.resolveType(project);
-            if (varType == null || // Null here means the ANY_TYPE
-                    varType.equals(project.getBuiltinType(BuiltinType.CLASS)) 
||
-                    
varType.equals(project.getBuiltinType(BuiltinType.FUNCTION)) ||
-                    varType.equals(project.getBuiltinType(BuiltinType.OBJECT)) 
||
-                    
varType.equals(project.getBuiltinType(BuiltinType.ANY_TYPE)))
-            {
-                // assume it can be called
-            }
-            else
+            if (varType != null && // Null here means the ANY_TYPE
+                    
(varType.equals(project.getBuiltinType(BuiltinType.NUMBER)) ||
+                    
varType.equals(project.getBuiltinType(BuiltinType.BOOLEAN)) ||
+                    varType.equals(project.getBuiltinType(BuiltinType.INT)) ||
+                    varType.equals(project.getBuiltinType(BuiltinType.UINT)) ||
+                    
varType.equals(project.getBuiltinType(BuiltinType.STRING))))
             {
                 addProblem(new CallNonFunctionProblem(iNode, 
method_binding.getName().getBaseName()));
             }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1152253d/compiler/src/test/java/as/ASVariableTests.java
----------------------------------------------------------------------
diff --git a/compiler/src/test/java/as/ASVariableTests.java 
b/compiler/src/test/java/as/ASVariableTests.java
index 21508fc..0e3a454 100644
--- a/compiler/src/test/java/as/ASVariableTests.java
+++ b/compiler/src/test/java/as/ASVariableTests.java
@@ -134,6 +134,35 @@ public class ASVariableTests extends ASFeatureTestsBase
     }
 
     @Test
+    public void ASVariableTests_constIsClassCastFunction()
+    {
+        // all tests can assume that flash.display.Sprite
+        // flash.system.System and flash.events.Event have been imported
+        String[] imports = new String[]
+        {
+        };
+        String[] declarations = new String[]
+        {
+            "private const innerClass:InnerClass = null;",
+        };
+        String[] testCode = new String[]
+        {
+            "if (false) { var test:Object = innerClass('foo')};",
+        };
+        String[] extraCode = new String[]
+        {
+            "class InnerClass",
+            "{",
+            "    public function InnerClass(obj:Object)",
+            "    {",
+            "    }",
+            "}"
+        };
+        String source = getAS(imports, declarations, testCode, extraCode);
+        compileAndRun(source);
+    }
+
+    @Test
     public void ASVariableTests_localVarSameNameAsPrivateMethod()
     {
         // all tests can assume that flash.display.Sprite

Reply via email to