Updated Branches:
  refs/heads/develop 31bfbd295 -> 6fd38b4ad

[FalconJX] implemented INamespaceAccessExpressionNode

A bunch of TODOs called for an 'INamespaceAccessExpressionNode'. Created the 
interface, implemented it and removed the TODO items.

Signed-off-by: Erik de Bruin <[email protected]>


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

Branch: refs/heads/develop
Commit: 6e05709308cff8f58797fa8aff5a920f0124130e
Parents: 31bfbd2
Author: Erik de Bruin <[email protected]>
Authored: Fri Apr 19 16:25:57 2013 +0200
Committer: Erik de Bruin <[email protected]>
Committed: Fri Apr 19 16:25:57 2013 +0200

----------------------------------------------------------------------
 .../internal/codegen/as/TestExpressions.java       |   13 +++----
 .../codegen/js/goog/TestGoogExpressions.java       |   12 +++----
 .../flex/compiler/codegen/as/IASEmitter.java       |    4 +-
 .../internal/codegen/as/ASBlockWalker.java         |    4 +-
 .../compiler/internal/codegen/as/ASEmitter.java    |    4 +-
 .../internal/codegen/js/goog/JSGoogEmitter.java    |    4 +-
 .../compiler/internal/visitor/as/ASNodeSwitch.java |    5 ++-
 .../flex/compiler/visitor/as/IASBlockVisitor.java  |    4 +-
 .../tree/as/INamespaceAccessExpressionNode.java    |   27 +++++++++++++++
 9 files changed, 50 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestExpressions.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestExpressions.java
 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestExpressions.java
index 01f1794..9168359 100644
--- 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestExpressions.java
+++ 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestExpressions.java
@@ -21,14 +21,13 @@ package org.apache.flex.compiler.internal.codegen.as;
 
 import org.apache.flex.compiler.internal.test.ASTestBase;
 import org.apache.flex.compiler.internal.tree.as.ArrayLiteralNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.internal.tree.as.ObjectLiteralNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
 import org.apache.flex.compiler.tree.as.IFunctionCallNode;
-import org.apache.flex.compiler.tree.as.IIfNode;
 import org.apache.flex.compiler.tree.as.IIterationFlowNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.ITernaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
@@ -614,9 +613,8 @@ public class TestExpressions extends ASTestBase
     @Test
     public void testVisitBinaryOperator_NamespaceAccess_1()
     {
-        // TODO this needs INamespaceAccessExpressionNode interface
-        NamespaceAccessExpressionNode node = (NamespaceAccessExpressionNode) 
getExpressionNode(
-                "a::b", NamespaceAccessExpressionNode.class);
+        INamespaceAccessExpressionNode node = (INamespaceAccessExpressionNode) 
getExpressionNode(
+                "a::b", INamespaceAccessExpressionNode.class);
         asBlockWalker.visitNamespaceAccessExpression(node);
         assertOut("a::b");
     }
@@ -624,9 +622,8 @@ public class TestExpressions extends ASTestBase
     @Test
     public void testVisitBinaryOperator_NamespaceAccess_2()
     {
-        // TODO this needs INamespaceAccessExpressionNode interface
-        NamespaceAccessExpressionNode node = (NamespaceAccessExpressionNode) 
getExpressionNode(
-                "a::b::c", NamespaceAccessExpressionNode.class);
+        INamespaceAccessExpressionNode node = (INamespaceAccessExpressionNode) 
getExpressionNode(
+                "a::b::c", INamespaceAccessExpressionNode.class);
         asBlockWalker.visitNamespaceAccessExpression(node);
         assertOut("a::b::c");
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogExpressions.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogExpressions.java
 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogExpressions.java
index 3938737..47f419f 100644
--- 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogExpressions.java
+++ 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogExpressions.java
@@ -22,10 +22,10 @@ package org.apache.flex.compiler.internal.codegen.js.goog;
 import org.apache.flex.compiler.driver.IBackend;
 import org.apache.flex.compiler.internal.codegen.as.TestExpressions;
 import org.apache.flex.compiler.internal.driver.js.goog.GoogBackend;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
 import org.apache.flex.compiler.tree.as.IIfNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.junit.Test;
 
@@ -174,10 +174,9 @@ public class TestGoogExpressions extends TestExpressions
     @Test
     public void testVisitBinaryOperator_NamespaceAccess_1()
     {
-        // TODO (mschmalle) this needs INamespaceAccessExpressionNode interface
         // TODO (erikdebruin) we need a 'goog.require("a")' in the header
-        NamespaceAccessExpressionNode node = (NamespaceAccessExpressionNode) 
getExpressionNode(
-                "a::b", NamespaceAccessExpressionNode.class);
+        INamespaceAccessExpressionNode node = (INamespaceAccessExpressionNode) 
getExpressionNode(
+                "a::b", INamespaceAccessExpressionNode.class);
         asBlockWalker.visitNamespaceAccessExpression(node);
         assertOut("a.b");
     }
@@ -186,10 +185,9 @@ public class TestGoogExpressions extends TestExpressions
     @Test
     public void testVisitBinaryOperator_NamespaceAccess_2()
     {
-        // TODO (mschmalle) this needs INamespaceAccessExpressionNode interface
         // TODO (erikdebruin) we need a 'goog.require("a.b")' in the header
-        NamespaceAccessExpressionNode node = (NamespaceAccessExpressionNode) 
getExpressionNode(
-                "a::b::c", NamespaceAccessExpressionNode.class);
+        INamespaceAccessExpressionNode node = (INamespaceAccessExpressionNode) 
getExpressionNode(
+                "a::b::c", INamespaceAccessExpressionNode.class);
         asBlockWalker.visitNamespaceAccessExpression(node);
         assertOut("a.b.c");
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
index 4a084c7..9bf4aa5 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
@@ -25,7 +25,6 @@ import org.apache.flex.compiler.codegen.IDocEmitter;
 import org.apache.flex.compiler.codegen.IEmitter;
 import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IBlockNode;
@@ -47,6 +46,7 @@ import 
org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralContainerNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
@@ -305,7 +305,7 @@ public interface IASEmitter extends IEmitter
 
     void emitIterationFlow(IIterationFlowNode node);
 
-    void emitNamespaceAccessExpression(NamespaceAccessExpressionNode node);
+    void emitNamespaceAccessExpression(INamespaceAccessExpressionNode node);
 
     void emitMemberAccessExpression(IMemberAccessExpressionNode node);
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
index 2650aaf..ec94c86 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
@@ -25,7 +25,6 @@ import org.apache.flex.compiler.codegen.as.IASEmitter;
 import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.internal.semantics.SemanticUtils;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.projects.IASProject;
 import org.apache.flex.compiler.tree.ASTNodeID;
@@ -56,6 +55,7 @@ import org.apache.flex.compiler.tree.as.ILiteralContainerNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode.LiteralType;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
@@ -447,7 +447,7 @@ public class ASBlockWalker implements IASBlockVisitor, 
IASBlockWalker
 
     @Override
     public void visitNamespaceAccessExpression(
-            NamespaceAccessExpressionNode node)
+            INamespaceAccessExpressionNode node)
     {
         debug("visitNamespaceAccessExpression()");
         emitter.emitNamespaceAccessExpression(node);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 1e6a5ec..19955e3 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -42,7 +42,6 @@ import 
org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.ContainerNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.tree.ASTNodeID;
 import org.apache.flex.compiler.tree.as.IASNode;
@@ -71,6 +70,7 @@ import 
org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralContainerNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
@@ -1361,7 +1361,7 @@ public class ASEmitter implements IASEmitter, IEmitter
     }
 
     @Override
-    public void emitNamespaceAccessExpression(NamespaceAccessExpressionNode 
node)
+    public void emitNamespaceAccessExpression(INamespaceAccessExpressionNode 
node)
     {
         getWalker().walk(node.getLeftOperandNode());
         write(node.getOperator().getOperatorText());

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index 4f0ab6b..613b81a 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -45,7 +45,6 @@ import org.apache.flex.compiler.internal.scopes.PackageScope;
 import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.scopes.IASScope;
@@ -63,6 +62,7 @@ import org.apache.flex.compiler.tree.as.IFunctionNode;
 import org.apache.flex.compiler.tree.as.IGetterNode;
 import org.apache.flex.compiler.tree.as.IIdentifierNode;
 import org.apache.flex.compiler.tree.as.IInterfaceNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
 import org.apache.flex.compiler.tree.as.IScopedNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
@@ -1025,7 +1025,7 @@ public class JSGoogEmitter extends JSEmitter implements 
IJSGoogEmitter
     
//--------------------------------------------------------------------------
 
     @Override
-    public void emitNamespaceAccessExpression(NamespaceAccessExpressionNode 
node)
+    public void emitNamespaceAccessExpression(INamespaceAccessExpressionNode 
node)
     {
         getWalker().walk(node.getLeftOperandNode());
         write(ASEmitterTokens.MEMBER_ACCESS);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/internal/visitor/as/ASNodeSwitch.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/as/ASNodeSwitch.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/as/ASNodeSwitch.java
index 934ea0d..8f95453 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/as/ASNodeSwitch.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/as/ASNodeSwitch.java
@@ -48,6 +48,7 @@ import org.apache.flex.compiler.tree.as.IKeywordNode;
 import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
@@ -68,8 +69,8 @@ import org.apache.flex.compiler.tree.as.IWhileLoopNode;
 import org.apache.flex.compiler.tree.as.IWithNode;
 import org.apache.flex.compiler.tree.metadata.IMetaTagNode;
 import org.apache.flex.compiler.tree.metadata.IMetaTagsNode;
-import org.apache.flex.compiler.visitor.IBlockVisitor;
 import org.apache.flex.compiler.visitor.IASNodeStrategy;
+import org.apache.flex.compiler.visitor.IBlockVisitor;
 import org.apache.flex.compiler.visitor.as.IASBlockVisitor;
 
 /**
@@ -307,7 +308,7 @@ public class ASNodeSwitch implements IASNodeStrategy
         }
         else if (node instanceof NamespaceAccessExpressionNode)
         {
-            
visitor.visitNamespaceAccessExpression((NamespaceAccessExpressionNode) node);
+            
visitor.visitNamespaceAccessExpression((INamespaceAccessExpressionNode) node);
         }
         else if (node instanceof IMemberAccessExpressionNode)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler.jx/src/org/apache/flex/compiler/visitor/as/IASBlockVisitor.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/visitor/as/IASBlockVisitor.java 
b/compiler.jx/src/org/apache/flex/compiler/visitor/as/IASBlockVisitor.java
index 4cf5c92..9510ef8 100644
--- a/compiler.jx/src/org/apache/flex/compiler/visitor/as/IASBlockVisitor.java
+++ b/compiler.jx/src/org/apache/flex/compiler/visitor/as/IASBlockVisitor.java
@@ -21,7 +21,6 @@ package org.apache.flex.compiler.visitor.as;
 
 import org.apache.flex.compiler.internal.codegen.as.ASBlockWalker;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
-import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IBlockNode;
@@ -46,6 +45,7 @@ import org.apache.flex.compiler.tree.as.IKeywordNode;
 import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
+import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
@@ -151,7 +151,7 @@ public interface IASBlockVisitor extends IBlockVisitor
 
     void visitMemberAccessExpression(IMemberAccessExpressionNode node);
 
-    void visitNamespaceAccessExpression(NamespaceAccessExpressionNode node);
+    void visitNamespaceAccessExpression(INamespaceAccessExpressionNode node);
     
     void visitVariableExpression(IVariableExpressionNode node);
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6e057093/compiler/src/org/apache/flex/compiler/tree/as/INamespaceAccessExpressionNode.java
----------------------------------------------------------------------
diff --git 
a/compiler/src/org/apache/flex/compiler/tree/as/INamespaceAccessExpressionNode.java
 
b/compiler/src/org/apache/flex/compiler/tree/as/INamespaceAccessExpressionNode.java
new file mode 100644
index 0000000..485c5a6
--- /dev/null
+++ 
b/compiler/src/org/apache/flex/compiler/tree/as/INamespaceAccessExpressionNode.java
@@ -0,0 +1,27 @@
+/*
+ *
+ *  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.tree.as;
+
+/**
+ * @author Erik de Bruin
+ */
+public interface INamespaceAccessExpressionNode extends IBinaryOperatorNode
+{
+}

Reply via email to