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
