Commit 0dce815c authored by Mark Dickinson's avatar Mark Dickinson

Merged revisions 82555 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r82555 | mark.dickinson | 2010-07-04 19:38:57 +0100 (Sun, 04 Jul 2010) | 2 lines

  Issue #9130: Validate ellipsis tokens in relative imports.
........
parent 1b9b5727
......@@ -193,8 +193,14 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase):
def test_relative_imports(self):
self.check_suite("from . import name")
self.check_suite("from .. import name")
# check all the way up to '....', since '...' is tokenized
# differently from '.' (it's an ellipsis token).
self.check_suite("from ... import name")
self.check_suite("from .... import name")
self.check_suite("from .pkg import name")
self.check_suite("from ..pkg import name")
self.check_suite("from ...pkg import name")
self.check_suite("from ....pkg import name")
def test_pep263(self):
self.check_suite("# -*- coding: iso-8859-1 -*-\n"
......
......@@ -1750,17 +1750,17 @@ validate_import_name(node *tree)
&& validate_dotted_as_names(CHILD(tree, 1)));
}
/* Helper function to count the number of leading dots in
/* Helper function to count the number of leading dots (or ellipsis tokens) in
* 'from ...module import name'
*/
static int
count_from_dots(node *tree)
{
int i;
for (i = 1; i < NCH(tree); i++)
if (TYPE(CHILD(tree, i)) != DOT)
break;
return i-1;
int i;
for (i = 1; i < NCH(tree); i++)
if (TYPE(CHILD(tree, i)) != DOT && TYPE(CHILD(tree, i)) != ELLIPSIS)
break;
return i - 1;
}
/* import_from: ('from' ('.'* dotted_name | '.'+)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment