This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit c9f54f91a69829e9a2364e65c0965dec0200ec61
Author: Alex Harui <[email protected]>
AuthorDate: Tue Aug 7 21:54:36 2018 -0700

    allow substitutions in method visibility
---
 .../royale/compiler/internal/parsing/as/ASParser.g | 26 ++++++++++++++++++++++
 .../internal/parsing/as/ConfigProcessor.java       | 10 +++++++++
 2 files changed, 36 insertions(+)

diff --git 
a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
 
b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
index 6a7ac9c..c9b1528 100644
--- 
a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
+++ 
b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
@@ -222,6 +222,7 @@ attributedDefinition[ContainerNode c]
 attribute [List<ModifierNode> modifiers, List<INamespaceDecorationNode> 
namespaceAttributes] 
 {
     ExpressionNodeBase namespaceNode = null; 
+    ExpressionNodeBase configAsNamespaceNode = null; 
     ModifierNode modifierNode = null;
 }
     :   modifierNode=modifierAttribute
@@ -234,8 +235,33 @@ attribute [List<ModifierNode> modifiers, 
List<INamespaceDecorationNode> namespac
             if (namespaceNode instanceof INamespaceDecorationNode)
                 namespaceAttributes.add((INamespaceDecorationNode) 
namespaceNode); 
         }
+    |   configAsNamespaceNode=configConditionAsNamespaceModifier
+        {
+            if (configAsNamespaceNode instanceof INamespaceDecorationNode)
+                namespaceAttributes.add((INamespaceDecorationNode) 
configAsNamespaceNode); 
+        }
     ;
        
+configConditionAsNamespaceModifier returns [ExpressionNodeBase n]
+{
+    n = null; 
+}
+    :   ns:TOKEN_NAMESPACE_NAME op:TOKEN_OPERATOR_NS_QUALIFIER 
id:TOKEN_NAMESPACE_ANNOTATION
+        { final NamespaceIdentifierNode nsNode = new 
NamespaceIdentifierNode((ASToken)ns); 
+          nsNode.setIsConfigNamespace(isConfigNamespace(nsNode));
+         final IdentifierNode idNode = new IdentifierNode((ASToken)id);
+         final IdentifierNode idNode2 = 
(IdentifierNode)transformToNSAccessExpression(nsNode, (ASToken) op, idNode);
+          n = new NamespaceIdentifierNode(idNode2.getName());
+          n = n.copyForInitializer(null);
+         n.setSourcePath(nsNode.getSourcePath());
+         n.setLine(nsNode.getLine());
+         n.setColumn(nsNode.getColumn());
+         n.setEndLine(idNode.getEndLine());
+         n.setEndColumn(idNode.getEndColumn());
+         n.setStart(nsNode.getStart());
+         n.setEnd(idNode.getEnd());
+        }
+    ;
        
 /**
  * Matches a definition of variable, function, namespace, class or interface.
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ConfigProcessor.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ConfigProcessor.java
index 2cef61d..5966459 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ConfigProcessor.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/ConfigProcessor.java
@@ -29,6 +29,7 @@ import java.util.List;
 import antlr.Token;
 
 import org.apache.royale.abc.ABCConstants;
+import org.apache.royale.abc.semantics.Namespace;
 import org.apache.royale.compiler.constants.IASLanguageConstants;
 import org.apache.royale.compiler.definitions.IDefinition;
 import org.apache.royale.compiler.internal.definitions.ConstantDefinition;
@@ -511,6 +512,15 @@ public class ConfigProcessor
                IdentifierNode id = (IdentifierNode)result;
                return id;
         }
+        else if (result instanceof Namespace)
+        {
+               Namespace ns = (Namespace)result;
+               String nsName = ns.getName();
+               if (nsName.length() == 0)
+                       nsName = "public";
+               
+               return new IdentifierNode(nsName);
+        }
         return null;
     }
 

Reply via email to