Fix an error recovery goto issue, fixes davidhalter/jedi-vim#962

This commit is contained in:
Dave Halter
2019-12-23 10:08:43 +01:00
parent d9383f1927
commit eca8278eef
7 changed files with 26 additions and 4 deletions

View File

@@ -12,7 +12,6 @@ arguments.
import os import os
import sys import sys
import warnings import warnings
import keyword
import parso import parso
from parso.python import tree from parso.python import tree

View File

@@ -94,7 +94,7 @@ def infer_call_of_leaf(context, leaf, cut_own_trailer=False):
base = power.children[start] base = power.children[start]
if base.type != 'trailer': if base.type != 'trailer':
break break
trailers = power.children[start + 1: index + 1] trailers = power.children[start + 1:cut]
else: else:
base = power.children[0] base = power.children[0]
trailers = power.children[1:cut] trailers = power.children[1:cut]

View File

@@ -618,4 +618,3 @@ def follow_error_node_imports_if_possible(context, name):
return Importer( return Importer(
context.inference_state, names, context.get_root_context(), level).follow() context.inference_state, names, context.get_root_context(), level).follow()
return None return None

View File

@@ -607,3 +607,17 @@ DefaultArg().y()
DefaultArg.x() DefaultArg.x()
#? str() #? str()
DefaultArg.y() DefaultArg.y()
# -----------------
# Error Recovery
# -----------------
from import_tree.pkg.base import MyBase
class C1(MyBase):
def f3(self):
#! 13 ['def f1']
self.f1() . # hey'''
#? 13 MyBase.f1
self.f1() . # hey'''

View File

@@ -37,6 +37,7 @@ foo = 10;print(foo)
# classes # classes
# ----------------- # -----------------
class C(object): class C(object):
x = 3
def b(self): def b(self):
#! ['b = math'] #! ['b = math']
b b
@@ -44,8 +45,14 @@ class C(object):
self.b self.b
#! 14 ['def b'] #! 14 ['def b']
self.b() self.b()
#! 14 ['def b']
self.b.
#! 11 ['param self'] #! 11 ['param self']
self.b self.b
#! ['x = 3']
self.x
#! 14 ['x = 3']
self.x.
return 1 return 1
#! ['def b'] #! ['def b']

View File

@@ -0,0 +1,3 @@
class MyBase:
def f1(self):
pass

View File

@@ -13,7 +13,7 @@ from parso import cache
from jedi._compatibility import unicode from jedi._compatibility import unicode
from jedi import preload_module from jedi import preload_module
from jedi.inference.gradual import typeshed from jedi.inference.gradual import typeshed
from test.helpers import test_dir from test.helpers import test_dir, get_example_dir
@pytest.mark.skipif(sys.version_info[0] == 2, reason="Ignore Python 2, EoL") @pytest.mark.skipif(sys.version_info[0] == 2, reason="Ignore Python 2, EoL")