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; }
