compiler: more end line/column improvements

(cherry picked from commit f72da6033d17ae0acf9ec047882adafae186d656)
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 @@
         //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 @@
         }
         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 @@
     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 @@
             // 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 @@
                     // 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 @@
             // 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 @@
     {
         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 @@
     {
         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 @@
      * @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 @@
         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 @@
     {
         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 @@
             {
                 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 @@
      * @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)
     {