[Jython-checkins] jython: Ignore lines with just comments, rather than treating as newline.
frank.wierzbicki
jython-checkins at python.org
Tue Jun 24 16:58:35 CEST 2014
http://hg.python.org/jython/rev/a2ab729f5a16
changeset: 7314:a2ab729f5a16
user: Peter Holloway <peter.holloway at diamond.ac.uk>
date: Tue Jun 24 14:58:29 2014 +0000
summary:
Ignore lines with just comments, rather than treating as newline.
files:
Lib/test/test_codeop.py | 4 ++
src/org/python/antlr/PythonTokenSource.java | 16 ++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py
--- a/Lib/test/test_codeop.py
+++ b/Lib/test/test_codeop.py
@@ -258,6 +258,10 @@
ai("(x for x in")
ai("(x for x in (")
+ # Merge test cases below upstream.
+ ai("def x():\n pass\n#comment")
+
+
def test_invalid(self):
ai = self.assertInvalid
ai("a b")
diff --git a/src/org/python/antlr/PythonTokenSource.java b/src/org/python/antlr/PythonTokenSource.java
--- a/src/org/python/antlr/PythonTokenSource.java
+++ b/src/org/python/antlr/PythonTokenSource.java
@@ -252,15 +252,27 @@
private List<Token> enqueueHiddens(Token t) {
List<Token> newlines = new ArrayList<Token>();
if (inSingle && t.getType() == Token.EOF) {
- if (stream.size() > lastTokenAddedIndex + 1) {
- Token hidden = stream.get(lastTokenAddedIndex + 1);
+ int k = 1;
+ while (stream.size() > lastTokenAddedIndex + k) {
+ Token hidden = stream.get(lastTokenAddedIndex + k);
if (hidden.getType() == PythonLexer.COMMENT) {
String text = hidden.getText();
int i = text.indexOf("\n");
+ i = text.indexOf("\n", i + 1);
while(i != -1) {
newlines.add(hidden);
+ lastTokenAddedIndex++;
i = text.indexOf("\n", i + 1);
}
+ k++;
+ } else if (hidden.getType() == PythonLexer.NEWLINE) {
+ generateNewline(hidden);
+ lastTokenAddedIndex++;
+ break;
+ } else if (hidden.getType() == PythonLexer.LEADING_WS) {
+ k++;
+ } else {
+ break;
}
}
}
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list