You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2013/01/11 00:24:25 UTC
svn commit: r1431728 - in /flex/whiteboard/mschmalle/falconjx:
compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/
compiler.jx/src/org/apache/flex/compiler/as/codegen/
compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/
Author: mschmalle
Date: Thu Jan 10 23:24:25 2013
New Revision: 1431728
URL: http://svn.apache.org/viewvc?rev=1431728&view=rev
Log:
Flex:FalconJx:
- Added Class namespace member tests, put emitNamepsace() in the IASEmitter API
Modified:
flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestFieldMembers.java
flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestFieldMembers.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestFieldMembers.java?rev=1431728&r1=1431727&r2=1431728&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestFieldMembers.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestFieldMembers.java Thu Jan 10 23:24:25 2013
@@ -19,6 +19,8 @@
package org.apache.flex.compiler.internal.as.codegen;
+import org.apache.flex.compiler.tree.as.IFileNode;
+import org.apache.flex.compiler.tree.as.INamespaceNode;
import org.apache.flex.compiler.tree.as.IVariableNode;
import org.junit.Test;
@@ -162,4 +164,41 @@ public class TestFieldMembers extends Te
visitor.visitVariable(node);
assertOut("mx_internal static const foo:int = 420");
}
+
+ //--------------------------------------------------------------------------
+ // Namespace
+ //--------------------------------------------------------------------------
+
+ @Test
+ public void testNamespace()
+ {
+ INamespaceNode node = getNamespace("namespace ns = \"http://whatever\";");
+ visitor.visitNamespace(node);
+ assertOut("namespace ns = \"http://whatever\"");
+ }
+
+ @Test
+ public void testNamespace_public()
+ {
+ INamespaceNode node = getNamespace("public namespace ns = \"http://whatever\";");
+ visitor.visitNamespace(node);
+ assertOut("public namespace ns = \"http://whatever\"");
+ }
+
+ @Test
+ public void testNamespace_protected()
+ {
+ INamespaceNode node = getNamespace("protected namespace ns = \"http://whatever\";");
+ visitor.visitNamespace(node);
+ assertOut("protected namespace ns = \"http://whatever\"");
+ }
+
+ protected INamespaceNode getNamespace(String code)
+ {
+ String source = "package {public class A {" + code + "}}";
+ IFileNode node = getFileNode(source);
+ INamespaceNode child = (INamespaceNode) findFirstDescendantOfType(node,
+ INamespaceNode.class);
+ return child;
+ }
}
Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java?rev=1431728&r1=1431727&r2=1431728&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java Thu Jan 10 23:24:25 2013
@@ -28,6 +28,7 @@ import org.apache.flex.compiler.tree.as.
import org.apache.flex.compiler.tree.as.IFunctionNode;
import org.apache.flex.compiler.tree.as.IGetterNode;
import org.apache.flex.compiler.tree.as.IInterfaceNode;
+import org.apache.flex.compiler.tree.as.INamespaceNode;
import org.apache.flex.compiler.tree.as.IPackageNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.ISetterNode;
@@ -50,7 +51,7 @@ public interface IASEmitter
IDocEmitter getDocEmitter();
void setDocEmitter(IDocEmitter value);
-
+
/**
* Writes a string to the writer.
*
@@ -155,6 +156,13 @@ public interface IASEmitter
void emitSetAccessor(ISetterNode node);
void emitParameter(IParameterNode node);
+
+ /**
+ * Emit a namespace member.
+ *
+ * @param node The {@link INamespaceNode} class member.
+ */
+ void emitNamespace(INamespaceNode node);
//--------------------------------------------------------------------------
// Expressions
Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java?rev=1431728&r1=1431727&r2=1431728&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java Thu Jan 10 23:24:25 2013
@@ -26,7 +26,6 @@ import org.apache.flex.compiler.as.codeg
import org.apache.flex.compiler.definitions.IClassDefinition;
import org.apache.flex.compiler.definitions.IDefinition;
import org.apache.flex.compiler.definitions.IInterfaceDefinition;
-import org.apache.flex.compiler.internal.definitions.ClassDefinition;
import org.apache.flex.compiler.internal.semantics.SemanticUtils;
import org.apache.flex.compiler.internal.tree.as.BaseLiteralContainerNode;
import org.apache.flex.compiler.internal.tree.as.ContainerNode;
@@ -258,7 +257,7 @@ public class ASBlockWalker implements IA
public void visitNamespace(INamespaceNode node)
{
debug("visitNamespace()");
- // TODO (mschmalle) visitNamespace()
+ emitter.emitNamespace(node);
}
@Override
Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java?rev=1431728&r1=1431727&r2=1431728&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java Thu Jan 10 23:24:25 2013
@@ -31,7 +31,6 @@ import org.apache.flex.compiler.constant
import org.apache.flex.compiler.definitions.IDefinition;
import org.apache.flex.compiler.definitions.IFunctionDefinition;
import org.apache.flex.compiler.definitions.IVariableDefinition;
-import org.apache.flex.compiler.definitions.references.INamespaceReference;
import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
import org.apache.flex.compiler.internal.tree.as.FunctionNode;
import org.apache.flex.compiler.internal.tree.as.FunctionObjectNode;
@@ -47,6 +46,7 @@ import org.apache.flex.compiler.tree.as.
import org.apache.flex.compiler.tree.as.IGetterNode;
import org.apache.flex.compiler.tree.as.IInterfaceNode;
import org.apache.flex.compiler.tree.as.IKeywordNode;
+import org.apache.flex.compiler.tree.as.INamespaceNode;
import org.apache.flex.compiler.tree.as.IPackageNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.IScopedNode;
@@ -435,7 +435,7 @@ public class ASEmitter implements IASEmi
if (!(node instanceof ChainedVariableNode))
{
- emitNamespace2(node);
+ emitNamespaceIdentifier(node);
emitModifiers(definition);
emitMemberKeyword(node);
}
@@ -499,7 +499,7 @@ public class ASEmitter implements IASEmi
IFunctionDefinition definition = node.getDefinition();
- emitNamespace2(node);
+ emitNamespaceIdentifier(node);
emitModifiers(definition);
emitMemberKeyword(node);
@@ -563,25 +563,30 @@ public class ASEmitter implements IASEmi
//
//--------------------------------------------------------------------------
- protected void emitNamespace2(IDefinitionNode node)
+ @Override
+ public void emitNamespace(INamespaceNode node)
{
- String namespace = node.getNamespace();
- if (namespace != null && !namespace.equals(IASKeywordConstants.INTERNAL))
- {
- write(namespace);
- write(SPACE);
- }
+ emitNamespaceIdentifier(node);
+ writeToken(IASKeywordConstants.NAMESPACE);
+ write(SPACE);
+ emitMemberName(node);
+ write(SPACE);
+ write("=");
+ write(SPACE);
+ getWalker().walk(node.getNamespaceURINode());
}
- protected void emitNamespace(IDefinition definition)
+ //--------------------------------------------------------------------------
+ //
+ //--------------------------------------------------------------------------
+
+ protected void emitNamespaceIdentifier(IDefinitionNode node)
{
- // namespace (public, protected, private, foo_bar)
- // TODO (mschmalle) figure out what to do if there is an explicit internal
- // right now if it's internal, code not produced (implied)
- if (!definition.isInternal())
+ String namespace = node.getNamespace();
+ if (namespace != null
+ && !namespace.equals(IASKeywordConstants.INTERNAL))
{
- INamespaceReference reference = definition.getNamespaceReference();
- write(reference.getBaseName());
+ write(namespace);
write(SPACE);
}
}
@@ -738,4 +743,5 @@ public class ASEmitter implements IASEmi
write(SPACE);
getWalker().walk(node.getRightOperandNode());
}
+
}