mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 23:34:45 +08:00
Specially crafted docstrings sometimes lead to errors, fixes #1103
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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':
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user