You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2019/09/13 22:58:19 UTC

[royale-compiler] branch develop updated (39cb04f -> b81373b)

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

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


    from 39cb04f  ImportNode: fixed issue where end line and end column were never set based on the name node
     new f72da60  compiler: more end line/column improvements
     new b81373b  ConfigConditionBlockNode: fix fillInOffsets() and normalize() when disabled

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../internal/definitions/VectorInformation.java      |  4 ++--
 .../compiler/internal/parsing/as/BaseASParser.java   |  2 +-
 .../internal/tree/as/BinaryOperatorNodeBase.java     |  2 +-
 .../royale/compiler/internal/tree/as/ClassNode.java  |  4 ++--
 .../internal/tree/as/ConfigConditionBlockNode.java   | 20 +++++++++++++++++++-
 .../compiler/internal/tree/as/FunctionNode.java      |  4 ++--
 .../tree/as/NamespaceAccessExpressionNode.java       |  2 +-
 .../internal/tree/as/NamespaceIdentifierNode.java    |  2 +-
 .../royale/compiler/internal/tree/as/NodeBase.java   | 15 +++++++++++++++
 .../compiler/internal/tree/as/ParameterNode.java     |  2 +-
 .../internal/tree/as/UnaryOperatorNodeBase.java      |  2 +-
 .../compiler/internal/tree/as/UseNamespaceNode.java  |  2 +-
 .../compiler/internal/tree/mxml/MXMLNodeBase.java    |  1 +
 13 files changed, 48 insertions(+), 14 deletions(-)


[royale-compiler] 01/02: compiler: more end line/column improvements

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f72da6033d17ae0acf9ec047882adafae186d656
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Fri Sep 13 13:32:58 2019 -0700

    compiler: more end line/column improvements
---
 .../compiler/internal/definitions/VectorInformation.java  |  4 ++--
 .../royale/compiler/internal/parsing/as/BaseASParser.java |  2 +-
 .../compiler/internal/tree/as/BinaryOperatorNodeBase.java |  2 +-
 .../royale/compiler/internal/tree/as/ClassNode.java       |  4 ++--
 .../royale/compiler/internal/tree/as/FunctionNode.java    |  4 ++--
 .../internal/tree/as/NamespaceAccessExpressionNode.java   |  2 +-
 .../internal/tree/as/NamespaceIdentifierNode.java         |  2 +-
 .../apache/royale/compiler/internal/tree/as/NodeBase.java | 15 +++++++++++++++
 .../royale/compiler/internal/tree/as/ParameterNode.java   |  2 +-
 .../compiler/internal/tree/as/UnaryOperatorNodeBase.java  |  2 +-
 .../compiler/internal/tree/as/UseNamespaceNode.java       |  2 +-
 .../royale/compiler/internal/tree/mxml/MXMLNodeBase.java  |  1 +
 12 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/VectorInformation.java b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/VectorInformation.java
index d83b27a..1310790 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/VectorInformation.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/VectorInformation.java
@@ -198,14 +198,14 @@ class VectorInformation
         //add the fixed getter/setter pair
         GetterNode fixGetter = new GetterNode(null, null, new IdentifierNode("fixed"));
         NamespaceIdentifierNode pub = new NamespaceIdentifierNode(INamespaceConstants.public_);
-        pub.span(-1, -1, -1, -1);
+        pub.span(-1, -1, -1, -1, -1, -1);
         fixGetter.setNamespace(pub);
         fixGetter.setType(null, new IdentifierNode(IASLanguageConstants.Boolean));
         retVal[2] = fixGetter;
 
         SetterNode fixSetter = new SetterNode(null, null, new IdentifierNode("fixed"));
         pub = new NamespaceIdentifierNode(INamespaceConstants.public_);
-        pub.span(-1, -1, -1, -1);
+        pub.span(-1, -1, -1, -1, -1, -1);
         fixSetter.setNamespace(pub);
         fixSetter.setType(null, new IdentifierNode(IASLanguageConstants.void_));
         ParameterNode value = new ParameterNode(new IdentifierNode("value"));
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
index a9a5e91..62bdaee 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/parsing/as/BaseASParser.java
@@ -1573,7 +1573,7 @@ abstract class BaseASParser extends LLkParser implements IProblemReporter
         }
         else
         {
-            block.span(blockToken.getStart() + 1, blockToken.getStart() + 1, blockToken.getLine(), blockToken.getColumn());
+            block.span(blockToken.getStart() + 1, blockToken.getStart() + 1, blockToken.getLine(), blockToken.getColumn(), blockToken.getLine(), blockToken.getColumn());
         }
     }
 
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/BinaryOperatorNodeBase.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/BinaryOperatorNodeBase.java
index d51c82d..03dae65 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/BinaryOperatorNodeBase.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/BinaryOperatorNodeBase.java
@@ -282,7 +282,7 @@ public abstract class BinaryOperatorNodeBase extends OperatorNodeBase implements
     protected void fillInOffsets()
     {
         if (rightOperandNode == null && leftOperandNode == null && operatorStart != -1)
-            span(operatorStart, operatorStart + 1, -1, -1);
+            span(operatorStart, operatorStart + 1, -1, -1, -1, -1);
         else
             super.fillInOffsets();
     }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ClassNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ClassNode.java
index bfc65ba..484f0a8 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ClassNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ClassNode.java
@@ -513,10 +513,10 @@ public class ClassNode extends MemberedNode implements IClassNode
             // so we'll create one and add it to the ClassNode
             IdentifierNode constructorNameNode = new IdentifierNode(getName());
             constructorNameNode.setReferenceValue(getDefinition());
-            constructorNameNode.span(getNameAbsoluteStart(), getNameAbsoluteEnd(), -1, -1);
+            constructorNameNode.span(getNameAbsoluteStart(), getNameAbsoluteEnd(), -1, -1, -1, -1);
             defaultConstructorNode = new FunctionNode(null, constructorNameNode);
             NamespaceIdentifierNode pub = new NamespaceIdentifierNode(INamespaceConstants.public_);
-            pub.span(-1, -1, -1, -1);
+            pub.span(-1, -1, -1, -1, -1, -1);
             defaultConstructorNode.setNamespace(pub);
             defaultConstructorNode.normalize(true);
             defaultConstructorNode.setParent(contentsNode);
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/FunctionNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/FunctionNode.java
index 64c0b2b..54c836c 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/FunctionNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/FunctionNode.java
@@ -384,7 +384,7 @@ public class FunctionNode extends BaseTypedDefinitionNode implements IFunctionNo
                     // metadata, the constructor should be considered private
                     // and we should generate a fake namespace node
                     NamespaceIdentifierNode priv = new NamespaceIdentifierNode(INamespaceConstants.private_);
-                    priv.span(-1, -1, -1, -1);
+                    priv.span(-1, -1, -1, -1, -1, -1);
                     priv.setDecorationTarget(this);
                     return priv;
                 }
@@ -392,7 +392,7 @@ public class FunctionNode extends BaseTypedDefinitionNode implements IFunctionNo
             // if there is no namespace node, the namespace defaults to public
             // and we'll generate a fake node
             NamespaceIdentifierNode pub = new NamespaceIdentifierNode(INamespaceConstants.public_);
-            pub.span(-1, -1, -1, -1);
+            pub.span(-1, -1, -1, -1, -1, -1);
             pub.setDecorationTarget(this);
             return pub;
         }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceAccessExpressionNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceAccessExpressionNode.java
index 175f500..ae8e987 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceAccessExpressionNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceAccessExpressionNode.java
@@ -41,7 +41,7 @@ public class NamespaceAccessExpressionNode extends BinaryOperatorNodeBase implem
     {
         super(operator, left instanceof IdentifierNode ? new NamespaceIdentifierNode((IdentifierNode)left) : left, right);
         
-        leftOperandNode.span(left.getAbsoluteStart(), left.getAbsoluteEnd(), left.getLine(), left.getColumn());
+        leftOperandNode.span(left.getAbsoluteStart(), left.getAbsoluteEnd(), left.getLine(), left.getColumn(), left.getEndLine(), left.getEndColumn());
     }
 
     /**
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceIdentifierNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceIdentifierNode.java
index bd74fd2..05238a9 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceIdentifierNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NamespaceIdentifierNode.java
@@ -79,7 +79,7 @@ public class NamespaceIdentifierNode extends IdentifierNode implements INamespac
     {
         super(node.getName());
         
-        span(node.getAbsoluteStart(), node.getAbsoluteEnd(), node.getLine(), node.getColumn());
+        span(node.getAbsoluteStart(), node.getAbsoluteEnd(), node.getLine(), node.getColumn(), node.getEndLine(), node.getEndColumn());
         setSourcePath(node.getSourcePath());
     }
 
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NodeBase.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NodeBase.java
index d4d9941..eef182f 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NodeBase.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/NodeBase.java
@@ -483,13 +483,28 @@ public abstract class NodeBase extends SourceLocation implements IASNode
      * @param start start offset for the node
      * @param end end offset for the node
      * @param line line number for the node
+     * @deprecated Use span(int,int,int,int,int,int) instead so that endLine and endColumn are included
      */
     public final void span(int start, int end, int line, int column)
     {
+        span(start, end, line, column, -1, -1);
+    }
+
+    /**
+     * Set the start and end offsets of the node. Used during parsing.
+     * 
+     * @param start start offset for the node
+     * @param end end offset for the node
+     * @param line line number for the node
+     */
+    public final void span(int start, int end, int line, int column, int endLine, int endColumn)
+    {
         setStart(start);
         setEnd(end);
         setLine(line);
         setColumn(column);
+        setEndLine(endLine);
+        setEndColumn(endColumn);
     }
 
     public Collection<ICompilerProblem> runPostProcess(EnumSet<PostProcessStep> set, ASScope containingScope)
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ParameterNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ParameterNode.java
index 51b209c..93efc2f 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ParameterNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ParameterNode.java
@@ -172,7 +172,7 @@ public final class ParameterNode extends BaseVariableNode implements IParameterN
         if (typeNode == null && isRest())
         {
             typeNode = new IdentifierNode(IASLanguageConstants.Array);
-            typeNode.span(-1, -1, -1, -1);
+            typeNode.span(-1, -1, -1, -1, -1, -1);
             return;
         }
         
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UnaryOperatorNodeBase.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UnaryOperatorNodeBase.java
index 5145924..be92a12 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UnaryOperatorNodeBase.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UnaryOperatorNodeBase.java
@@ -148,7 +148,7 @@ public abstract class UnaryOperatorNodeBase extends OperatorNodeBase implements
     {
         if (operandNode == null && operatorStart != -1)
         {
-            span(operatorStart, operatorStart + 1, -1, -1);
+            span(operatorStart, operatorStart + 1, -1, -1, -1, -1);
         }
         else
         {
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UseNamespaceNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UseNamespaceNode.java
index 8ce1130..51a3d29 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UseNamespaceNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/UseNamespaceNode.java
@@ -123,7 +123,7 @@ public class UseNamespaceNode extends FixedChildrenNode implements IUseNamespace
             {
                 namespaceNode = new NamespaceIdentifierNode(((IIdentifierNode)namespace).getName());
                 ((NodeBase)namespaceNode).setSourcePath(namespace.getSourcePath());
-                ((NodeBase)namespaceNode).span(namespace.getAbsoluteStart(), namespace.getAbsoluteEnd(), namespace.getLine(), namespace.getColumn());
+                ((NodeBase)namespaceNode).span(namespace.getAbsoluteStart(), namespace.getAbsoluteEnd(), namespace.getLine(), namespace.getColumn(), namespace.getEndLine(), namespace.getEndColumn());
             }
         }
     }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLNodeBase.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLNodeBase.java
index 4909e2e..b511f63 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLNodeBase.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLNodeBase.java
@@ -689,6 +689,7 @@ public abstract class MXMLNodeBase extends NodeBase implements IMXMLNode
      * @param end The ending offset of this node.
      * @param line The number of the line on which this node starts.
      * @param column This number of the column at which this node starts.
+     * @deprecated Use setLocation(String,int,int,int,int,int,int) instead
      */
     public void setLocation(String sourcePath, int start, int end, int line, int column)
     {


[royale-compiler] 02/02: ConfigConditionBlockNode: fix fillInOffsets() and normalize() when disabled

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b81373b433fdc20477b337e9d729d16646626a17
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Fri Sep 13 14:59:02 2019 -0700

    ConfigConditionBlockNode: fix fillInOffsets() and normalize() when disabled
    
    They didn't set end/endLine/endColumn before.
---
 .../internal/tree/as/ConfigConditionBlockNode.java   | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ConfigConditionBlockNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ConfigConditionBlockNode.java
index 62080ea..c0998f4 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ConfigConditionBlockNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/ConfigConditionBlockNode.java
@@ -33,7 +33,7 @@ import org.apache.royale.compiler.tree.ASTNodeID;
  */
 public final class ConfigConditionBlockNode extends BlockNode
 {
-    private final boolean enabled;
+    private boolean enabled;
 
     /**
      * Create a enabled or disabled configuration config block.
@@ -58,6 +58,24 @@ public final class ConfigConditionBlockNode extends BlockNode
         else
             return 0;
     }
+
+    @Override
+    protected void fillInOffsets()
+    {
+        boolean oldEnabled = enabled;
+        enabled = true;
+        super.fillInOffsets();
+        enabled = oldEnabled;
+    }
+
+    @Override
+    public void normalize(boolean fillInOffsets)
+    {
+        boolean oldEnabled = enabled;
+        enabled = true;
+        super.normalize(fillInOffsets);
+        enabled = oldEnabled;
+    }
     
     @Override
     protected boolean buildInnerString(StringBuilder sb)