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
The following commit(s) were added to refs/heads/develop by this push:
new 2abad7b4e MXMLStyleNode, CSSNodeBase: fix line/column positions of CSS
nodes
2abad7b4e is described below
commit 2abad7b4e2d217fc6ea3a033b7837b7ab3209805
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Feb 28 13:10:43 2024 -0800
MXMLStyleNode, CSSNodeBase: fix line/column positions of CSS nodes
Problems were being reported relative to the <fx:Style> element instead of
to the full MXML document
---
.../royale/compiler/internal/css/CSSNodeBase.java | 17 ++++++++++++++++-
.../compiler/internal/tree/mxml/MXMLStyleNode.java | 8 ++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSNodeBase.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSNodeBase.java
index ffa6c4bc8..af966c9da 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSNodeBase.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSNodeBase.java
@@ -82,6 +82,8 @@ class CSSNodeBase extends SourceLocation implements ICSSNode
{
int line = NOT_SET;
int column = NOT_SET;
+ int endLine = NOT_SET;
+ int endColumn = NOT_SET;
int start = NOT_SET;
int stop = NOT_SET;
@@ -93,7 +95,7 @@ class CSSNodeBase extends SourceLocation implements ICSSNode
(CommonToken)tokenStream.get(tokenStartIndex);
start = startToken.getStartIndex();
line = startToken.getLine();
- column = startToken.getCharPositionInLine() + 1;
+ column = startToken.getCharPositionInLine();
}
final int tokenStopIndex = tree.getTokenStopIndex();
@@ -102,12 +104,25 @@ class CSSNodeBase extends SourceLocation implements
ICSSNode
final CommonToken stopToken =
(CommonToken)tokenStream.get(tokenStopIndex);
stop = stopToken.getStopIndex() + 1;
+ endLine = stopToken.getLine();
+ endColumn = stopToken.getCharPositionInLine() +
stopToken.getText().length();
+ }
+
+ if (endLine == NOT_SET)
+ {
+ endLine = line;
+ if (endColumn == NOT_SET)
+ {
+ endColumn = column;
+ }
}
setStart(start);
setEnd(stop);
setLine(line);
setColumn(column);
+ setEndLine(endLine);
+ setEndColumn(endColumn);
setSourcePath(tokenStream.getSourceName());
}
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLStyleNode.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLStyleNode.java
index 038f0345c..5d40c7e64 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLStyleNode.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLStyleNode.java
@@ -63,6 +63,8 @@ class MXMLStyleNode extends MXMLNodeBase implements
IMXMLStyleNode
* {@code <fx:Style src="styles.css" />}.
*/
private String cssText;
+
+ private int cssTextStart = 0;
/**
* path of included css.
@@ -91,6 +93,8 @@ class MXMLStyleNode extends MXMLNodeBase implements
IMXMLStyleNode
{
ANTLRStringStream stream = new ANTLRStringStream(cssText);
stream.name = cssSourcePath != null ? cssSourcePath :
getSourcePath();
+ stream.setLine(getLine());
+ stream.setCharPositionInLine(cssTextStart);
cssDocument = CSSDocument.parse(stream, problems);
}
else
@@ -122,6 +126,7 @@ class MXMLStyleNode extends MXMLNodeBase implements
IMXMLStyleNode
if (sourcePath != null)
{
cssText = builder.readExternalFile(attribute, sourcePath);
+ cssTextStart = 0;
cssSourcePath = sourcePath;
}
}
@@ -154,7 +159,10 @@ class MXMLStyleNode extends MXMLNodeBase implements
IMXMLStyleNode
// If <fx:Style> tag has a valid 'source' attribute, the text of the
node is ignored.
if (cssText == null)
+ {
cssText = tag.getCompilableText();
+ cssTextStart = tag.getEndColumn() + 1;
+ }
// Register this "style" node with the root "MXMLFileNode".
builder.getFileNode().getStyleNodes().add(this);