1
0
forked from VimPlug/jedi

Fix issues with unreachable flows.

This benefits static analysis as well as autocompletion: Unreachable code (things like code within 'if 0:') should still be resolveable.
This commit is contained in:
Dave Halter
2014-09-03 00:05:37 +02:00
parent ea5b98905e
commit bcc84820fe
4 changed files with 37 additions and 3 deletions

View File

@@ -32,11 +32,21 @@ UNREACHABLE = Status(False, 'unreachable')
UNSURE = Status(None, 'unsure')
def break_check(evaluator, base_scope, element_scope):
def break_check(evaluator, base_scope, element_scope, origin_scope=None):
from jedi.evaluate.representation import wrap
base_scope = wrap(evaluator, base_scope)
element_scope = wrap(evaluator, element_scope)
# Direct parents get resolved, we filter scopes that are separate branches.
# This makes sense for autocompletion and static analysis. For actual
# Python it doesn't matter, because we're talking about potentially
# unreachable code.
s = origin_scope
while s is not None:
if element_scope == s:
return REACHABLE
s = s.parent
reachable = REACHABLE
if isinstance(element_scope, Flow):
if element_scope.command == 'else':