mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Avoid recursion in a specific example, see also #1458
This commit is contained in:
@@ -1,7 +1,42 @@
|
||||
import sys
|
||||
if sys.version_info > (3, 5):
|
||||
from typing import Generic, TypeVar, List
|
||||
|
||||
import pytest
|
||||
|
||||
import jedi
|
||||
|
||||
|
||||
def interpreter(code, namespace, *args, **kwargs):
|
||||
return jedi.Interpreter(code, [namespace], *args, **kwargs)
|
||||
|
||||
|
||||
def test_on_code():
|
||||
from functools import wraps
|
||||
i = jedi.Interpreter("wraps.__code__", [{'wraps':wraps}])
|
||||
i = interpreter("wraps.__code__", {'wraps': wraps})
|
||||
assert i.goto_definitions()
|
||||
|
||||
|
||||
@pytest.mark.skipif('sys.version_info < (3,5)')
|
||||
def test_generics():
|
||||
# Used to raise a recursion error
|
||||
T = TypeVar('T')
|
||||
|
||||
class Stack(Generic[T]):
|
||||
def __init__(self):
|
||||
self.items = [] # type: List[T]
|
||||
|
||||
def push(self, item):
|
||||
self.items.append(item)
|
||||
|
||||
def pop(self):
|
||||
# type: () -> T
|
||||
return self.items.pop()
|
||||
|
||||
class StackWrapper():
|
||||
def __init__(self):
|
||||
self.stack = Stack()
|
||||
self.stack.push(1)
|
||||
|
||||
s = StackWrapper()
|
||||
print(interpreter('s.stack.pop().', locals()).completions())
|
||||
|
||||
Reference in New Issue
Block a user