Simplify the leaf with newlines stuff.

This commit is contained in:
Dave Halter
2017-03-16 20:18:30 +01:00
parent 4573ab19f4
commit 96c67cee26
2 changed files with 15 additions and 24 deletions

View File

@@ -41,8 +41,7 @@ import abc
from jedi._compatibility import (Python3Method, is_py3, utf8_repr, from jedi._compatibility import (Python3Method, is_py3, utf8_repr,
literal_eval, unicode) literal_eval, unicode)
from jedi.parser.tree import (Node, BaseNode, Leaf, LeafWithNewlines, from jedi.parser.tree import Node, BaseNode, Leaf, ErrorNode, ErrorLeaf
ErrorNode, ErrorLeaf)
def _safe_literal_eval(value): def _safe_literal_eval(value):
@@ -211,8 +210,12 @@ class PythonLeaf(Leaf, PythonMixin):
pass pass
class PythonLeafWithNewlines(LeafWithNewlines, PythonMixin): class _LeafWithoutNewlines(PythonLeaf):
pass __slots__ = ()
@property
def end_pos(self):
return self.line, self.indent + len(self.value)
class PythonBaseNode(BaseNode, PythonMixin): class PythonBaseNode(BaseNode, PythonMixin):
@@ -231,12 +234,12 @@ class PythonNode(Node, PythonMixin):
pass pass
class EndMarker(PythonLeaf): class EndMarker(_LeafWithoutNewlines):
__slots__ = () __slots__ = ()
type = 'endmarker' type = 'endmarker'
class Newline(PythonLeafWithNewlines): class Newline(PythonLeaf):
"""Contains NEWLINE and ENDMARKER tokens.""" """Contains NEWLINE and ENDMARKER tokens."""
__slots__ = () __slots__ = ()
type = 'newline' type = 'newline'
@@ -246,7 +249,7 @@ class Newline(PythonLeafWithNewlines):
return "<%s: %s>" % (type(self).__name__, repr(self.value)) return "<%s: %s>" % (type(self).__name__, repr(self.value))
class Name(PythonLeaf): class Name(_LeafWithoutNewlines):
""" """
A string. Sometimes it is important to know if the string belongs to a name A string. Sometimes it is important to know if the string belongs to a name
or not. or not.
@@ -286,7 +289,7 @@ class Name(PythonLeaf):
yield self yield self
class Literal(PythonLeafWithNewlines): class Literal(PythonLeaf):
__slots__ = () __slots__ = ()
def eval(self): def eval(self):
@@ -303,7 +306,7 @@ class String(Literal):
__slots__ = () __slots__ = ()
class Operator(PythonLeaf): class Operator(_LeafWithoutNewlines):
type = 'operator' type = 'operator'
__slots__ = () __slots__ = ()
@@ -328,7 +331,7 @@ class Operator(PythonLeaf):
return hash(self.value) return hash(self.value)
class Keyword(PythonLeaf): class Keyword(_LeafWithoutNewlines):
type = 'keyword' type = 'keyword'
__slots__ = () __slots__ = ()

View File

@@ -115,10 +115,6 @@ class Leaf(_NodeOrLeaf):
return self.line - self.prefix.count('\n'), 0 # It's the first leaf. return self.line - self.prefix.count('\n'), 0 # It's the first leaf.
return previous_leaf.end_pos return previous_leaf.end_pos
@property
def end_pos(self):
return self.line, self.indent + len(self.value)
def move(self, line_offset): def move(self, line_offset):
self.line += line_offset self.line += line_offset
@@ -139,14 +135,6 @@ class Leaf(_NodeOrLeaf):
def nodes_to_execute(self, last_added=False): def nodes_to_execute(self, last_added=False):
return [] return []
@utf8_repr
def __repr__(self):
return "<%s: %s start=%s>" % (type(self).__name__, self.value, self.start_pos)
class LeafWithNewlines(Leaf):
__slots__ = ()
@property @property
def end_pos(self): def end_pos(self):
""" """
@@ -164,7 +152,7 @@ class LeafWithNewlines(Leaf):
@utf8_repr @utf8_repr
def __repr__(self): def __repr__(self):
return "<%s: %r>" % (type(self).__name__, self.value) return "<%s: %s start=%s>" % (type(self).__name__, self.value, self.start_pos)
class BaseNode(_NodeOrLeaf): class BaseNode(_NodeOrLeaf):
@@ -335,7 +323,7 @@ class ErrorNode(BaseNode):
return [] return []
class ErrorLeaf(LeafWithNewlines): class ErrorLeaf(Leaf):
""" """
TODO doc TODO doc
""" """