Specially crafted docstrings sometimes lead to errors, fixes #1103

This commit is contained in:
Dave Halter
2018-04-25 21:03:47 +02:00
parent ba96c21f83
commit 91499565a9
3 changed files with 16 additions and 3 deletions

View File

@@ -214,6 +214,9 @@ def _evaluate_for_statement_string(module_context, string):
except (AttributeError, IndexError):
return []
if stmt.type not in ('name', 'atom', 'atom_expr'):
return []
from jedi.evaluate.context import FunctionContext
function_context = FunctionContext(
module_context.evaluator,

View File

@@ -74,8 +74,10 @@ def eval_node(context, element):
# For False/True/None
if element.value in ('False', 'True', 'None'):
return ContextSet(compiled.builtin_from_name(evaluator, element.value))
# else: print e.g. could be evaluated like this in Python 2.7
return NO_CONTEXTS
if element.value == 'print':
# print e.g. could be evaluated like this in Python 2.7
return NO_CONTEXTS
assert False, 'Cannot evaluate the keyword %s' % element
elif typ == 'lambdef':
return ContextSet(FunctionContext(evaluator, context, element))
elif typ == 'expr_stmt':

View File

@@ -30,13 +30,17 @@ def sphinxy(a, b, c, d, x):
sphinxy()
# wrong declarations
def sphinxy2(a, b, x):
def sphinxy2(a, b, x, y, z):
"""
:param a: Forgot type declaration
:type a:
:param b: Just something
:type b: ``
:param x: Just something without type
:param y: A function
:type y: def l(): pass
:param z: A keyword
:type z: return
:rtype:
"""
#?
@@ -45,6 +49,10 @@ def sphinxy2(a, b, x):
b
#?
x
#?
y
#?
z
#?
sphinxy2()