flows no longer distort results in certain positions

This commit is contained in:
David Halter
2012-08-03 13:46:07 +02:00
parent 639457b9ec
commit c87899d9b0
2 changed files with 27 additions and 1 deletions

View File

@@ -829,6 +829,7 @@ def get_names_for_scope(scope, position=None, star_search=True,
the whole thing would probably start a little recursive madness. the whole thing would probably start a little recursive madness.
""" """
start_scope = scope start_scope = scope
in_scope = scope
while scope: while scope:
# `parsing.Class` is used, because the parent is never `Class`. # `parsing.Class` is used, because the parent is never `Class`.
# Ignore the Flows, because the classes and functions care for that. # Ignore the Flows, because the classes and functions care for that.
@@ -840,10 +841,14 @@ def get_names_for_scope(scope, position=None, star_search=True,
try: try:
yield scope, get_defined_names_for_position(scope, position, yield scope, get_defined_names_for_position(scope, position,
start_scope) in_scope)
except StopIteration: except StopIteration:
raise MultiLevelStopIteration('StopIteration raised somewhere') raise MultiLevelStopIteration('StopIteration raised somewhere')
scope = scope.parent scope = scope.parent
# This is used, because subscopes (Flow scopes) would distort the
# results.
if isinstance(scope, (Function, parsing.Function, Execution)):
in_scope = scope
# Add star imports. # Add star imports.
if star_search: if star_search:

View File

@@ -1,3 +1,24 @@
def find_class():
""" This scope is special, because its in front of TestClass """
#? ['ret']
TestClass.ret
if 1:
#? ['ret']
TestClass.ret
class FindClass():
#? []
TestClass.ret
if a:
#? []
TestClass.ret
def find_class(self):
#? ['ret']
TestClass.ret
if 1:
#? ['ret']
TestClass.ret
# set variables, which should not be included, because they don't belong to the # set variables, which should not be included, because they don't belong to the
# class # class