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 +{ +}
