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)
{