santiagopg 2004/05/21 13:29:29
Modified: java/src/org/apache/xalan/xsltc/compiler
LiteralAttribute.java LiteralElement.java
Parser.java SyntaxTreeNode.java
Log:
Modified code to ensure line number information is propagated from parent to
children to ensure we get informative error messages. This was particularly bad
for errors in ATVs.
Revision Changes Path
1.9 +5 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralAttribute.java
Index: LiteralAttribute.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralAttribute.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- LiteralAttribute.java 16 Feb 2004 22:24:29 -0000 1.8
+++ LiteralAttribute.java 21 May 2004 20:29:28 -0000 1.9
@@ -47,8 +47,11 @@
* @param value the attribute value.
* @param parser the XSLT parser (wraps XPath parser).
*/
- public LiteralAttribute(String name, String value, Parser parser) {
+ public LiteralAttribute(String name, String value, Parser parser,
+ SyntaxTreeNode parent)
+ {
_name = name;
+ setParent(parent);
_value = AttributeValue.create(this, value, parser);
}
1.26 +2 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralElement.java
Index: LiteralElement.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/LiteralElement.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- LiteralElement.java 24 Feb 2004 03:55:47 -0000 1.25
+++ LiteralElement.java 21 May 2004 20:29:28 -0000 1.26
@@ -277,7 +277,7 @@
// Handle all other literal attributes
final String name = translateQName(qname, stable);
- LiteralAttribute attr = new LiteralAttribute(name, val, parser);
+ LiteralAttribute attr = new LiteralAttribute(name, val, parser,
this);
addAttribute(attr);
attr.setParent(this);
attr.parseContents(parser);
1.65 +5 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java
Index: Parser.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- Parser.java 23 Feb 2004 10:29:35 -0000 1.64
+++ Parser.java 21 May 2004 20:29:28 -0000 1.65
@@ -965,7 +965,10 @@
}
}
}
- if (node == null) node = new LiteralElement();
+ if (node == null) {
+ node = new LiteralElement();
+ node.setLineNumber(_locator.getLineNumber());
+ }
}
if ((node != null) && (node instanceof LiteralElement)) {
((LiteralElement)node).setQName(qname);
1.30 +7 -3
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SyntaxTreeNode.java
Index: SyntaxTreeNode.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SyntaxTreeNode.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- SyntaxTreeNode.java 16 Feb 2004 22:25:10 -0000 1.29
+++ SyntaxTreeNode.java 21 May 2004 20:29:28 -0000 1.30
@@ -118,11 +118,15 @@
}
/**
- * Get the source file line number for this element
+ * Get the source file line number for this element. If unavailable,
lookup
+ * in ancestors.
+ *
* @return The source file line number.
*/
public final int getLineNumber() {
- return _line;
+ if (_line > 0) return _line;
+ SyntaxTreeNode parent = getParent();
+ return (parent != null) ? parent.getLineNumber() : 0;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]