Don't mark global symbols as inputs of code fragment (PY-6616)

This commit is contained in:
Andrey Vlasovskikh
2012-05-22 15:38:36 +04:00
parent caef87ff0d
commit 16448bef80
9 changed files with 51 additions and 48 deletions

View File

@@ -264,7 +264,7 @@ public class PyCodeFragmentUtil {
final PsiReference reference = element.getReference();
if (reference != null) {
final PsiElement resolved = reference.resolve();
if (resolved != null && ScopeUtil.getScopeOwner(resolved) == owner) {
if (resolved != null && ScopeUtil.getScopeOwner(resolved) == owner && !(owner instanceof PsiFile)) {
result.add(element);
}
}

View File

@@ -1,8 +1,9 @@
aaa = 1
<begin>
aaa += 1
<end>
print(aaa)
def f():
aaa = 1
<begin>
aaa += 1
<end>
print(aaa)
<result>
In:
aaa

View File

@@ -5,5 +5,4 @@ class Z:
z.full()<end>
<result>
In:
Z
Out:

View File

@@ -1,11 +1,9 @@
a = 12
if some_cond:
b = 1
c =
<begin>
foo(boo(a) + 123 * b)
<end>
def f():
a = 12
if some_cond:
b = 1
c = <begin>foo(boo(a) + 123 * b)<end>
print('hello')
<result>
In:

View File

@@ -1,7 +1,7 @@
r = 2
h = 5
print(123 * <begin>r ** 2 * h<end>)
def f():
r = 2
h = 5
print(123 * <begin>r ** 2 * h<end>)
<result>
In:

View File

@@ -1,8 +1,9 @@
aaa = 123
<begin>
print(aaa)
<end>
print("Hello")
def f():
aaa = 123
<begin>
print(aaa)
<end>
print("Hello")
<result>
In:
aaa

View File

@@ -1,10 +1,11 @@
aaa = 12
<begin>
bbb = aaa
aaa = bbb + 123
<end>
bbb
aaa
def f():
aaa = 12
<begin>
bbb = aaa
aaa = bbb + 123
<end>
bbb
aaa
<result>
In:
aaa

View File

@@ -2,11 +2,13 @@ def baz(f_new):
length = len(f_new.readlines()) #<---extract something from here
print("hi from else")
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
baz(f)
#anything else you need
def foo():
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
baz(f)
#anything else you need

View File

@@ -1,9 +1,10 @@
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
<selection>length = len(f.readlines()) #<---extract something from here
print("hi from else")</selection>
#anything else you need
def foo():
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
<selection>length = len(f.readlines()) #<---extract something from here
print("hi from else")</selection>
#anything else you need